21.01.2021

Критерии оценки качества программного продукта при тестировании

К качеству программного обеспечения (ПО) предъявляются высокие требования. Критерии качества, касающиеся надежности и эффективности, можно выполнить лишь при «серьезном» тестировании продукта (качественной верификации).


Качество ПО – продукт эффективного тестирования


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

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


Тестируемые характеристики ПО


Стандартом и опытом разработчиков определены следующие тестируемые характеристики ПО:

  1. функциональность;
  2. производительность (обычно пиковая);
  3. системность (совместимость в системе);
  4. надежность (отказостойкость, самовосстанавливаемость);
  5. защищенность (управление вероятными уязвимостями, отказами);
  6. дружественность (простота, легкость, комфортность при работе);
  7. модифицируемость (тестируемость, документированность);
  8. адаптивность (переносимость, кросс-платформенность).

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


Задачи тестировщика


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

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

Тестирование проводят автоматизированно или вручную, но всегда на основе оптимизированного («минимально-достаточного») набора тест-кейсов.


Обязанности тестировщика


Тестировщик обязан:

  1. владеть тест-инструментарием;
  2. учитывать функциональность приложения;
  3. систематизировать и документировать процесс тестирования;
  4. убедительно (как для заказчика, так и для разработчика) объяснять причину сбоя, превентивные меры и др.

Компетенции тестировщика


Обязанностями продиктованы профессиональные качества «тестера»:

  1. знание (понимание) на уровне прикладного (хотя бы) программирования ряда языков (ряда языков C++, Java, Python и др.);
  2. применение баг-трекинга (систем отслеживания ошибок);
  3. владение инструментарием (программами) тестирования;
  4. опыт описания проведенного тестирования.

Важно знать английский язык (на уровне Intermediate+ и выше). Высоко востребованы умения взаимодействовать с другими участниками процесса создания ПО, видеть всё и сразу в программе, работать в команде, абстрагироваться от мелочей.

Тестирование – задача не менее сложная и важная, чем написание кода, и требующая внимания на всем жизненном цикле ПО.