К качеству программного обеспечения (ПО) предъявляются высокие требования. Критерии качества, касающиеся надежности и эффективности, можно выполнить лишь при «серьезном» тестировании продукта (качественной верификации).
Качество ПО – продукт эффективного тестирования
Даже у самого лучшего программиста, по статистике, в тысяче строк программы может встречаться хоть одна ошибка, поиск и устранение которой потребует много временных, интеллектуальных и вычислительных ресурсов. Здесь есть над чем думать тестировщику (на программистском жаргоне – «тестеру»), специалисту по разработке тестов и тестированию ПО.
Система тестов должна быть минимальной, но достаточной для обнаружения всех ошибок или, как говорят, «всех, без последнего»: в любом сложном ПО возможна такая скрытая ошибка, обнаруживаемая лишь при эксплуатации.
Тестируемые характеристики ПО
Стандартом и опытом разработчиков определены следующие тестируемые характеристики ПО:
- функциональность;
- производительность (обычно пиковая);
- системность (совместимость в системе);
- надежность (отказостойкость, самовосстанавливаемость);
- защищенность (управление вероятными уязвимостями, отказами);
- дружественность (простота, легкость, комфортность при работе);
- модифицируемость (тестируемость, документированность);
- адаптивность (переносимость, кросс-платформенность).
Характеристики везде различные, с разными критериями оценивания. Например, мерой отказоустойчивости может быть вероятность безотказной работы, интенсивность отказов замеряется по наблюдениям, и др. Можно классифицировать критерии качества по отношению к разработчику, заказчику или пользователю: внутренние (относящиеся к логике программного кода), внешние (восстанавливаемость при сбоях) и интерфейсные (дружественность, документированность).
Задачи тестировщика
Специалист, ответственный за тестирование, в процессе тестовых испытаний ПО выявляет ошибки проектировщиков и программистов. Он выполняет ревизию логических связей всего комплекса. Но не кода – напрямую к коду у этого специалиста часто (и справедливо) нет доступа.
Но у него есть расширенные, больше чем у рядового пользователя, полномочия доступа. «Тестер» как пользователь проверяет программу, например, пошаговым исполнением, анализом контрольных узлов и др., применяя свой опыт и искусство составления тестов. От него все ждут тщательности, точности, скрупулезности.
Тестирование проводят автоматизированно или вручную, но всегда на основе оптимизированного («минимально-достаточного») набора тест-кейсов.
Обязанности тестировщика
Тестировщик обязан:
- владеть тест-инструментарием;
- учитывать функциональность приложения;
- систематизировать и документировать процесс тестирования;
- убедительно (как для заказчика, так и для разработчика) объяснять причину сбоя, превентивные меры и др.
Компетенции тестировщика
Обязанностями продиктованы профессиональные качества «тестера»:
- знание (понимание) на уровне прикладного (хотя бы) программирования ряда языков (ряда языков C++, Java, Python и др.);
- применение баг-трекинга (систем отслеживания ошибок);
- владение инструментарием (программами) тестирования;
- опыт описания проведенного тестирования.
Важно знать английский язык (на уровне Intermediate+ и выше). Высоко востребованы умения взаимодействовать с другими участниками процесса создания ПО, видеть всё и сразу в программе, работать в команде, абстрагироваться от мелочей.
Тестирование – задача не менее сложная и важная, чем написание кода, и требующая внимания на всем жизненном цикле ПО.