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

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

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

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

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

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

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

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

Итоги урока

Концепция тестирования как способ обеспечения качества информационных систем

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

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

В данной работе рассматриваются вопросы, связанные с тестированием программного обеспечениия, место и роль тестирование в процессе разработки ПО. Материал полезен для проведения занятий по дисциплине МДК.05.03."Тестирование информационных систем"

Просмотр содержимого документа
«Концепция тестирования как способ обеспечения качества информационных систем»

Концепция тестирования. Тестирование как способ обеспечения качества информационных систем. Основные понятия тестирования.

Концепция тестирования. Тестирование как способ обеспечения качества информационных систем. Основные понятия тестирования.

Концепция тестирования или  Что такое тестирование и откуда оно появилось Тестирование программного обеспечения — процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта. На протяжении десятилетий развития разработки ПО к вопросам тестирования и обеспечения качества подходили по-разному. Можно выделить несколько основных «эпох тестирования». В 50–60-х годах прошлого века процесс тестирования был предельно формализован, отделён от процесса непосредственной разработки ПО. Фактически тестирование представляло собой скорее отладку программ (debugging3 ). Существовала концепция «исчерпывающего тестирования» — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпывающее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации.

Концепция тестирования или Что такое тестирование и откуда оно появилось

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

На протяжении десятилетий развития разработки ПО к вопросам тестирования и обеспечения качества подходили по-разному. Можно выделить несколько основных «эпох тестирования».

В 50–60-х годах прошлого века процесс тестирования был предельно формализован, отделён от процесса непосредственной разработки ПО. Фактически тестирование представляло собой скорее отладку программ (debugging3 ). Существовала концепция «исчерпывающего тестирования» — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпывающее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации.

В 70-х годах появились два направления тестирования: тестирование сначала рассматривалось как процесс доказательства работоспособности программы в некоторых заданных условиях, а затем — строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях. Это внутреннее противоречие не только не исчезло со временем, но и в наши дни используются как две взаимодополняющие цели тестирования. Самое важное, что тестирование «приобрело» в 70-е годы: тестирование позволяет удостовериться, что программа соответствует требованиям; тестирование позволяет определить условия, при которых программа ведёт себя некорректно. В 80-х годах произошло ключевое изменение места тестирования в разработке ПО: вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки ПО.

В 70-х годах появились два направления тестирования: тестирование сначала рассматривалось как процесс доказательства работоспособности программы в некоторых заданных условиях, а затем — строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях. Это внутреннее противоречие не только не исчезло со временем, но и в наши дни используются как две взаимодополняющие цели тестирования.

Самое важное, что тестирование «приобрело» в 70-е годы:

  • тестирование позволяет удостовериться, что программа соответствует требованиям;
  • тестирование позволяет определить условия, при которых программа ведёт себя некорректно.

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

Это позволило не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвращать их появление. В этот же период времени отмечено бурное развитие и формализация методологий тестирования и появление первых элементарных попыток автоматизировать тестирование. В 90-х годах произошёл переход от тестирования как такового к более всеобъемлющему процессу, который называется «обеспечение качества», охватывает весь цикл разработки ПО и затрагивает процессы планирования, проектирования, создания и выполнения тест-кейсов, поддержку имеющихся тест-кейсов и тестовых окружений.

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

В нулевые годы этого века развитие тестирования продолжалось в контексте поиска всё новых и новых путей, методологий, техник и подходов к обеспечению качества. Серьёзное влияние на понимание тестирования оказало появление гибких методологий разработки и таких подходов, как «разработка под управлением тестированием».

Автоматизация тестирования уже воспринималась как неотъемлемая часть большинства проектов.

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

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

Для современного этапа развития тестирования характерно следующее:

  • гибкие методологии и гибкое тестирование,
  • глубокая интеграция с процессом разработки,
  • широкое использование автоматизации,
  • колоссальный набор технологий и инструментальных средств,
  • кроссфункциональность команды (когда тестировщик и программист во многом могут выполнять работу друг друга).
Понятие «Тестирование Информационных систем» Качество программного продукта характеризуется набором свойств, определяющих, насколько продукт «хорош» для заинтересованных сторон, таких как заказчик продукта, спонсор, конечный пользователь, разработчики и тестировщики продукта, инженеры поддержки, сотрудники отделов маркетинга, обучения и продаж. Каждый из участников может иметь различное представление о продукте и том, насколько он хорош или плох, то есть о том, насколько высоко качество продукта. Таким образом, постановка задачи обеспечения качества продукта выливается в задачу определения заинтересованных лиц, их критериев качества и затем нахождения оптимального решения, удовлетворяющего этим критериям. Тестирование является одним из способов обеспечения качества разработки программного обеспечения и входит в набор эффективных средств современной системы обеспечения качества программного продукта.

Понятие «Тестирование Информационных систем»

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

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

С технической точки зрения тестирование заключается в выполнении приложения на некотором множестве исходных данных и сверке получаемых результатов с заранее известными (эталонными) с целью установить соответствие различных свойств и характеристик приложения заказанным свойствам.

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

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

f=f1*f2*f3*…*fn

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

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

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

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

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

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

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

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

Отладка(debug, debugging)   – процесс поиска, локализации и исправления ошибок в программе.

Термин « отладка » в отечественной литературе используется двояко: для обозначения активности по поиску ошибок, по нахождению причин их появления и исправлению, или активности по локализации и исправлению ошибок. Тестирование  – это процесс выполнения ПО системы или компонента в условиях анализа или записи получаемых результатов с целью проверки (оценки) некоторых свойств тестируемого объекта. Тестирование  – это процесс анализа пункта требований к ПО с целью фиксации различий между существующим состоянием ПО и требуемым (что свидетельствует о проявлении ошибки) при экспериментальной проверке соответствующего пункта требований. Тестирование  обеспечивает выявление наличия фактов расхождений с требованиями (ошибок).

Термин « отладка » в отечественной литературе используется двояко: для обозначения активности по поиску ошибок, по нахождению причин их появления и исправлению, или активности по локализации и исправлению ошибок.

Тестирование  – это процесс выполнения ПО системы или компонента в условиях анализа или записи получаемых результатов с целью проверки (оценки) некоторых свойств тестируемого объекта.

Тестирование  – это процесс анализа пункта требований к ПО с целью фиксации различий между существующим состоянием ПО и требуемым (что свидетельствует о проявлении ошибки) при экспериментальной проверке соответствующего пункта требований.

Тестирование  обеспечивает выявление наличия фактов расхождений с требованиями (ошибок).

Тестирование  разделяют на статическое и динамическое : Статическое  тестирование   выявляет формальными методами анализа без выполнения тестируемой программы неверные конструкции или неверные отношения объектов программы (ошибки формального задания) с помощью специальных инструментов контроля кода – CodeChecker. Динамическое  тестирование   (собственно  тестирование ) осуществляет выявление ошибок только на выполняющейся программе с помощью специальных инструментов автоматизации  тестирования  –  Testbed  или Testbench. Последовательность действий при тестировании  Для программы, вычисляющей степень числа, воспроизведем последовательность действий, необходимых для тестирования .

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

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

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

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

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

=i;i++) { z = z*x; } return z; } " 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(=0) & (x { printf("Enter n:"); if(scanf("%d",&n)) { if ((n=1) & (n { " width="640"

void main(void)

{

int x;

int n;

printf("Enter x:");

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

{

if ((x=0) & (x

{

printf("Enter n:");

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

{

if ((n=1) & (n

{

printf(

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

}

else

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

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). Ожидаемый результат: The power n of x is 8. " width="640"

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

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

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

  • Входные значения: (x = 2, n = 3). Ожидаемый результат: The power n of x is 8.
Входные значения: {(x = -1, n = 2),(x = 1000, n = 5)}. Ожидаемый результат: Error : x must be in [0..999]. Входные значения: {(x = 100, n = 0),(x = 100, n = 200)}. Ожидаемый результат: Error : n must be in [1..100]. Входные значения: (x =  ADS   n = ASD).  Ожидаемый результат: 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)}. Ожидаемый результат: Error : x must be in [0..999].
  • Входные значения: {(x = 100, n = 0),(x = 100, n = 200)}. Ожидаемый результат: Error : n must be in [1..100].
  • Входные значения: (x =  ADS  
  • n = ASD).  Ожидаемый результат: 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.

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

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

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

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


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!