
Лекции / Лекция 1. Основные понятия тестирования
.pdfТестирование ПО
Тестирование разделяют на статическое и динамическое:
статическое тестирование выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода.
динамическое тестирование (собственно тестирование)
осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации тестирования.
Примеры динамического тестирования:
-пошаговое выполнение программы
-выполнение программы с заданными остановами
Тестирование ПО
Пошаговое выполнение является мощным методом автономного тестирования и отладки небольших программ. При пошаговом выполнении программы код выполняется строчка за строчкой. Возможны следующие команды пошагового выполнения:
stepInto – если выполняемая строчка кода содержит вызов функции, процедуры или метода, то происходит вызов, и программа останавливается на первой строчке вызываемой функции, процедуры или метода.
stepOver - если выполняемая строчка кода содержит вызов функции, процедуры или метода, то происходит вызов и выполнение всей функции и программа останавливается на первой строчке после вызываемой функции.
stepOut – предназначена для выхода из функции в вызывающую функцию. Эта команда продолжит выполнение функции и остановит выполнение на первой строчке после вызываемой функции.
Тестирование ПО
Выполнение с заданными остановами и последующим анализом трасс или состояний памяти – дампов, при котором осуществляется предварительная расстановка точек останова (контрольных точек).
Точка останова (контрольная точка) – точка программы, которая при ее достижении посылает отладчику сигнал, по которому либо временно приостанавливается выполнение отлаживаемой программы, либо запускается программа ("агент"), фиксирующая состояние заранее определенных переменных или областей в данный момент. Когда выполнение в контрольной точке приостанавливается, отлаживаемая программа переходит в режим останова (break mode). Вход в режим останова не прерывает и не заканчивает выполнение программы и позволяет анализировать состояние отдельных переменных или структур данных. Когда в контрольной точке вызывается программа "агент", она тоже приостанавливает выполнение отлаживаемой программы, но только на время, необходимое для фиксации состояния выбранных переменных или структур данных в специальном журнале (log-файле).

Тестирование ПО
Управляющий граф программы – все возможные варианты путей выполнения кода программы.
Трасса - это "сохраненный путь" на управляющем графе программы, т.е. зафиксированные в журнале записи о состояниях переменных в заданных точках в ходе выполнения программы.
Трасса, проходящая через вершины 0-1-3-4-5
№ |
Значение |
Значение |
Значение |
Значение |
вершины- |
переменной |
переменной |
переменной |
переменной |
оператора |
x |
z |
n |
i |
|
|
|
|
|
0 |
3 |
1 |
2 |
нет |
|
|
|
|
|
1 |
3 |
1 |
2 |
нет |
|
|
|
|
|
3 |
3 |
1 |
2 |
1 |
|
|
|
|
|
4 |
3 |
3 |
2 |
2 |
|
|
|
|
|
5 |
3 |
3 |
2 |
нет |
|
|
|
|
|
Дамп – область памяти, состояние которой фиксируется в контрольной точке в виде единого массива или нескольких связанных
массивов. |
_ |
|
Тестирование ПО
"Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей"
(РД НДВ)
Функциональный объект – элемент программы, осуществляющий выполнение действий по реализации законченного фрагмента алгоритма программы. В качестве функциональных объектов могут выступать
процедуры, функции, ветви, операторы и т.п.
Информационный объект – элемент программы, содержащий фрагменты информации, циркулирующей в программе. В зависимости от языка программирования в качестве информационных объектов могут выступать переменные, массивы, записи, таблицы, файлы, фрагменты оперативной памяти и т.п.
Маршрут выполнения функциональных объектов – определенная алгоритмом последовательность выполняемых функциональных объектов.
Фактический маршрут выполнения функциональных объектов –
последовательность фактически выполняемых функциональных объектов при определённых условиях (входных данных).
Критический маршрут выполнения функциональных объектов –
такой маршрут, при выполнении которого существует возможность неконтролируемого нарушения установленных правил обработки информационных объектов.
Тестирование ПО
"Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей"
(РД НДВ)
Статический анализ исходных текстов программ – совокупность методов контроля (не)соответствия реализованных и декларированных в документации функциональных возможностей ПО, основанных на структурном анализе и декомпозиции исходных текстов программ.
Статический анализ исходных текстов программ должен включать следующие технологические операции:
-контроль полноты и отсутствия избыточности исходных текстов ПО на уровне файлов;
-контроль соответствия исходных текстов ПО его объектному (загрузочному) коду;
-контроль полноты и отсутствия избыточности исходных текстов ПО на уровне функциональных объектов (процедур);
-контроль связей функциональных объектов (модулей, процедур, функций) по управлению;
-контроль связей функциональных объектов (модулей, процедур, функций) по информации;
-контроль информационных объектов различных типов (например, локальных переменных, глобальных переменных, внешних переменных и т.п.);
-формирование перечня маршрутов выполнения функциональных объектов (процедур, функций);
-контроль полноты и отсутствия избыточности исходных текстов контролируемого программного обеспечения на уровне функциональных объектов (функций);
-синтаксический контроль наличия заданных конструкций в исходных текстах ПО из списка (базы) потенциально опасных программных конструкций;
-формирование перечня маршрутов выполнения функциональных объектов (ветвей);
-анализ критических маршрутов выполнения функциональных объектов (процедур, функций) для заданных экспертом списков информационных объектов;
-построение по исходным текстам контролируемого ПО блок-схем, диаграмм и т.п., и последующий сравнительный анализ алгоритма работы функциональных объектов (процедур, функций) и алгоритма работы, приведенного в “Пояснительной записке”.
Тестирование ПО
"Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей"
(РД НДВ)
Динамический анализ исходных текстов программ – совокупность методов контроля (не)соответствия реализованных и декларированных в документации функциональных возможностей ПО, основанных на идентификации фактических маршрутов выполнения функциональных объектов с последующим сопоставлением маршрутам, построенным в процессе проведения статического анализа.
Динамический анализ исходных текстов программ должен включать следующие технологические операции:
-контроль выполнения функциональных объектов (процедур, функций, ветвей);
-сопоставление фактических маршрутов выполнения функциональных объектов (процедур,
функций, ветвей) и маршрутов, построенных в процессе проведения статического анализа.
_
Тестирование ПО
Программа, вычисляющая степень числа
#include <stdio.h> double Power(int x, int n)
{
int z=1; int i;
for (i=1; n>=i; i++) { z = z*x; }
return z;
}
void main(void)
{
int x; int n;
printf("Enter x:"); if(scanf("%d",&x)) {
if ((x>=0) & (x<=99)) { printf("Enter n:"); if(scanf("%d",&n)) {
if ((n>=1) & (n<=10)) {
printf("The power n of x is %f\n", Power(x,n)); } else {
printf("Error : n must be in [1..10]\n"); }
}
else {
printf("Error : Please enter a numeric argument\n"); }
}
else {
printf("Error : x must be in [0..99]\n"); }
}
else {
printf("Error : Please enter a numeric argument\n"); }
Тестирование ПО
Спецификация программы
-на вход программа принимает два параметра: x - число, n – степень.
-результат вычисления выводится на консоль.
-значения числа и степени должны быть целыми.
-значения числа, возводимого в степень, должны лежать в диапазоне [0..99[
-значения степени должны лежать в диапазоне – [1..10[
-если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.
Разработка тестов
Определим области эквивалентности (классы, множества, диапазоны возможных значений) входных параметров.
-для x (числа, возводимого в степень):
1)x < 0 (ошибочное)
2)x > 99 (ошибочное)
3)x - не число (ошибочное)
4)0 <= x <= 99 (корректное)
-для n (степени числа):
5)n < 1 (ошибочное)
6)n > 10 (ошибочное)
7)n - не число (ошибочное)
8)1 <= n <= 10 (корректное)
Тестирование ПО
Анализ тестовых случаев
Входные значения: (x = 3, n = 2) (покрывают классы 4, 8) Ожидаемый результат: The power n of x is 9.
Входные значения: {(x = -2, n = 4),(x = 101, n = 5)} (покрывают классы 1, 2)
Ожидаемый результат: Error : x must be in [0..99]
Входные значения: {(x = 101, n = 0),(x = 10, n = 30)} (покрывают классы 5,6) Ожидаемый результат: Error : n must be in [1..10]
Входные значения: (x = ABBA, n = FFFF) (покрывают классы 3, 7)
Ожидаемый результат: Error : Please enter a numeric argument.
Проверка на граничные значения: |
|
Входные значения: (x = 99, n = 1) |
|
Ожидаемый результат: The power n of x is 99. |
|
Входные значения: (x = 0, n = 9) |
|
Ожидаемый результат: The power n of x is 0. |
_ |
|