- •1. Определение и сущность основных характеристик качества программ: функциональности, корректности и надежности, эффективности, сложности, трудоемкости и ресурсоемкости, производительности.
- •2. Понятие метрики. Типы метрик и шкал. Понятие критерия оценки качества. Функциональные и конструктивные критерии оценки качества программ.
- •3. Этапы жизненного цикла программ и обеспечение качества программ на различных этапах. Характеристика статических и динамических составляющих качества программ.
- •4. Классификация видов сложности программных продуктов и их краткая характеристика.
- •9. Методы и средства измерения характеристик программ. Схема проведения измерений. Способы регистрации измеряемых параметров. Типы измерительных мониторов и требования к ним.
- •11. Аппаратные измерительные мониторы (аим). Общая структура. Аим с фиксированной программой. Достоинства и недостатки.
- •12. Аппаратные измерительные мониторы (аим) с изменяемой программой (гибридные). Достоинства и недостатки.
- •17. Надежность программ. Основные понятия: отказ, сбой, ошибки и восстановление - применительно к программам. Количественные оценки(показатели) надежности.
- •27. Тестирование программных изделий. Методы и критерии тестирования. Понятие теста. Основные принципы тестирования.
- •28. Объекты тестирования. Категории тестов, для различных объектов тестирования.
- •29. Тестирование на основе потока управления. Критерий покрытия решений.
- •30. Тестирование на основе потока управления. Критерий покрытия условий.
- •31. Тестирование на основе потока управления. Критерий комбинаторного покрытия условий
- •32. Функциональное тестирование. Метод эквивалентного разбиения.
- •33. Функциональное тестирование. Анализ граничных значений.
- •34. Метод тестирования на основе предположения об ошибке. Критерии завершения тестирования.
31. Тестирование на основе потока управления. Критерий комбинаторного покрытия условий
Начало 29 вопроса.
Критерий комбинаторного покрытия условий– требует такого набора тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз. Слово возможные употреблено потому, что не все комбинации условий могут быть реализуемыми; например, в выражении (A>2) & (A<10) могут быть реализованы только три комбинации условий. Набор тестов, удовлетворяющий критерию комбинаторного покрытия условий, удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий.
Пример тот же. По этому критерию должны быть покрыты тестами следующие 8 комбинаций: (1) A> 1,B= 0; (2)A> 1,B0; (3)A< 1,B= 0; (4)A< 1,B0; (5)A= 2,X>1; (6)A= 2,X1; (7)A2,X>1; (8)A2,X1.
Следует обратить внимание, что комбинации (5) – (8) представляют собой значения второго оператора if. ПосколькуXможет быть изменено до выполнения этого оператора, значения, необходимые для его проверки, следует восстановить исходя из логики программы с тем, чтобы найти соответствующие входные значения.
Для того, чтобы протестировать эти комбинации, необязательно использовать все восемь тестов. Фактически они могут быть покрыты четырьмя тестами:1. A=2,B=0,X=4 покрывает 1, 5; 2.A=2,B=1,X=1 покрывает 2, 6; 3.A=1,B=0,X=2 покрывает 3,7; 4.A=2,B=0,X=4 покрывает 4, 8.
32. Функциональное тестирование. Метод эквивалентного разбиения.
Функциональное тестирование– это тестирование, проводимое для проверки соответствия программной системы или программного модуля специфицированным функциональным требованиям. Здесь все внимание фокусируется только на выходных значениях, генерируемых в ответ на выбранные входные значения и условия выполнения.
Метод эквивалентного тестирования.
Цель – выбрать минимальное подмножество тестов, обеспечивающих наибольшую вероятность обнаружения ошибок.
Правильно выбранный тест этого подмножества должен обладать двумя свойствами: 1) Включать как можно больше входных условий с тем, чтобы минимизировать общее число тестов; 2) Разбивать входные данные программы на конечное число классов эквивалентноститак, чтобы можно было предположить, что если один тест класса эквивалентности обнаруживает ошибку, то следует ожидать, что и все другие тесты этого класса эквивалентности будут обнаруживать ту же самую ошибку и, наоборот.
Разработка тестов методом эквивалентного разбиения осуществляется в два этапа: I. выделение классов эквивалентности;II. Построение тестов.
I.Выделение классов эквивалентности
Классы эквивалентности выделяются путем выбора каждого входного условия (предложение спецификации) и разбиения его на две или более групп.
Различают два типа классов эквивалентности: 1. Правильные классы эквивалентности, представляющие правильные входные данные программы; 2. Неправильные классы эквивалентности, представляющие ошибочные входные данные.
Выделение классов эквивалентностипо ряду правил, которые следует выполнять:
1. Если входное условие описывает область значений (1 I100), то задается один правильный класс эквивалениности (1I100) и два неправильных (X< 1 иX>100).
2. Если входное условие описывает число значений (число элементов последовательности Nне должно превышать 10), то определяется 1 правильный класс (N10) и 2 неправильных (N<1 иN>10).
3. Если входное условие описывает множество входных значений, то определяется правильный и один неправильный класс эквивалентности – значение, не принадлежащее множеству.
4. Если входное условие описывает ситуацию “должно быть”, то определяется один правильный и один неправильный класс эквивалентности (первый символ – не буква).
5. Если есть основание считать, что различные элементы класса эквивалентности трактуются программой неодинаково, то данный класс эквивалентности разбивается на меньшие классы эквивалентности.
II.Построение теста: 1. Назначение каждому классу эквивалентности уникального номера; 2. Проектирование новых тестов, каждый из которых покрывает как можно большее число непокрытых правильных классов эквивалентности, до тех пор пока все правильные классы эквивалентности не будут покрыты; 3. Запись тестов, каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности, до тех пор пока все неправильные классы эквивалентности не будут покрыты. Причина покрытия неправильных классов эквивалентности индивидуальными тестами заключается в том, что определенные проверки с ошибочными входами скрывают или заменяют другие проверки с ошибочными входами.