Lecture 07 11/23/2010 12:30:00 PM Experience

advertisement
Lecture 07
5/3/2016 9:31:00 AM
Experience-based Techniques
Тестирование основаное на опыте подразумивает под собой нестуктурированые тесты, не основаные на тест кейсах.
Применяется в случае
 недетально описаных спецификаций
 отсутствии времени на стуктурированые тесты (исполнении тест кейсов)
Experience-based Techniques может применятся и в случае, если спецификации доступны. Цель – основываясь на опыте
работы со схожими системами сосредоточиться на более ненадёжных частях программы, не привязываясь
непосредственно к тестированию спецификаций.
Техники Experience-based Techniques
Error guessing
«Угадывание ошибок» простая неструктурированая техника, которая основана на интуиции и опыте полученном при
тестиривании подобных приложений. Применяется для определения и проведения тестов, которые сложно было бы
организовать при более формальном и структурированом подходе.
Основной минус Error guessing это негарантированая эффективность, так как результат полностью зависит от опыта
конкретного тестера.
В качестве улучшения результативности Error guessing используются следующие подходы:
 определение областей тестирования основываясь на опыте/мнении нескольких опытных тестеров
 тесты основываются на списке заведомо существующих багов. Анализируется область затронутая багами и
тестирование производится вокруг этой «слабой» обалсти.
Explorative testing
Техника тестирования, которая комбинирует опыт тестера и структурированый подход к тестированию.
Нужда в применении этой техники может возникать при отсутствии детальных спецификаций или при нехватке
времени. Тестирование проводится в соответствии с графиком и целями тестирования.
Основное отличие от Error Guessing - наличие областей, к которым применяется тестирование, основаное на опыте.
Выбор техники тестирования
1. Первое и главное правило: первым проводится общее функциональное тестирование (спецификации).
Применяется структурированый подход, то есть скрипты, отчёты.
2. Когда базовая проверка функциональности закончена, наступает время определение областей тестирования и
покрытия. Покрывается ли нашими тестами каждая функциональность продукта?
3. Затем применяются структурые методы (в дополнение к функциональным). Под структурными имеются ввиду
тестирование кода (white box).
4. Когда завершено систематичное тестирование появляется возможность применить experienced-based технику.
Structure-based or white-box techniques
Техника, которая применяется для изучения структуры программы. Вместо того, чтобы исполнять код, чтобы убедиться,
что он нормально работает фокусируются на определённых частях кода. Например, проводится проверка того, что
выбраная часть кода выполняется хотя бы один раз.
Для того чтобы применять структурные тесты необходимо уметь проводить анализ кода.
1
Lecture 07
5/3/2016 9:31:00 AM
Код может быть двух типов – исполняемый и неисполняемый. Исполняемый код приводит к действиям/вычислениям
компьютера. Неисполняемый код испоьзуется, чтобы подготовить компьютер к действияем или вычислениям.
В коде, который мы будет рассматривать неисполняемые строки будут распологаться в начале кода, все исполняемые
строки – между двумя ключевми словами BEGIN и END.
Структра следующая:
1
2
3
4
5
6
Неисполняемые строки
BEGIN
Исполняемые строки
END
Существует три структуры, которые встречаются в коде:
1. Sequence (Последовательность)
2. Selection (Выбор)
3. Iteration (Итерация)
Sequence
1 Read A
2 Read B
3 C = A + B
Комьютер исполнит строки из примера последовательно. Код исполнялся сверху вниз, одна строка за другой.
Selection
1
2
3
4
5
6
IF P > 3
THEN
X = X + Y
ELSE
X = X – Y
ENDIF
Здесь компьютер проводит сравнение значение P с 3. Если условие выполняется, то исполнение кода переходит на
строку 2, в противном случае исполнение переходит на строку 4.
Iteration
Или «цикл». Набиболее распространённый цикл известен как DO WHILE (или WHILE DO):
1
2
3
4
5
6
X = 15
Count = 0
WHILE X < 20 DO
X = X + 1
Count = Count +1
END DO
Код будет выполнятся до тех пор, пока условие цилка (X < 20) будет выполнятся.
2
5/3/2016 9:31:00 AM
Lecture 07
Flow charts (блок-схемы)
Используются два символа – прямоугольники и ромбы.
Прямоугольники – обозначают части последовательно исполняемого кода
Ромбы – обозначают условие (в том числе условие присутствующее в цикле).
Example1
Control flow graphs (Граф потока управления)
Отображение кода ввиде графов потока управления позволяет концентрироваться только на частях программы, в
которых принимается логическое решение. То есть концентрируются на частях, которые влияют на ход программы.
Граф состоит из двух честей – узлов и рёбер.
Узел представляет точку в коде где ход программы может быть изменён (например, есть условие)
Ребро – указывает направление хода программы.
Control flow subgraphs (Подграфы потока управления)
If then else
Do while
Repeat until
Если блок или подграф не имеют путей до них от входного блока, то данная часть графа является недостижимой
(мертвый код) при любых вариантах исполнения, и по этой причине он может быть удален из программы. Если же из
данного подграфа нет путей до выходного блока, то значит этот подграф содержит бесконечный цикл. Конечно же, не
все бесконечные циклы можно обнаружить по такому признаку.
Statement testing and coverage
Example
Блок схемы хорошо применимы для отображения исполняемых частей программы – прямоугольники или ромбы.
Графы потока управления – отображают только структурные части, отвечающие за изменения хода программы (напр.
условие).
На практике, нам необходимы оба типа отображения структур. Для этого были созданы так называемые гибридные
графы потока управления.
Строится граф потока управления (control flow graph), но добавляется узел для каждой исполняемой части программы.
3
Lecture 07
5/3/2016 9:31:00 AM
Посмотрим, что происходит, когда запускается программа.
Ход программы исполняет каждую часть, которая встречается на во время выполнения (включая, логические условия).
Лучшим способом проведения таких тестов является передача в программу различных входных данных и отслеживания
хода программы.
Пути программы (точки)
Для упрощения обозначения возможных ходов исполнения программы используется буквенное обозначение. Кейс
acdfgh:
Decision testing and coverage
Эта техника нацелена на тестирование условий в программе.
Например, условие цикла - проверяется поведение при выполнении условия выхода из цикла и невыполнении.
Тоже касается IF – передаются значения, которые проверят оба исхода условия – True и False.
Надо понимать, что основная цель всех схем и графов – отследить возможные ходы исполнения программы.
Тем не менее, возникают ситуации, когда ход программы идёт по непредвиденному пути. Безусловно, это ошибка в
программе (например, возникает крэш). В этом случае непредусмотренную ситуацию на себя берёт операционная
система.
4
Download