Тестировщик — кто это?
Инженер по контролю качества программного обеспечения (QA) отстаивает интересы конечного пользователя. Он разрабатывает такой процесс тестирования ПО, который гарантирует качество — чтобы продукт не просто удовлетворил, но и превзошел ожидания заказчика.
Выделяют следующие разновидности тестирования:
- Ручное. Предполагает ознакомление с продуктом с помощью тех инструментов, которые будет использовать потребитель: клавиатура, мышка, пальцы на тачскрине.
- Регрессионное. После добавления новых функций тестировщик должен проверить, сохранило ли приложение свои рабочие свойства, с точки зрения конечного потребителя.
- Автоматизированное. Предусматривает написание кода для проверки совпадения ожидаемого и реального поведения приложения.
Автоматизированное тестирование не является для индустрии ПО новой концепцией. Бесплатное предоставление автоматизированных инструментов тестирования с целью создания более качественного ПО тоже не является новой концепцией. Новинкой является то, что благодаря Selenium WebDriver, разработанному в компании ThoughtWorks и получившему поддержку от Google, решения с открытым исходным кодом стали приемлемы даже для компаний, которые привыкли работать только со стандартным сертифицированным программным обеспечением.
Selenium WebDriver в сочетании с CI/CD создал такой всплеск спроса на кодеров, что фраза «ручное тестирование» по большей части пропала из списка требований к соискателям. Что же заняло ее место? Разработка средств автоматизации.
Тестировщик пишет, собственно, эти тесты и создает автоматизированную среду для поддержки выполнения тестов и их анализа. При этом он пытается ответить на следующие вопросы:
- Какие типы тестов мы проводим? Сосредоточимся ли мы на автоматизации комплекса регрессионных тестов браузера посредством Selenium WebDriver? Или автоматизируем также и новый функционал?
- Если мы задействуем Selenium WebDriver для автоматизации тестов браузера, будем ли мы привязывать его к Java, Python, C#, JavaScript или, например Ruby?
- Можем ли мы продвинуться на один уровень дальше по пирамиде тестирования Майка Коэна и протестировать те веб-сервисы, которые обеспечивают браузерному приложению базовый функционал?
- Какие решения для тестирования наилучшим способом сочетаются с языком программирования приложения?
Как сегодня проводятся собеседования на вакансию тестировщика?
Когда я пришел на первое собеседование после двухгодичного перерыва, все шло хорошо… до того момента, когда меня попросили подойти к доске.
«Пользуясь своим любимым языком программирования, напишите метод проверки того, является ли заданное слово палиндромом».
Если бы мне дали это задание на дом, я бы сумел в нем разобраться. Но когда я оказался перед доской, а два разработчика с каменными лицами оценивали меня, мой разум превратился в чистый холст.
Справившись с половиной задания, я начал шутить:
- Если бы только у меня был ноут с IntelliJ!
- Если бы я писал код автоматизированного теста, я бы справился намного лучше.
Ответ прозвучал так: «От всех сотрудников ожидается владение программированием на некоем минимальном уровне — даже для должностей по контролю качества».
После этого мне пришлось готовиться к собеседованию на другую работу…
Собеседование по написанию кода: не только для инженеров по ПО
Когда я проходил собеседования три года назад, я только однажды столкнулся с написанием кода. А в этот раз его включали в себя 5 из 7 подходящих мне вакансий. Почему кандидатов на должность тестировщика подвергают такой же проверке, как и самих разработчиков? Ответ показался мне странным:
Потому что тестировщиками сегодня являются разработчики.
За последние годы функция автоматизации перешла от тестировщиков, которые умеют писать код, к разработчикам, которые умеют тестировать.
Разработчики не считают сложными те вопросы, которые задают тестировщикам на собеседовании. Они не просят кандидатов решить Ханойскую башню или решить математические уравнения уровня второго курса хорошего технического ВУЗа.
Большинство примеров кода, которые они просят написать, связаны с циклами, базовой математикой, строковыми и символьными манипуляциями.
Почему интервью по написанию кода такие сложные?
Темы заданий могут находиться за пределами вашей области знаний
- Обычно я работаю с языком программирования Java. Мне лишь изредка приходится использовать более сложную структуру данных, чем хеш-таблица.
- Код, который я пишу, вращается вокруг Selenium WebDriver. Я открываю браузер, перехожу на страницу, ввожу данные в текстовые поля, выбираю переключатели и оно работает!
- Я постоянно сравниваю строки и проверяю, совпадает ли текст предупреждения на экране с ожидаемым. Однако в повседневной работе я лишь незначительно использую вспомогательные методы для метода строкового объекта.
На собеседование нет IntelliSense
- Если мне нужно использовать вспомогательные методы в строке, символе или целочисленном объекте, мне достаточно поставить точку после слова, и методы будут отображены.
Такие тесты не позволяют воспользоваться внешними источниками информации
- Нельзя воспользоваться специализированный форумом или
StackOverflow.com
.
Во время собеседований может возникать чувство изоляции
- Когда я начинаю писать тест для функционала, с которым я не знаком, я обычно обмениваюсь идеями с коллегами. Но во время собеседования я не могу обмениваться идеями с интервьюерами. Или всё-таки могу? Мне казалось, что не могу — иногда они очень не дружелюбны.
Как можно подготовиться к таким задачам?
Освежите свои знания
Хороший вариант — пройти какие-нибуть бесплатные онлайн-курсы программирования.
RTFM
Воспользуйтесь материалами для изучения Java от Oracle: «Руководство по Java — это практические инструкции для программистов, которые хотят задействовать Java для создания приложений. Руководство включает в себя десятки уроков и сотни примеров.
Изучите API-документацию
Чтобы работать с языком программирования, необходимо усвоить основные термины, перечисленные в API-документации.
Если вашим основным языком программирования является Java, взгляните на https://docs.oracle.com/javase/8/docs/api/java, уделив особое внимание темам Integer, String и Character, особенно:
Строковые функции
Нужно найти первый символ в строке? Используйте charAt(0)
. Выяснить, входит ли символ или слово в строку? Используйте contains
. Нужен суффикс? Попробуйте endsWith
. Проверить, совпадают ли две строки, можно с помощью equals
и equalsIgnoreCase
.
Символьные функции
Ознакомиться с природой символов помогают булевы функции isLetter
, isLetterOrDigit
, isLowerCase
, isUpperCase
, isLowerCase
, isWhitespace
. Например: Character.isLetter('A')
будет верно. При вводе новых символов заключите их в одинарные кавычки, например: char newCharacter = 'a'
.
Целочисленные функции
Хотите преобразовать целое число? Введите целое число в Integer.toBinaryString(int i)
, Integer.toHexString(int i)
или Integer.toOctalString(int i)
, чтобы преобразовать его в желаемый формат.
Тренируйтесь на бумаге
Например, спросите себя, как использовать цикл loop, чтобы выявить:
- все целые числа от 1 до 100;
- все четные числа (i % 2 == 0) в диапазоне от 1 до 100 {1… 100}
- все числа, которые делятся на 3 (i % 3 == 0).
Или вот упражнения со строками:
- напишите метод, который принимает string s и возвращает длину в виде целого числа
s.length
; - напишите метод, который принимает string s и возвращает первый символ
s.charAt(0)
.
Важно:
- Старайтесь все писать разборчивым почерком.
- Не забывайте правильно открывать и закрывать скобки.
- Придумайте проверочные тесты для своего кода. Сработает ли он, если строка будет состоять всего из одного символа? А если из 100? А если 0?
Следите за ошибкой неучтенной единицы в циклах:
- При подсчете символов в строке или первого индекса в массиве количество n считается в диапазоне от 0 до
n-1
. То есть первый символ — это (0), а последний — (length — 1). - Цикл
for (for i = 0; i < 5; i++)
завершится на цифре 5. Если выводить это на экран, то там отобразится 0, 1, 2, 3, 4. Чтобы отобразилось еще и 5, надо ввести i <= 5.
Во второй части статьи поговорим о том почему интервью по написанию кода такие сложные. А на сегодня все. Больше интересной информации можно будет получить на бесплатном вебинаре, который пройдет 19 декабря.
ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/480800/
Добавить комментарий