Ответы на вопросы зачета / Ответы на вопросы зачета по ТПО
.pdf
|
Зачетные вопросы |
© Kovalenko Leonid |
|
|
по тестированию программного обеспечения |
|
|
1. |
Способы обеспечения качества программного продукта ........................... |
3 |
|
2. |
Организация тестирования............................................................................. |
|
3 |
3. |
Спецификация программы ............................................................................. |
|
3 |
4. |
Разработка тестов ............................................................................................ |
|
4 |
5. |
Управляющий граф программы .................................................................... |
|
5 |
6. |
Основные проблемы тестирования ............................................................... |
|
5 |
7. |
Критерии выбора тестов................................................................................. |
|
6 |
8. |
Требования к идеальному критерию............................................................. |
|
6 |
9. |
Классы критериев............................................................................................ |
|
6 |
10. |
Структурные критерии.................................................................................. |
|
7 |
11. |
Функциональные критерии........................................................................... |
|
7 |
12. |
Стохастические критерии ............................................................................. |
|
8 |
13. |
Мутационный критерий ................................................................................ |
|
9 |
14. |
Оценка покрытия программы и проекта ................................................... |
|
10 |
15. |
Методика интегральной оценки тестирования......................................... |
|
10 |
16. |
Разновидности тестирования...................................................................... |
|
11 |
17. |
Пользовательское тестирование................................................................. |
|
12 |
18.Качественные и количественные требования согласованности по
скорости восприятия графической информации пользователем ..................... |
13 |
19. Модульное тестирование ............................................................................ |
14 |
20.Особенности интеграционного тестирования для объектно-
ориентированного программирования................................................................ |
14 |
|
21. |
Системное тестирование ............................................................................. |
15 |
22. |
Комбинирование уровней тестирования ................................................... |
16 |
23. |
Особенности индустриального тестирования .......................................... |
17 |
24. |
Автоматизация тестирования ..................................................................... |
17 |
25. |
Издержки тестирования .............................................................................. |
18 |
26. |
Качество программного продукта.............................................................. |
18 |
27. |
Фазы процесса тестирования...................................................................... |
19 |
28. |
Планирование тестирования....................................................................... |
19 |
29. |
Типы тестирования ...................................................................................... |
20 |
30. |
Подходы к разработке тестов ..................................................................... |
20 |
31. |
Документация и сопровождение тестов .................................................... |
21 |
32. |
Оценка качества тестов ............................................................................... |
22 |
33. |
Нагрузочное тестирование.......................................................................... |
23 |
34. |
Основные этапы нагрузочного тестирования ........................................... |
24 |
35. |
Основные виды нагрузочных тестов ......................................................... |
24 |
36.Основные инструменты формирования нагрузки и сбора статистики при
выполнении нагрузочного тестирования............................................................ |
25 |
|
37. |
Регрессионное тестирование ...................................................................... |
25 |
38. |
Цели и задачи регрессионного тестирования ........................................... |
26 |
39. |
Виды регрессионного тестирования .......................................................... |
26 |
40. |
Управляемое регрессионное тестирование............................................... |
27 |
41. |
Обоснование корректности метода отбора тестов ................................... |
27 |
42. |
Классификация тестов при отборе............................................................. |
27 |
43. |
Возможности повторного использования тестов ..................................... |
28 |
44. |
Классификация выборочных методов ....................................................... |
29 |
2
1. Способы обеспечения качества программного продукта
Качество ПО характеризуется набором свойств, определяющих,
насколько продукт «хорош» с точки зрения заинтересованных сторон.
Заинтересованные стороны: заказчик продукта, спонсор, конечный пользователь, разработчики и тестировщики продукта…
Постановка задачи обеспечения качества ПО переформулируется в задачу определения заинтересованных лиц, их критериев качества и затем нахождения рационального (оптимального) решения, удовлетворяющего этим критериям.
Понятие качества весьма субъективно.
Качество ПО можно определить неформально как способность выполнять заявленные функции и не выполнять другие, не объявленные функции.
Тестирование не позиционируется в качестве единственного способа обеспечения качества. Оно является частью общей системы обеспечения качества продукта.
2. Организация тестирования
Тестирование осуществляется на заданном заранее множестве входных данных и множестве предполагаемых результатов — ( , ), которые задают график желаемой функции.
Задача организации тестирования в том, чтобы определить,
соответствуют ли выходные данные, вычисленные по входным данным,
желаемым результатам (принадлежит ли каждая вычисленная точка графику функции).
3. Спецификация программы
Программа работает правильно, если она работает и выдает результат в соответствии со спецификацией.
Спецификация — точное, однозначное, недвусмысленное задание для программиста, написанное постановщиком задачи.
Свойства спецификации: полнота, точность и понятность. 3
Спецификация программы, вычисляющей степень числа:
•На вход программа принимает два параметра: — число, —
степень;
•Результат вычисления выводится на консоль;
•Значения числа и степени должны быть целыми;
•Значения числа, возводимого в степень, должны лежать в диапазоне
[0 … 99];
•Значения степени должны лежать в диапазоне — [1 … 10];
•Если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.
4.Разработка тестов
1.Определение целей: какие части системы будут тестироваться, какие аспекты их работы будут выбраны для проверки и т.п.
2.Планирование: создание графика разработки тестов для каждой тестируемой подсистемы; оценка необходимых ресурсов и др.
3.Ручное или автоматизированное тестирование. Если автоматизированное, то ручная разработка тестов или генерация тестов.
4.Выполнение тестов — реализация тестовых циклов.
5.Анализ результатов.
Пример. Программа, вычисляющая степень числа. Определим области эквивалентности (классы, диапазоны возможных значений) входных
параметров.
•Для (числа, возводимого в степень):
1.< 0 (ошибочное)
2.> 99 (ошибочное)
3.— не число (ошибочное)
4.0 ≤ ≤ 99 (корректное)
4
•Для (степени числа):
1.< 1 (ошибочное)
2.> 10 (ошибочное)
3.— не число (ошибочное)
4.1 ≤ ≤ 10 (корректное)
5.Управляющий граф программы
Управляющий граф программы — все возможные варианты путей выполнения кода программы.
Трасса — это «сохраненный путь» на управляющем графе программы (с
записями о состояниях переменных в заданных точках).
Рисунок 5.1
6. Основные проблемы тестирования
Основная проблема тестирования — определение достаточности множества тестов для того, чтобы сделать вывод о правильности реализации программы, а также нахождение множества тестов, обладающего этим свойством.
Задача о выборе конечного набора тестов в общем случае неразрешима,
в связи с чем для решения практических задач целесообразно нахождение частных случаев решения этой задачи.
Основное требование к тестам — программа на любом из них не должна зацикливаться. Заранее гарантировать останов на любом тесте нельзя — не существует общего метода решения этого вопроса.
5
7. Критерии выбора тестов
Критерий выбора тестов — решающее правило выбора состава и содержания проверок.
Для различных классов ПО в общем случае не существует полного и надежного критерия выбора совокупности тестов.
Целесообразно выполнять приближение к общему («идеальному»)
критерию через совокупность частных критериев.
8.Требования к идеальному критерию
•Критерий должен быть достаточным, т.е. показывать, когда конечное множество тестов достаточно для тестирования программы;
•Критерий должен быть полным, т.е. в случае ошибки должен существовать тест, который раскрывает ошибку;
•Критерий должен быть надежным, т.е. любые два множества тестов,
удовлетворяющих ему, одновременно должны раскрывать или не раскрывать ошибки программы;
•Критерий должен быть легко проверяемым, например, вычисляемым на тестах.
9.Классы критериев
•Структурные критерии используют информацию о структуре программы (критерии «белого ящика»);
•Функциональные критерии формулируются в описании требований к программному изделию (критерии «черного ящика»);
•Критерии стохастического тестирования формулируются в терминах проверки наличия заданных свойств у приложения средствами проверки некоторой статистической гипотезы;
•Мутационные критерии ориентированы на проверку свойств программного изделия на основе подхода Монте-Карло.
6
10.Структурные критерии
Структурные критерии основываются на основных элементах
управляющего графа программы, операторах, ветвях, путях:
•Критерий тестирования команд (критерий С0) — набор тестов в совокупности должен обеспечить прохождение каждой команды не менее одного раза. Слабый критерий. Используется в больших программных системах, где другие критерии применить невозможно.
•Критерий тестирования ветвей (критерий С1) — набор тестов в совокупности должен обеспечить прохождение каждой ветви не менее одного раза. Сильный и экономичный критерий, поскольку множество ветвей в тестируемом приложении конечно и не велико,
используется в системах автоматизации тестирования.
•Критерий тестирования путей (критерий С2) — набор тестов в совокупности должен обеспечить прохождение каждого пути не менее одного раза. Если программа содержит цикл, то число итераций ограничивается константой (часто — двум или количеством классов выходных путей).
11.Функциональные критерии
Функциональные критерии обеспечивают контроль степени выполнения требований заказчика в программном продукте. Поскольку требования формулируются к продукту в целом, они отражают взаимодействие тестируемого приложения с окружением.
При функциональном тестировании преимущественно используется метод «черного ящика».
Основная трудность функционального тестирования — трудоемкость работы тестировщиков, поскольку документы, фиксирующие требования к программному изделию, как правило, достаточно объемны.
Виды функциональных критериев:
• Тестирование пунктов спецификации — проверка каждого
тестируемого пункта не менее одного раза.
7
•Тестирование классов входных данных — проверка представителя каждого класса входных данных не менее одного раза.
•Тестирование правил — проверка каждого правила, если входные и выходные значения описываются набором правил некоторой грамматики.
•Тестирование классов выходных данных — проверка представителя каждого класса выходных данных не менее одного раза.
•Тестирование функций — проверка каждого действия, реализуемого тестируемым модулем, не менее одного раза.
•Комбинированные критерии для программ и спецификаций — проверка всех комбинаций непротиворечивых условий программ и спецификаций не менее одного раза.
12.Стохастические критерии
Стохастические критерии применяются при тестировании сложных программных комплексов — когда набор детерминированных тестов ( , )
имеет очень большую мощность.
Методика применения стохастических критериев:
1.Разработать программы;
2.Вычислить независимым способом значения { } для соответствующих входных сигналов { } и получить тестовый набор
( , ).
3.Протестировать приложение на тестовом наборе ( , ), используя детерминированный и стохастический способы контроля результатов:
•Детерминированный (по случайным входным сигналам,
сгенерированным имитатором).
•Стохастический (по заранее известному закону распределения результатов).
8
Критерии стохастического тестирования:
•Статистические методы принятия решений о совпадении гипотез о распределении случайных величин:
o Метод Стьюдента (St),
o Метод Хи-квадрат (χ2) и т.п.
•Метод оценки скорости выявления ошибок; основан на модели,
согласно которой тестирование прекращается, если оцененный интервал времени между текущей и следующей ошибкой слишком велик для фазы тестирования приложения.
Рисунок 12.1
13.Мутационный критерий
Мутационный критерий — подход, позволяющий на основе мелких ошибок оценить общее число ошибок, оставшихся в программе.
•Мутации — мелкие ошибки в программе;
•Мутанты — программы, отличающиеся друг от друга мутациями;
•Метод мутационного тестирования — в разрабатываемую программу
вносят мутации, т.е. искусственно создают программы-мутанты 1,
2..., а затем программа и ее мутанты тестируются на одном и том
же наборе тестов ( , ).
Если на наборе ( , ) подтверждается правильность программы и
выявляются все внесенные в программы-мутанты ошибки, то набор тестов
( , ) соответствует мутационному критерию, а тестируемая программа объявляется правильной.
9
Если некоторые мутанты не выявили всех мутаций, то надо расширять
набор тестов ( , ) и продолжать тестирование.
14.Оценка покрытия программы и проекта
Тестирование программы по некоторому критерию |
— покрытие |
|||||||||
множества |
компонентов |
программы |
= { … |
} |
множеством |
|||||
|
|
|
|
|
|
|
|
1 |
|
|
неизбыточных тестов = { |
… |
}, |
где тест |
неизбыточен, если существует |
||||||
|
|
|
1 |
|
|
|
|
|
|
|
покрытый им компонент из , |
не покрытый ни одним из предыдущих |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
тестов |
. . . |
|
; каждому |
|
соответствует |
неизбыточный путь — |
||||
1 |
−1 |
|
|
|
|
|
|
|
|
|
последовательность вершин от входа до выхода. |
|
|
||||||||
( , ) |
— сложность |
тестирования |
|
по критерию |
, измеряемая |
максимальным числом неизбыточных тестов, покрывающих все элементы множества .
( , , ) — остаточная сложность тестирования по критерию ,
измеряемая максимальным числом неизбыточных тестов, покрывающих элементы множества , оставшиеся непокрытыми, после прогона набора тестов (строго и монотонно убывает от до 0).
Оценка степени оттестированности по критерию .
( , , ) = −
Критерий окончания тестирования: ( , , ) ≥ , где — уровень оттестированности, заданный в требованиях (0 ≤ ≤ 1).
Рисунок 14.1
15.Методика интегральной оценки тестирования
1.Выбор критерия и значения уровня оттестированности
(приемочной оценки тестированности) ПО.
10