Тест по основам программирования

Содержание:

Проходим тест

Можно выбрать уровень сложности: начальный, средний или сложный (нужно отметить, что полный набор уровней сложности предоставляется не для всех тестов). Для некоторых тестов также доступен так называемый спортивный тест — тест на повышенной скорости, когда за три минуты тебе нужно будет ответить на десять вопросов.

Рис. 2. Тесты и уровни сложности

Интервал попыток — три дня. Другими словами, если ты провалил тест, то повторить попытку ты сможешь только через три дня. На прохождение теста у тебя есть 15 минут, независимо от уровня сложности (если, конечно, это не спортивный тест).

Для примера возьмем тест по PHP — я хорошо знаком с этим языком программирования, и мне очень интересно оценить тест именно по PHP. Вопросы в тесте самые разнообразные. Здесь есть вопросы и по объектно ориентированному программированию (рис. 3), и по базам данных (рис. 4), и по работе HTTP (рис. 5). В общем, затрагиваются все основные темы, необходимые для успешного программирования на PHP.

Рис. 3. Вопрос по объектно ориентированному программированиюРис. 4. Вопрос на знание SQLРис. 5. Как установить cookies?

И пусть тебя не смущает, что уровень начальный (не нужно браться сразу за самое сложное), — даже на начальном уровне есть довольно серьезные вопросы. Проходя тест, будь внимателен: достаточно недосмотреть одну букву, и ответ засчитается как неправильный (посмотри на рис. 4 и сравни варианты ответа 2 и 4).

Если тест ты пройдешь успешно, получишь сертификат, который будет постоянно доступен в твоем профиле.

Рис. 6. Результат теста

Особенности профессии

На основе анализа математических моделей и алгоритмов решения научно-технических и производственных задач программист разрабатывает программы выполнения вычислительных работ. Составляет вычислительную схему метода решения задач, переводит алгоритмы решения на формализованный машинный язык. Определяет вводимую в машину информацию, ее объем, методы контроля производимых машиной операций, форму и содержание исходных документов и результатов вычислений. Разрабатывает макеты и схемы ввода, обработки, хранения и выдачи информации, проводит камеральную проверку программ.

Определяет совокупность данных, обеспечивающих решение максимального числа включенных в данную программу условий. Проводит отладку разработанных программ, определяет возможность использования готовых программ, разработанных другими организациями. Разрабатывает и внедряет методы автоматизации программирования, типовые и стандартные программы, программирующие программы, транслятора, входные алгоритмические языки.

Выполняет работу по унификации и типизации вычислительных процессов, участвует в создании каталогов и карточек стандартных программ, в разработке форм документов, подлежащих машинной обработке, в проектных работах по расширению области применения вычислительной техники.

Кому это нужно?

Периодическая проверка знаний рекомендуется всем специалистам, независимо от направления их деятельности. Без разницы, кто ты — программист или водитель. И тому и другому время от времени нужно проходить тестирование: одному по языкам программирования, а второму по правилам дорожного движения. Память — штука интересная: в ней остается то, чем пользуешься постоянно, а все остальное просто стирается, поэтому ее нужно освежать.

Представь такую ситуацию: в начале своей карьеры ты прошел несколько курсов по разным языкам программирования, например PHP, Python и пусть JavaScript. Ситуация вполне реальная, особенно когда ты еще не знаешь или не понимаешь, что тебе пригодится, а что нет. Так вот, ты заплатил кучу денег за эти курсы, и неужели тебе не жалко собственных средств, если, скажем, тот же Python ты забудешь за год или даже раньше? А ведь он если не сегодня, так завтра может тебе пригодиться. Скажем, появится вакансия Python-программиста с очень высокой зарплатой. А ты забыл этот язык, который так старательно изучал… Обидно? Думаю, что да.

Законы Мерфи для программистов

1. Ничто не работает так, как планировалось запрограммировать. 

2. Ничто не программируется так, как должно работать.

3. Хороший программист характеризуется умением доказать почему задачу невозможно выполнить, когда ему просто лень её выполнять.

4. На решение проблемы уходит в три раза меньше времени, чем на обсуждение всех «за» и «против» её решения.

5. Обещанный срок сдачи — это аккуратно рассчитанная дата окончания проекта плюс шесть месяцев.

6. Программисту всегда известна последовательность действий, которыми пользователь может повесить его программу, но он никогда не чинит эту проблему, надеясь на то, что никому никогда не придёт в голову эту последовательность исполнять.

7. Настоящие программисты любят Windows — все ошибки, сделанные по собственной тупости, можно свалить на Microsoft.

8. Следствие — 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.

9. В приступе злости все почему-то молотят по невинному монитору, вместо системного блока.

10. В случае голодовки настоящий программист ещё месяц сможет питаться едой, выковырянной из-под кнопок клавиатуры.

11. Настоящий программист уже как минимум поменял три залитых пивом клавиатуры.

12. Все, кто испытывает проблемы с настройкой кодировки, автоматически считаются неандертальцами.

13. Дилетантские разговоры о компьютерах вызывают резкую тошноту вплоть до приступов рвоты. Вопрос о том как поменять «обои» в Windows вызывает желание перерезать горло вопрошающему.

14. У большинства людей, нуждающихся в твоей помощи, причина ошибки в работе программы чисто генетическая.

15. HTML, HTTP, FTP, SMTP, TCP/IP, RTFM и т.д. — это слова, а не аббревиатуры.

16. Словосочетание «мышка-норушка» не несёт никакого смысла.

17. Самые мистические проблемы, широко раздуваемые и афишируемые, в конце концов оказываются твоими глупейшими ошибками.

18. Следствие — если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое.

19. Самое плохое ощущение для программиста — когда вокруг тебя стоят десять человек и все пытаются найти причину проблемы в твоей программе, а ты уже понял, в чём проблема, но боишься сказать, потому что это что-то вопиюще глупое…

20. Решение всех жизненных проблем находится в интернете. Надо только уметь хорошо искать.

21. Конфликт логических указаний в жизни вызывает фатальную ошибку в работе мозга программиста — возможно повышение температуры и сильное головокружение вплоть до рвоты или потери сознания.

22. Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирают программистов, которые презирают тех, кто их презирает.

23. Если ты понял предыдущее — то ты программист.

На этом свете 10 типов людей — те, кто понимает двоичную систему счисления, и те, кто не понимает ее.

Чем занимается специалист

Тестировщик программного обеспечения и игр проводит испытания софта, исправляет ошибки кода, улучшает интерфейс для удобства пользователя. Еще представителей этой профессии называют QA-инженерами. Это означает, что специалист отвечает за качество цифрового продукта.

В серьезных компаниях, занимающихся разработкой и программированием, тестировщики принимают участие еще на этапе планирования программ или игр, вносят предложения в процессе разработки. Он исследует рынок и целевую аудиторию, анализирует ее потребности, корректирует работу программистов.

Но в большинстве случаев тестировщик получает в работу уже готовую программу. Его задача – выявить все баги, оценить удобство интерфейса, найти возможности для расширения функционала в соответствии с запросами потребителей.

Что должен уметь тестировщик

Способов проверки работоспособности и удобства программ, игр и приложений существует два – ручной и автоматический. В ручном режиме тестировщик имитирует действия пользователя по разработанным сценариям. Такое тестирование называют еще поведенческим или методом «черного ящика».

При автоматическом способе работа приложений проверяется специальными программными средствами. Здесь также может применяться метод «черного ящика». Он представляет собой тестирование без использования знаний о внутреннем устройстве анализируемого объекта.

И для работы в ручном режиме, и для автотестов специалист должен уметь:

  • использовать в своей деятельности специализированные программы;
  • составлять сценарии и планировать этапы проверки;
  • понимать потребности пользователя;
  • готовить данные для тестов, анализировать полученную информацию, составлять ТЗ для разработчиков.

Важно
Большим плюсом для тестировщика будет знани хотя бы одного язык программирования на профессиональном уровне и понимание других, владение английским техническим, умение вносить исправления в код программы.

Направления работы

Тестировщик может быть универсалом и выполнять любые проверки качества, а может специализироваться в одном из направлений:

  • альфа – первичное тестирование продукта, находящегося в разработке;
  • бета – анализ готовой программы;
  • тест-аналитик – проводит первичный анализ продукта, составляет сценарии тестирования;
  • тест-дизайнер готовит чек-листы или кейс-тесты для проведения тестирования;
  • автоматизатор, который пишет авто-тесты;
  • юзабилити-тестировщик, в задачу которого входит анализ продукта на удобство использования и соответствие ожиданиям потребителей;
  • локализатор тестирует ПО для тех продуктов, которые имеют релизы на других языках;
  • специалист по безопасности отвечает за устойчивость софта к хакерским атакам.

Кроме того, тестировщики могут иметь узкую специализацию – анализ игр, мобильных приложений, облачных хранилищ, банковских продуктов, ПО для промышленного оборудования.

Разновидности

В программировании на первое место ставятся не только практические навыки, но и идеи специалиста. Программистов можно условно разделить на три категории в зависимости от специализации:

  1. Прикладные программисты занимаются в основном разработкой программного обеспечения прикладного характера — игры‚ бухгалтерские программы‚ редакторы‚ мессенджеры и т.п. К области их работы также можно отнести создание программного обеспечения для систем видео- и аудио-наблюдения‚ СКД‚ систем пожаротушения или пожарной сигнализации и т.п. Также в их обязанности входит адаптация уже существующих программ под нужды отдельно взятой организации или пользователя.
  2. Системные программисты разрабатывают операционные системы, работают с сетями, пишут интерфейсы к различным распределенным базам данных. Специалисты этой категории относятся к числу самых редких и высокооплачиваемых. Их задача состоит в том‚ чтобы разработать системы программного обеспечения (сервисы)‚ которые‚ в свою очередь‚ управляют вычислительной системой (куда входит процессор‚ коммуникационные и периферийные устройства). Также в список задач входит обеспечение функционирования и работы созданных систем (драйвера устройств‚ загрузчики и т.д.).
  3. Web-программисты также работают с сетями, но, в большинстве случаев, с глобальными — Интернет. Они пишут программную составляющую сайтов, создают динамические веб-страницы, web-интерфейсы для работы с базами данных.

Плюсы и минусы работы тестировщиком

▍Плюсы

  1. До определённого момента работа тестировщика проще остальных технических специальностей и доступна многим, кому интересна ИТ-сфера. Переходить ли рубеж к тому интервалу, где работа становится максимально сложной, решение каждого. Если дальше не пойдёте, вас из тестирования не выгонят, вы всё равно будете востребованы.
  2. Потребность в тестировщиках не исчезнет до тех пор, пока есть информационные технологии, связь, интернет, роботы, автопилоты и т.д.
  3. Тестирование — не столь изученная область, как программирование. Если у вас есть талант и трудолюбие, вы сможете сказать своё слово миру (написать книгу, создать методологию, преподавать и т.д.).
  4. Карьера тестировщика довольно свободная: можно сидеть в офисе с гибким графиком, можно работать удалённо, а можно стать фрилансером, набрать проектов и тестировать их по сдельной оплате.
  5. Тестировщику легче вернуться на работу после долгого перерыва, например, из опыта создания своего стартапа, фриланса, декрета, иных обстоятельств.
  6. Работу в тестировании можно сочетать с учебой без вреда для обоих видов деятельности.
  7. Вы научитесь «видеть продукт» со всех сторон, узнаете все функциональные возможности, посмотрите на софт глазами инженера и глазами потребителя. Это прямой путь в менеджеры продукта. Общая картина продукта поможет вам в любом случае — например, если вы решитесь уйти в разработку.

▍Минусы

  1. Команда недолюбливает тестировщиков 🙂 Нет, ну вы вот сами прикиньте: вы делаете продукт, пишете код, документацию, а потом на него нападает кучка коллег и заводит баг за багом на каждую мелочь. Ну как это вынести в адекватном состоянии?! Хуже только быть единственным тестировщиком в команде — тогда всё, ты конченая сволочь. Шутки шутками, но нередко команда считает, что именно тестировщики задерживают выпуск релизов и клиентских сборок. В общем, не любят люди, когда находят ошибки в их работе. 
  2. На первом этапе вы работаете с повторяющимися задачами, иногда работать становится невыносимо скучно.
  3. Тестировщики ищут ошибки разработчиков, искать ошибки тестировщиков некому. Поэтому вы будете крайними в некоторых неприятных ситуациях.
  4. Работа тестировщиков часто бывает незаметна руководству — придётся привыкнуть быть серым кардиналом, невидимым героем.
  5. Сверхурочная работа — бич тестировщиков. Рано или поздно вам будет нужно срочно оттестировать релиз или сборку, которую нужно выкатить завтра или «вот прям щас» или же остаться и проверить внесённые программистами исправления. И вы останетесь, а вот оплачивается такой героизм далеко не всегда (я вообще не встречал).
  6. На тестировщиках лежит огромный груз ответственности за полноту и охват тест-планов — если что-то упустить, отвечать уже придётся за пропущенные баги.

Необходимость знания иностранных языков

  • очень много статей и методик переведено на русский язык;
  • часто объём знаний языка обусловлен именно особенностями продукта и компании — соответственно, если компания работает на англоязычный рынок, уровень нужен (например, чтобы тестировать документацию или общаться с интернациональной командой и клиентами), а если на российский рынок, то требования к языку практически нулевые.

У меня был пример, когда понадобился тестировщик со знанием японского и отдельно — со знанием немецкого в том числе для работы с клиентами (удалённо). Так вот, нашли, обучили и дали зарплату выше разработчиков в компании. Потому что специалисты уникальные. Они и сейчас не пропали 🙂

Обучение на тестировщика ПО

Начинающий тестировщик может закончить ссуз или получить необходимые навыки на курсах – все зависит от требований потенциального работодателя и личностных навыков. Однако высшее техническое образование стоит рассматривать как приоритетное.Абитуриент может выбрать следующие вузовские направление подготовки, для которых профильным ЕГЭ является математика:

  • «Прикладная математика и информатика» (код: 01.04.02);
  • «Информатика и вычислительная техника» (код: 09.03.01);
  • «Информационно-аналитические системы безопасности» (код: 10.05.04);
  • «Информационная безопасность» (код: 10.03.01) и иные технические направления, связанные с информатикой, математикой, защитой цифровой информации и вычислительной техникой.

Если вы решили начать свой карьерный путь с ссуза, то рассмотрите направления «Информационные системы и программирование» (код: 09.02.07), «Компьютерные сети» (код: 09.02.02) или «Прикладная информатика (по отраслям)». Начать обучение в вузе можно после 11 класса, в ссуз абитуриент может поступить, окончив 9 классов.

Курсы

УЦ «Специалист» при МГТУ им. Н. Э. Баумана

На сайте учебного центра доступен большой выбор качественных программ для людей, которые решили стать тестировщиками ПО. Любой курс состоит из теоретических и практических блоков, форма обучения может быть очной или дистанционной. Длительность обучения составляет 16-64 ак. ч., минимальная стоимость – 11850 руб. и выше, что напрямую зависит от выбранного профиля.

Важные личные качества

Аналитические навыки, чтобы понимать взаимосвязи, анализировать огромные массивы данных, результаты тестов и т.д.
Управление временем и скиллы планирования — только с ними можно обеспечить высокую производительность на фоне серьёзной рабочей нагрузки.

Особая интуиция, которая приходит с опытом — тестировщик должен заранее предвидеть, где может поджидать потенциальная ошибка.
Высокий порог терпения и стрессоустойчивости — важно внимательно протестировать продукт, спокойно подискутировать с разработчиками, неоднократно воспроизвести баг, отработать одни и те же тест-кейсы и т.д.

Умение надолго концентрироваться и сохранять внимание. К слову, иногда именно тестирование позволяет наработать это навык и сохранить его для дальнейшей карьеры.

Важные качества

Программирование является бурно развивающейся областью, поэтому программист должен уметь быстро адаптироваться к текущему состоянию технологии и постоянно изучать новые технологии. Поэтому способность к самообучению — один из главных навыков, которым должен обладать программист. В противном случае через несколько лет его ценность как специалиста окажется заметно ниже.

Владение английским языком на уровне чтения технической документации является еще одним обязательным требованием, предъявляемым к представителям этой профессии

Для таких специалистов очень важно умение работать в команде, над большими проектами, со средствами коллективной разработки, с крупными финансовыми системами (бюджетными, банковскими, управленческого учета). Для претендентов на позицию ведущего программиста желательны навыки управления проектами и коллективом, самостоятельность, инициативность, а также способность нести личную ответственность за поставленную задачу

Особенности профессии

Тестирование программного обеспечения – увлекательный процесс, имеющий легкий творческий оттенок. Большую часть своего рабочего времени тестировщик проводит за компьютером или планшетом, смартфоном и иными видами гаджетов. В обязанности тестировщика ПО входят такие работы:

  • разработка оптимальных методик тестирования, создание тест-кейсов, моделирование распространенных поведенческих ситуаций;
  • создание графиков и планов, выполнение разных видов тестирования: для безопасности, нагрузочные, функциональные, автоматизированные, конфигурационные, игровые, юзабилити и иные. Универсальный тестировщик может выполнять все эти виды тестирования, но чаще всего он специализируется на 1-2;
  • создание баз данных и отчетов по результатам проведенного тестирования;
  • классификация ошибок, глубокий анализ результатов проведенной работы;
  • оказание помощи команде разработчиков в вопросах устранения ошибок;
  • консультации для разработчиков и заказчиков, анализ жалоб, поступающих от реальных пользователей.

Все вышеперечисленные обязанности стоит разделить на 3 основных этапа: разработка (косвенное участие), тестирование и анализ, подготовка технической отчетности и отладка. Этот вид деятельности требует вовлеченности, профессия подходит для юношей и девушек, которые склонны к кропотливой и малоподвижной работе.

Краудтестинговые платформы – “ясли для тестировщика”

Итак, как я уже писал выше, получить начальный опыт работы тестировщиком без опыта можно на так называемых краудтестинговых платформах.

Что это такое краудтестинговые платформы? Это такие своеобразные биржи фриланса. С одно стороны на них обитают заказчики, которым нужно что-то протестировать. С другой – специалисты по тестированию ПО.

Работа практически на всех краудтестиновых платформах строится по одному принципу. Есть какое-либо вводное обучение. Далее идет вводные тест. Если все хорошо, Вас допускают к реальным проектам. И Вы можете начать прокачивать свой рейтинг, ведь от этого будет зависеть и Ваша “зарплата”.

А “доход” обычно начисляется в английских тугриках. И в принципе он достаточно неплохой.

Но… Важно знать. На большинстве краудтестинговых платформ оплата идет ТОЛЬКО за найденные ошибки! И причем, Вы должны найти эти ошибки раньше других тестировщиков

Если опоздали или не нашли, чтож… Нет ножек-нет мультиков 🙂

Да. Помните. Чем “крупнее” ошибки Вы находите, тем выше Ваше вознаграждение!

Краудтестинговые платформы в основном “буржуинские”. Вот некоторые из них. Часть только на английском (или немецком языках). Часть переведена (не полностью) на русский. Но велика вероятность получения задания на английском языке.

Если Вы работали на одной их них, оцените ниже, какая понравилась больше.

https://test.io/ – одна из старейших платформ краудтестинга

Мне нравится1Не нравится

https://www.testbirds.com/ – есть вариант для русскоязычных пользователей.

Мне нравится1Не нравится

https://www.passbrains.com/ – еще один сайт для тестирования ПО

Мне нравитсяНе нравится

https://www.globalapptesting.com/ – еще краудтестинговый сайт

Мне нравитсяНе нравится

https://ubertesters.com/ – еще одна (немецкая) платформа для тестирования

Мне нравитсяНе нравится

https://testlio.com/ – еще ловите сайтик для тех, кто ищет работу тестировщика ПО без опыта

Мне нравитсяНе нравится

https://www.crowdtesting.ru/ – и еще. Это уже на русском языке, что является редкостью в мире тестировочных платформ.

Мне нравитсяНе нравится

Про условия работы на этих сервисах лучше сами посмотрите у них. Заодно и с платформами ознакомитесь.

Кто такие тестировщики

Начем с того, что QA-инженер — одна из самых недооценённых профессий в нашей индустрии. Зарплаты тестировщиков обычно намного меньше, чем зарплаты программистов. Соответственно, эта сфера меньше привлекает талантливых людей. А если уж они и попадают в неё, то стремятся как можно быстрее продвинуться в разработку или управление проектами, чтобы зарабатывать больше.

Всё это приводит к тому, что найти хорошего тестировщика гораздо сложнее, чем хорошего программиста. При этом количество технических знаний, необходимых QA-инженеру, никак не меньше, чем разработчику. Кроме того, тестировщик должен обладать набором уникальных скилов, которых зачастую нет у кодеров. Поэтому хороший QA-специалист сегодня на вес золота.

Чтобы понять эту мысль, давайте разберём, как в теории должен происходить процесс разработки.

  • Идеальный product-manager создает максимально детализированный спек продукта и передаёт его идеальному дизайнеру.
  • Идеальный дизайнер, в свою очередь, рисует продуманные до мельчайших деталей UI- и UX-мокапы.
  • Техлид компании распределяет работу между разработчиками.
  • Идеальные разработчики в кратчайшие сроки (и, разумеется, без багов) имплементируют спек, тщательно проверяя и документируя свой код.
  • Идеальные QA-инженеры пишут тест-план на основе детального спека и сверяются с UI-диаграммами, полученными от дизайнера.
  • Проверка продукта становится тривиальной задачей и он выходит в продакшн.

Если это описание вызвало у вас слёзы умиления, то я с вами. Потому что хороших продюсеров вообще очень мало, а тех, кто способен написать детальный спек, — единицы. Программисты редко видят картину настолько, чтобы уже на стадии имплементации замечать в спеках ошибки. Особенно если они не находятся внутри одного конкретного модуля, над которым сейчас работают.

Плюсы и минусы профессии

Плюсы

  1. Тестировщик ПО – престижная профессия, которая откроет путь к другим IT-специальностям, где наблюдается еще более высокий уровень оплаты труда.
  2. В тестировщиках ПО заинтересованы многие компании, занимающиеся созданием программных продуктов.
  3. Тестировщик может работать в офисе или на дому, что позволяет совмещать деятельность с путешествиями, хобби или получением образования.
  4. Заработные платы тестировщиков высокие, сфера открыта для амбициозных людей любого возраста.
  5. Доступ к современному программному обеспечению, играм и иным интересным продуктам.
  6. Возможность вести собственный блог или влог, что позволяет популяризировать свои услуги и получать дополнительный доход.

Минусы

  1. Работа тестировщиков очень хорошо оплачивается, что влечет за собой высокую конкуренцию на рынке труда.
  2. Для выполнения заказов нужен опыт, при его отсутствии найти работу непросто.
  3. Профессиональные заболевания, характерные для всех людей, которые работают за компьютером.

Лучшие книги и средства обучения

▍Книги

  • Арбон Джейсон, Каролло Джефф, Уиттакер Джеймс «Как тестируют в Google» — познавательная книга, которую лучше читать уже с каким-то опытом, как минимум junior. А, впрочем, о чём я! Читайте и наслаждайтесь на любом уровне, очень полезно и неплохо написано.
  • Борис Бейзер «Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем» — классика литературы для тестировщиков. Это скорее академический учебник о тестировании, весьма толковый.
  • Гленфорд Майерс, Том Баджетт, Кори Сандлер «Искусство тестирования программ» — библия тестирования (на мой субъективный взгляд).
  • Роман Савин «Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах» — реально добрая, немножко смешная и в то же время умная книга для начинающих и постарше. Мне бы она зашла как настольная книга тестировщика.

▍Онлайн-обучение

  • Бесплатный базовый курс Яндекс.Практикума (брать ли платный расширенный — решать вам по силам и потребностям) — хороший, толковый курс от практиков.
  • www.learnqa.ru — онлайн-школа тестирования (платная, нескольк методологий тестирования, разные уровни)
  • YouTube — сотни обучающих видео, есть толковые
  • QA Club Сообщество тестировщиков Тестирование ПО — общалка тестировщиков ВКонтакте (сообщество)

▍Полезные статьи на Хабре о самой профессии

  • Тестирование. Фундаментальная теория / Хабр
  • Тестировщик — больше, чем профессия / Хабр
  • Краудтестинг, или Где взять опыт для первой работы в тестировании
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *