Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Лекция 1. Основные понятия тестирования

.pdf
Скачиваний:
72
Добавлен:
12.02.2022
Размер:
306.74 Кб
Скачать

Тестирование ПО

Тестирование разделяют на статическое и динамическое:

статическое тестирование выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода.

динамическое тестирование (собственно тестирование)

осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации тестирования.

Примеры динамического тестирования:

-пошаговое выполнение программы

-выполнение программы с заданными остановами

Тестирование ПО

Пошаговое выполнение является мощным методом автономного тестирования и отладки небольших программ. При пошаговом выполнении программы код выполняется строчка за строчкой. Возможны следующие команды пошагового выполнения:

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.

_