СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Последовательность действий при тестировании

Категория: Информатика

Нажмите, чтобы узнать подробности

Данный методический материал предназначен для подготовки и проведения уроков при изучении дисциплины "Инженерный подход к разработке программного обеспечения" специальности 09.02.03 "Программирование в компьютерных системах" СПО углубленной подготовки.

Просмотр содержимого документа
«Последовательность действий при тестировании»

Последовательность действий при тестировании

Последовательность действий при тестировании

 Программа  – это аналог формулы в обычной математике.  Формула для функции f, полученной  суперпозицией  функций f1, f2, ... fn –  выражение , описывающее эту  суперпозицию . f = f1* f2* f3*... * fn  Если аналог f1,f2,... fn –  операторы  языка программирования, то их формула –  программа .  Существует два метода обоснования  истинности формул :  Формальный подход  или  доказательство    Применяется, когда из исходных формул-аксиом с помощью формальных процедур (правил вывода) выводятся искомые формулы и утверждения (теоремы).

Программа  – это аналог формулы в обычной математике.

Формула для функции f, полученной  суперпозицией  функций f1, f2, ... fn –  выражение , описывающее эту  суперпозицию .

f = f1* f2* f3*... * fn

Если аналог f1,f2,... fn –  операторы  языка программирования, то их формула –  программа .

Существует два метода обоснования  истинности формул :

Формальный подход  или  доказательство  

Применяется, когда из исходных формул-аксиом с помощью формальных процедур (правил вывода) выводятся искомые формулы и утверждения (теоремы).

R, A*R - R, A*R - R Преимущество формального подхода: с его помощью удается избегать обращений к бесконечной области значений и на каждом шаге доказательства оперировать только конечным множеством символов. Интерпретационный подход  применяется, когда осуществляется подстановка констант в формулы, а затем интерпретация формул как осмысленных утверждений в элементах множеств конкретных значений.   " width="640"

Вывод осуществляется путем перехода от одних формул к другим по строгим правилам, которые позволяют свести процедуру перехода от формулы к формуле к последовательности текстовых подстановок:

A**3 = A*A*A A*A*A = A - R, A*R - R, A*R - R

Преимущество формального подхода:

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

Интерпретационный подход  применяется, когда осуществляется подстановка констант в формулы, а затем интерпретация формул как осмысленных утверждений в элементах множеств конкретных значений.  

Сложность подхода состоит в том, что на конечных множествах комбинации возможных значений для реализации исчерпывающей проверки могут оказаться достаточно велики. Интерпретационный подход используется при экспериментальной проверке соответствия программы своей спецификации  Применение интерпретационного подхода в форме экспериментов над исполняемой программой составляет суть  отладки  и тестирования .

Сложность подхода состоит в том, что на конечных множествах комбинации возможных значений для реализации исчерпывающей проверки могут оказаться достаточно велики. Интерпретационный подход используется при экспериментальной проверке соответствия программы своей спецификации

Применение интерпретационного подхода в форме экспериментов над исполняемой программой составляет суть  отладки  и тестирования .

Отладка (debug, debugging)  – процесс поиска, локализации и исправления ошибок в программе. Термин
  • Отладка (debug, debugging)  – процесс поиска, локализации и исправления ошибок в программе.
  • Термин "  отладка  " в отечественной литературе используется двояко: для обозначения активности по поиску ошибок (собственно тестирование ), по нахождению причин их появления и исправлению, или активности по локализации и исправлению ошибок.
  • Тестирование  обеспечивает выявление наличия фактов расхождений с требованиями (ошибок).
  • На  фазе тестирования осуществляется исправление идентифицированных ошибок, включающее локализацию ошибок, нахождение причин ошибок и соответствующую корректировку программы тестируемого приложения.
Тестирование  разделяют на статическое и динамическое: Статическое  тестирование  выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода – CodeChecker. Динамическое  тестирование  (собственно  тестирование ) осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации  тестирования  –  Testbed  или Testbench.
  • Тестирование  разделяют на статическое и динамическое:
  • Статическое  тестирование  выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода – CodeChecker.
  • Динамическое  тестирование  (собственно  тестирование ) осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации  тестирования  –  Testbed  или Testbench.
=i;i++) { z = z*x; } return z; } void main(void) { int x; int n; printf("Enter x:"); " width="640"

Пример вычисления степени числа

#include

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(=0) & (x{ printf("Enter n:"); if(scanf("%d",&n)) { if ((n=1) & (n{ printf("The power n of x is %f\n", Power(x,n)); } else { printf("Error : n must be in [1..100]\n"); } } " width="640"

if(scanf("%d",&x))

{

if ((x=0) & (x

{

printf("Enter n:");

if(scanf("%d",&n))

{

if ((n=1) & (n

{

printf("The power n of x is %f\n", Power(x,n));

}

else

{ printf("Error : n must be in [1..100]\n"); } }

else { printf(

else { printf("Error : Please enter a numeric argument\n"); }

}

else { printf("Error : x must be in [0..999]\n"); }

}

else { printf("Error : Please enter a numeric argument\n"); }

}

 Для программы, вычисляющей степень числа, воспроизведем последовательность действий, необходимых для тестирования . Спецификация программы На вход программа принимает два параметра: x - число, n – степень. Результат вычисления выводится на экран. Значения числа и степени должны быть целыми. Значения числа, возводимого в степень, должны лежать в диапазоне – [0..999]. Значения степени должны лежать в диапазоне – [1..100]. Если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.

Для программы, вычисляющей степень числа, воспроизведем последовательность действий, необходимых для тестирования .

Спецификация программы

  • На вход программа принимает два параметра: x - число, n – степень. Результат вычисления выводится на экран.
  • Значения числа и степени должны быть целыми.
  • Значения числа, возводимого в степень, должны лежать в диапазоне – [0..999].
  • Значения степени должны лежать в диапазоне – [1..100].
  • Если числа, подаваемые на вход, лежат за пределами указанных диапазонов, то должно выдаваться сообщение об ошибке.
999 (ошибочное) x - не число (ошибочное) 0 n n 100 (ошибочное) n - не число (ошибочное) 1 Анализ тестовых случаев Входные значения: (x = 2, n = 3) (покрывают классы 4, 8).Ожидаемый результат: The power n of x is 8. " width="640"

Разработка тестов

  • Определим области эквивалентности входных параметров.
  • Для x – числа, возводимого в степень, определим классы возможных значений:
  • x
  • x 999 (ошибочное)
  • x - не число (ошибочное)
  • 0
  • n
  • n 100 (ошибочное)
  • n - не число (ошибочное)
  • 1

Анализ тестовых случаев

  • Входные значения: (x = 2, n = 3) (покрывают классы 4, 8).Ожидаемый результат: The power n of x is 8.
Входные значения: {(x = -1, n = 2),(x = 1000, n = 5)} (покрывают классы 1, 2).Ожидаемый результат: Error : x must be in [0..999]. Входные значения: {(x = 100, n = 0),(x = 100, n = 200)} (покрывают классы 5,6).Ожидаемый результат: Error : n must be in [1..100]. Входные значения: (x =  ADS   n = ASD) (покрывают классы эквивалентности 3, 7).Ожидаемый результат: Error : Please enter a numeric argument. Проверка на граничные значения: Входные значения: (x = 999, n = 1).Ожидаемый результат: The power n of x is 999. Входные значения: (x = 0, n = 100).Ожидаемый результат: The power n of x is 0. Входные значения: (x = 999, n = 1).Ожидаемый результат: The power n of x is 999. Входные значения: (x = 0, n = 100).Ожидаемый результат: The power n of x is 0.
  • Входные значения: {(x = -1, n = 2),(x = 1000, n = 5)} (покрывают классы 1, 2).Ожидаемый результат: Error : x must be in [0..999].
  • Входные значения: {(x = 100, n = 0),(x = 100, n = 200)} (покрывают классы 5,6).Ожидаемый результат: Error : n must be in [1..100].
  • Входные значения: (x =  ADS  
  • n = ASD) (покрывают классы эквивалентности 3, 7).Ожидаемый результат: Error : Please enter a numeric argument.
  • Проверка на граничные значения:
  • Входные значения: (x = 999, n = 1).Ожидаемый результат: The power n of x is 999. Входные значения: (x = 0, n = 100).Ожидаемый результат: The power n of x is 0.
  • Входные значения: (x = 999, n = 1).Ожидаемый результат: The power n of x is 999.
  • Входные значения: (x = 0, n = 100).Ожидаемый результат: The power n of x is 0.
Выполнение тестовых случаев Запустим программу с заданными значениями аргументов. Оценка результатов выполнения программы на тестах В процессе  тестирования  производится оценка результатов выполнения путем сравнения получаемого результата с ожидаемым.

Выполнение тестовых случаев

  • Запустим программу с заданными значениями аргументов.

Оценка результатов выполнения программы на тестах

  • В процессе  тестирования  производится оценка результатов выполнения путем сравнения получаемого результата с ожидаемым.