Оценка программ в процессе тестирования (Evaluation of the program under test, IEEE 982.1-98)
Измерение результатов тестирования (Test-related measures)
Выбор и комбинация различных техник (Selecting and combining techniques)
Техники, базирующиеся на природе приложения (Techniques based on the nature of the application)
Описанные выше техники могут применяться к любым типам программных систем. В то же время, в зависимости от технологической или архитектурной природы приложений, могут также применять специфические техники, важные именно для заданного типа приложения. Среди таких техник:
- Объектно-ориентированное тестирование
- Компонентно-ориентированное тестирование
- Web-ориентированное тестирование
- Тестирование на соответствие протоколам
- Тестирование систем реального времени
3.7.1 Функциональное и структурное (Functional and structural)
Техники тестирования, строящиеся на основе спецификаций или кода часто называют функциональными или структурными, соответственно. Оба подхода не должны противопоставляться, но дополнять друг друга.
3.7.1 Определенное или случайное (Deterministic vs. random)
Обычно тесты можно распределить по данным группам на основе используемой политики выбора или определения входных параметров тестов.
Часто техники тестирования путают с целями тестирования. Степень покрытия тестами - не то же самое, что высокое качество тестируемой системы. Однако, эти вопросы связаны. Чем выше степень покрытия, чем больше вероятность обнаружения скрытых дефектов. Когда мы говорим о результатах тестирования, мы должны подходить к их оценке, как оценке самой тестируемой системы. Именно количественные оценки результатов тестирования (но не самих тестов, например, покрытия ими возможных сценариев работы системы) освещаются ниже. В свою очередь, метрики самих тестов или процесса тестирования, как такового – вопросы, рассматриваемые в областях знаний “Процессы программной инженерии” (Software Engineering Process) и “Управление инженерной деятельностью” (Software Engineering Management).
Измерения являются инструментом анализа качества. Измерение результатов тестирования касается оценки качества получаемого продукта – программной системы. История измерений демонстрирует прогресс достижения приемлемого качества. Такая история является инструментом менеджмента качества.
4.1.1 Измерения программ как часть планирования и разработки тестов (Program measurements to aid in planning and design testing)
Данные измерения могут базироваться на размере программ (например, в терминах количества строк кода или функциональных точек) или их структуре (например, с точки зрения оценки ее сложности в тех или иных архитектурных терминах). Структурные измерения могут также включать частоту обращений одних модулей программы к другим.
4.1.2 Типы дефектов, их классификация и статистика возникновения (Fault types, classification and statistics)
В литературе по тестированию встречается большое количество различных классификаций дефектов. Эффективность тестирования может быть достигнута в том случае, если мы понимаем какие типы дефектов могут быть найдены в процессе тестирования программной системы и как изменяется их частота во времени (подразумевая историческую перспективу развития системы, а не её сбоев в процессе работы). Эта информация позволяет прогнозировать качество системы и помогает совершенствовать процесс разработки, в целом.
Стандарт IEEE 1044-93 классифицирует возможные программные “аномалии”.
4.1.3 Плотность дефектов (Fault density)
Тестируемая программа может оцениваться на основе подсчета и классификации найденных дефектов. Для каждого класса дефектов можно определить отношение между количеством соответствующих дефектов и размером программы (в терминах выбранных метрик оценки размера).
4.1.4 Жизненный цикл тестов, оценка надежности (Life test, reliability evaluation)
Статистические ожидания в отношении надежности программной системы (см. выше 2.2.5 “Достижение и оценка надежности ”) могут использоваться для принятия решения о продолжении или прекращении (окончании) тестирования, исходя из заданных параметров приемлемого качества (например, плотности дефектов заданного класса).
4.1.5 Модели роста надежности (Reliability growth models)
Данные модели обеспечивают возможности прогнозирования надежности системы, базируясь на обнаруженных сбоях (см. выше 2.2.5). Модели такого рода разбиваются на две группы – по количеству сбоев (failure-count) и времени между сбоями (time-between-failure).