- •Фактори якості програмного забезпечення.
- •Метрики якості програмного забезпечення Холстеда.
- •Интеллектуальное содержание программы (в условных единицах)
- •Регресійне тестування.
- •Визначення поняття веріфікації програмного забезпечення.
- •Метрики якості програмного забезпечення МакКейба.
- •Цикл попередження появи помилок в програмному забезпеченні.
- •Концепція тестування.
- •Зв’язок задач валідації, верифікації та тестування с життевим циклом програмного забезпечення.
- •Принципи тестування навантаженням.
- •Стадії тестування в процесі розробки програмного забезпечення.
- •Модель управління якістю програмного забезпечення - cmmi.
- •Інтеграційне тестування.
- •Основні поняття в проблемі тестування програмного забезпечення.
- •Модульне тестування.
- •Тестирование методом „білій ящик”.
- •Надійність програмного забезпечення.
- •Поняття системного тестування.
- •Модель комплексного управління якістю програмного забезпечення (на базі iso).
- •Методика аналізу помилки, що повторюється.
- •Роль керівника проекту при використанні системи відстеження помилок.
- •Характеристики „доброго” тесту.
- •Модель вимірювання характеристик якості програмного забезпечення.
- •Поняття класу еквівалентності.
- •Класифікація методів верифікації.
- •Мутаційні критерії вибору тестів.
- •Основні проблеми процесу тестування програмного забезпечення.
- •Ролі в процесі веріфікації програмного забезпечення.
- •Кількісні характеристики програмного забезпечення та його надійності.
- •Функціональні критерії вибору тестів.
- •Класифікація програмних помилок.
- •Призначення та основні компоненти звіту про помилку.
- •Стохастичні критерії вибору тестів.
- •На прикладі системи mantis дайте характеристики системі відстеження помилок.
- •Принципи тестування переходів між станами програми.
- •Ключові засади автоматизації тестування.
- •Особливості інтеграційного тестування для об’єктно-орієнтовного програмування.
- •Структурні критерії вибору тестів.
- •Документування в процесі верифікації.
- •Визначення якості программного забезпечення (iso, ieee).
Особливості інтеграційного тестування для об’єктно-орієнтовного програмування.
1) Это событийно-управляемое программирование (передача управления не только явным путем, но и ОС передает события).
2) Разработка идет путем порождения собственной иерархии классов от стандартных библиотек классов.
3) Разработка программного кода идет согласно стандартам “Look & Feel”
Исходя из этих трех особенностей, необходимо исключить провал работоспособностей элементов стандартной библиотеки.
Для того чтобы протестировать ООП-код – построим графа отдельного класса
Данный класс можно представить в виде графа. Узлы – методы; дуги – вызовы этих методов. Вызов может исходить двумя способами:
– Прямым вызовом одного метода из кода другого, в случае, если вызываемый метод виден (не закрыт для доступа средствами языка программирования) из класса, содержащего вызывающий метод, присвоим такой конструкции название Р-путь (P-path, Procedure path, процедурный путь).
– Обработкой сообщения, когда явного вызова метода нет, но в результате работы «вызывающего» метода порождается сообщение, которое должно быть обработано «вызываемым» методом.
Для второго случая «вызываемый» метод может породить другое сообщение, что приводит к возникновению цепочки исполнения последовательности методов, связанных сообщениями. Подобная цепочка носит название ММ-путь (MM-path, Metod/Message path, путь метод/сообщение). ММ-путь заканчивается, когда достигается метод, который при отработке не вырабатывает новых сообщений (т. е. вырабатывает «сообщение покоя»).
Пусть Kmsg – число методов класса, которые обрабатывают разные сообщения;
Kem – число методов класса, которые не закрыты от прямого вызова.
При тестировании ООП программ в отличие от процедурного стиля программирования можно отнести следующее:
1) Количество точек входа, которые могут быть вызваны извне и количество методов, которые могут быть вызваны из других классов, определяется разработчиком. Следовательно, по UML-диаграмме мы можем получить Kmsg и Kem.
2) Тестовый набор состоит из ММ и Р-путей.
Методы класса «непрозрачны» для внешних объектов, поэтому упростить граф, как ранее нельзя.
Поэтому, сложность графа есть функция V(P,C) = F(Kmsg,Kem).
Поскольку математическая запись сложно применима, следовательно, методика тестирования:
1) Тестируются методы каждого класса (модульное тестирование).
2) Тестируются методы класса, как будто они модули некой программы (это и есть наш класс).
3) Тестируется дерево классов.
Для того, чтобы реализовать II и III шаги мы вводим понятие атомарной системной функции – множество, которое состоит из:
1) Внешнее событие на вход программы;
2) Реакция системы на это событие в виде одного или более ММ-путей
3) Сгенерированное событие на выходе программы.
Задача тестировщика – создать тестовый набор, который состоит из атомарной системной функции.
Для тестирования атомарных системных функций лучше всего применять фиксацию временных значений переменных в локальных файлах.
Структурні критерії вибору тестів.
Структурные критерии предполагают знание исходных кодов, или наличие UML-диаграмм. Данные критерии используются на этапе модульного и интеграционного тестирования.
Критерий С0 – тестирование команд: тестовый набор должен обеспечить похождение каждой команды не менее одного раза. Это слабый критерий, который, как правило, применим к большому количеству кода.
С1 – критерий тестирования ветвей: тестовый набор должен обеспечить прохождение каждой ветви не менее одного раза.
С2 – тестирование путей: тестовый набор должен обеспечить прохождение каждого пути не менее одного раза.
Замечание: если программа имеет цикл с неявно заданным количеством итераций, мы проходим только две.
