Что такое тестирование на бытовом уровне — очевидно: это проверка того, как работает новое программное обеспечение. Однако не все так просто, как кажется. Тестирование каждой программы или системы включает в себя множество разных процессов: от обычного выявления ошибок до проверки поведения программы в специальных «экстремальных» условиях.
За этот этап работы отвечают Quality Assurance Engineer (специалисты/инженеры по качеству, сокращенно QA), или попросту тестировщики.
Процесс тестирования можно классифицировать по множеству разных критериев, но чаще всего его разделяют на ручное и автоматизированное. Соответственно, в ручном тестировании принимает участие живой человек, а при автоматизированном программы тестируют друг друга — и, вероятно, по результатам когда-нибудь договорятся до восстания машин. Но не беспокойтесь: автотесты тоже запускает человек, всё под контролем.
Manual Testing (ручное тестирование) происходит следующим образом: QA-специалист «изображает» поведение пользователя и регистрирует, где и что именно пошло не так.
Как QA узнает, что именно ему делать? С помощью системного аналитика или продакт-менеджера. Как правило, системный аналитик предполагает, как поведет себя пользователь, попав, например, на новый веб-сайт. На основе этого он составляет Use-case — пользовательский сценарий. Двигаясь по этому сценарию, тестировщик «прокликивает» продукт и описывает поведение программы в тест-кейсах и чек-листах.
У ручного тестирования есть неоспоримые плюсы:
Несмотря на все перечисленные плюсы, у ручного тестирования есть один большой минус, и имя ему «человеческий фактор». Тестировщик может пропустить ошибку из-за невнимательности, отсутствия опыта или банальной усталости. И тогда нам на помощь приходят машины!
Автоматизированное тестирование. В данном случае новый софт тестируется с помощью специальных программ — автотестов. Естественно, такие тестирующие программы должны быть кем-то написаны. Но однажды созданные автотесты можно использовать неограниченное количество раз, что значительно удешевляет и ускоряет тестинг.
Неоспоримый плюс автоматизированного тестирования заключается в отсутствии человеческого фактора типа усталости или невнимательности. А кроме того, автотесты помогают понять, как будет работать софт в ситуациях, которые сложно воспроизвести вручную, например при высокой нагрузке на сайт.
Казалось бы, есть только что написанная программа, есть программа-тестировщик: напустите их друг на друга — и получите результат. Человеческое участие больше не нужно! Однако без специалистов в данном случае также не обойтись. Причем эксперт по автоматизированному тестированию должен знать и уметь больше, чем ручной тестировщик.
Для работы авто-QA необходимо знать один, а лучше несколько языков программирования: чаще всего это Java и Python. Также они часто используют в своей работе такие инструменты, как PyTest или Selenium для написания тестировочных кодов. И по мере профессионального развития, как правило, становятся разработчиками. А начинают как раз с ручного.
Типы тестирований. Существует огромное разнообразие тестов, которые мы не будем рассматривать детально (мы же не собираемся учиться на тестировщиков — по крайней мере, по этой книге). Упомяну только основные виды тестирования, чтобы вы понимали, насколько масштабна эта сфера деятельности.
Если вы планируете заниматься наймом тестировщиков, вам также надо знать, какие есть способы тестирования, и свободно оперировать следующими терминами:
Общаясь с тестировщиком, мы всегда спрашиваем, занимался он ручным или автоматизированным тестированием, какие виды тестирования осуществлял, с помощью чего делал автотесты, писал ли скрипты самостоятельно. Если да, то на каком языке программирования.