Файл: Методические указания по организации практических занятий и самостоятельной работы по мдк. 02. 01 Технология разработки программного обеспечения.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 596
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
программы которых настолько малы по размерам, что в них просто не найдется места для сотни ошибок.
Таблица. Средний процент тестов, необходимых для обнаружения заданного процента ошибок (в зависимости от общего числа ошибок в программе)
Оказывается, что при N = 10 первые 22% тестов обнаружат половину всех ошибок (5 штук). Для того чтобы обнаружить две следующие ошибки, количество тестов придется увеличить в 1,7 раза — до 37%. Поиск следующих двух ошибок потребует увеличения количества тестов еще в 1,8 раза — до 66%. И наконец, поиск последней ошибки потребует оставшихся 34% тестов.
Чем больше ошибок в программе, тем дороже обойдется поиск последних ошибок. При N = 50 для обнаружения 50% ошибок достаточно 15% тестов, 70% ошибок будут найдены с помощью 26%, 90% ошибок — с помощью 49% тестов. Поиск последних 10% ошибок будет стоить дороже, чем поиск первых 90%!
При увеличении количества ошибок с 10 до 100 стоимость поиска последних 10% ошибок возрастает с 34% тестов до 66%.
Заметим, что речь идет не об абсолютном числе тестов, а о их доле. Поскольку программа, содержащая 100 естественных ошибок, скорее всего, сложнее программы, в которой ошибок только 10, есть основания полагать, что общее число тестов также будет возрастать. То есть придется брать больший процент от большего числа тестов
В следующей таблице N изменяется от 1 до 10. В этом случае говорить о процентах найденных ошибок смысла нет. Поэтому в боковике записаны не относительные, а абсолютные значения. Поскольку указанное количество ошибок вполне реально для учебных программ, интересно было сравнить модельные данные, приведенные в таблице, с реальными данными из практики. Надо только помнить, во-первых, что речь идет о средних значениях. А во-вторых, что данные в таблице получены из статистической модели. А статистика любит большие числа.
Таблица. Средний процент тестов, необходимых для обнаружения заданного количества ошибок (в зависимости от общего числа ошибок в программе)
Имея такие оценки относительного количества тестов, в конкретном проекте можно перейти к абсолютным величинам.
Поскольку нам известно, сколько тестов нам понадобилось для нахождения n ошибок, легко оценить, сколько понадобится для нахождения оставшихся. Если количество ошибок в программе оценено в 10 и для обнаружения первых пяти потребовалось, например, 7 тестов, то для поиска двух следующих ошибок количество тестов придется довести до 12 (5 дополнительных тестов на 2 ошибки), для поиска следующих двух — до 21 (9 дополнительных тестов на 2 ошибки). Все 10 ошибок есть надежда найти за 32 теста.
Подобные оценки можно использовать для планирования времени и ресурсов, выделяемых для процесса тестирования.
Задание практической работы
Методика выполнения
Разработка тестового сценария
Задача: Найти минимальный набор тестов для программы нахождения вещественных корней квадратного уравнения .
Решение:
Таким образом для этой задачи предлагается минимальный набор функциональных тестов, исходя из 7 классов выходных данный.
Оценка необходимого количества тестов
Для задачи нахождения вещественных корней квадратного уравнения для нахождения 4 ошибок нам понадобилось 7 тестов.
Следовательно, легко оценить, сколько понадобится для нахождения оставшихся. Если количество ошибок в программе оценено в 4 и для обнаружения первых двух потребовалось, например, 4 теста, то для поиска двух следующих ошибок количество тестов придется довести до 10 (6 дополнительных тестов на 2 ошибки). Все 4 ошибки есть надежда найти за 10 тестов.
Задание самостоятельной работы
В соответствии с индивидуальным вариантом, разработать тестовый сценарий и оценить количество необходимых тестов.
Перечень индивидуальных вариантов приведен в приложении В.
Контрольные вопросы
Разработка тестовых пакетов
Цель: получить навыки разработки тестовых пакетов
Форма отчета:
−выполнить задание;
−показать преподавателю;
−ответить на вопросы преподавателя.
Теоретические сведения
В ходе выполнения лабораторной работы провести тестирование по принципу «белого ящика».
Критерии покрытия кода:
• покрытие операторов — каждая ли строка исходного кода была выполнена и протестирована;
• покрытие условий — каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована;
• покрытие путей — все ли возможные пути через заданную часть кода были выполнены и протестированы;
• покрытие функций — каждая ли функция программы была выполнена;
• покрытие вход/выход — все ли вызовы функций и возвраты из них были выполнены;
• покрытие значений параметров — все ли типовые и граничные значения параметров были проверены.
Метод покрытия операторов
Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.
Метод покрытия решений (покрытия переходов)
Согласно методу покрытия решений каждое направление перехода должно быть реализовано, по крайней мере, один раз. Этот метод включает в себя критерий покрытия операторов, так как при выполнении всех направлений переходов выполнятся все операторы, находящиеся на этих направлениях.
Метод покрытия условий
Этот метод может дать лучшие результаты по сравнению с предыдущими. В соответствии с методом покрытия условий записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз.
Метод покрытия решений/условий
Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия выполнялись по крайней мере один раз, все результаты каждого решения выполнялись по крайней мере один раз и, кроме того, каждой точке входа передавалось управление по крайней мере один раз.
Недостатки метода:
• не всегда можно проверить все условия;
• невозможно проверить условия, которые скрыты другими условиями;
• недостаточная чувствительность к ошибкам в логических выражениях.
Метод комбинаторного покрытия условий
Критерий комбинаторного покрытия условий удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий.
Этот метод требует создания такого числа тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз.
Задание практической работы
Методика выполнения
Пример метода покрытия операторов
Если для тестирования задать значения переменных А = 2, В= 0, Х = 3, будет реализован путь АСЕ, т.е. каждый оператор программы выполнится один раз. Но если внести в алгоритм ошибки — заменить в первом условии and на or, а во втором Х > 1 на Х < 1, ни одна ошибка не будет обнаружена. Кроме того, путь ABD вообще не будет охвачен тестом, и если в нем есть ошибка, она также не будет обнаружена. В таблице ожидаемый результат определяется по блок-схеме а, а фактический — по б.
Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.
Таблица. Результат тестирования методом покрытия операторов
а) б)
Пример метода покрытия решений
Для программы, приведенной на рисунке выше, покрытие решений может быть выполнено двумя тестами, покрывающими пути {АСЕ, АBD}, либо {АСD, АBЕ}. Для этого выберем следующие исходные данные;
Таблица. Средний процент тестов, необходимых для обнаружения заданного процента ошибок (в зависимости от общего числа ошибок в программе)
Оказывается, что при N = 10 первые 22% тестов обнаружат половину всех ошибок (5 штук). Для того чтобы обнаружить две следующие ошибки, количество тестов придется увеличить в 1,7 раза — до 37%. Поиск следующих двух ошибок потребует увеличения количества тестов еще в 1,8 раза — до 66%. И наконец, поиск последней ошибки потребует оставшихся 34% тестов.
Чем больше ошибок в программе, тем дороже обойдется поиск последних ошибок. При N = 50 для обнаружения 50% ошибок достаточно 15% тестов, 70% ошибок будут найдены с помощью 26%, 90% ошибок — с помощью 49% тестов. Поиск последних 10% ошибок будет стоить дороже, чем поиск первых 90%!
При увеличении количества ошибок с 10 до 100 стоимость поиска последних 10% ошибок возрастает с 34% тестов до 66%.
Заметим, что речь идет не об абсолютном числе тестов, а о их доле. Поскольку программа, содержащая 100 естественных ошибок, скорее всего, сложнее программы, в которой ошибок только 10, есть основания полагать, что общее число тестов также будет возрастать. То есть придется брать больший процент от большего числа тестов
В следующей таблице N изменяется от 1 до 10. В этом случае говорить о процентах найденных ошибок смысла нет. Поэтому в боковике записаны не относительные, а абсолютные значения. Поскольку указанное количество ошибок вполне реально для учебных программ, интересно было сравнить модельные данные, приведенные в таблице, с реальными данными из практики. Надо только помнить, во-первых, что речь идет о средних значениях. А во-вторых, что данные в таблице получены из статистической модели. А статистика любит большие числа.
Таблица. Средний процент тестов, необходимых для обнаружения заданного количества ошибок (в зависимости от общего числа ошибок в программе)
Имея такие оценки относительного количества тестов, в конкретном проекте можно перейти к абсолютным величинам.
Поскольку нам известно, сколько тестов нам понадобилось для нахождения n ошибок, легко оценить, сколько понадобится для нахождения оставшихся. Если количество ошибок в программе оценено в 10 и для обнаружения первых пяти потребовалось, например, 7 тестов, то для поиска двух следующих ошибок количество тестов придется довести до 12 (5 дополнительных тестов на 2 ошибки), для поиска следующих двух — до 21 (9 дополнительных тестов на 2 ошибки). Все 10 ошибок есть надежда найти за 32 теста.
Подобные оценки можно использовать для планирования времени и ресурсов, выделяемых для процесса тестирования.
Задание практической работы
Методика выполнения
Разработка тестового сценария
Задача: Найти минимальный набор тестов для программы нахождения вещественных корней квадратного уравнения .
Решение:
Номер теста | a | b | c | Ожидаемый результат | Что проверяется |
1 | 2 | -5 | 2 | | Случай вещественных корней |
2 | 3 | 2 | 5 | Сообщение | Случай комплексных корней |
3 | 3 | -12 | 0 | | Нулевой корень |
4 | 0 | 0 | 10 | Сообщение | Неразрешимое уравнение |
5 | 0 | 0 | 0 | Сообщение | Неразрешимое уравнение |
6 | 0 | 5 | 17 | Сообщение | Неразрешимое уравнение |
7 | 9 | 0 | 0 | | Нулевые корени |
Таким образом для этой задачи предлагается минимальный набор функциональных тестов, исходя из 7 классов выходных данный.
Оценка необходимого количества тестов
Для задачи нахождения вещественных корней квадратного уравнения для нахождения 4 ошибок нам понадобилось 7 тестов.
Следовательно, легко оценить, сколько понадобится для нахождения оставшихся. Если количество ошибок в программе оценено в 4 и для обнаружения первых двух потребовалось, например, 4 теста, то для поиска двух следующих ошибок количество тестов придется довести до 10 (6 дополнительных тестов на 2 ошибки). Все 4 ошибки есть надежда найти за 10 тестов.
Задание самостоятельной работы
В соответствии с индивидуальным вариантом, разработать тестовый сценарий и оценить количество необходимых тестов.
Перечень индивидуальных вариантов приведен в приложении В.
Контрольные вопросы
-
Что такое тестирование? Что является объектами тестирования? -
Опишите виды тестирования. -
Поясните понятия «тест», «тестовые данные», «тестовый эксперимент».
Практическая работа №8
Разработка тестовых пакетов
Цель: получить навыки разработки тестовых пакетов
Форма отчета:
−выполнить задание;
−показать преподавателю;
−ответить на вопросы преподавателя.
Теоретические сведения
В ходе выполнения лабораторной работы провести тестирование по принципу «белого ящика».
Критерии покрытия кода:
• покрытие операторов — каждая ли строка исходного кода была выполнена и протестирована;
• покрытие условий — каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована;
• покрытие путей — все ли возможные пути через заданную часть кода были выполнены и протестированы;
• покрытие функций — каждая ли функция программы была выполнена;
• покрытие вход/выход — все ли вызовы функций и возвраты из них были выполнены;
• покрытие значений параметров — все ли типовые и граничные значения параметров были проверены.
Метод покрытия операторов
Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.
Метод покрытия решений (покрытия переходов)
Согласно методу покрытия решений каждое направление перехода должно быть реализовано, по крайней мере, один раз. Этот метод включает в себя критерий покрытия операторов, так как при выполнении всех направлений переходов выполнятся все операторы, находящиеся на этих направлениях.
Метод покрытия условий
Этот метод может дать лучшие результаты по сравнению с предыдущими. В соответствии с методом покрытия условий записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз.
Метод покрытия решений/условий
Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия выполнялись по крайней мере один раз, все результаты каждого решения выполнялись по крайней мере один раз и, кроме того, каждой точке входа передавалось управление по крайней мере один раз.
Недостатки метода:
• не всегда можно проверить все условия;
• невозможно проверить условия, которые скрыты другими условиями;
• недостаточная чувствительность к ошибкам в логических выражениях.
Метод комбинаторного покрытия условий
Критерий комбинаторного покрытия условий удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий.
Этот метод требует создания такого числа тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз.
Задание практической работы
Методика выполнения
Пример метода покрытия операторов
Если для тестирования задать значения переменных А = 2, В= 0, Х = 3, будет реализован путь АСЕ, т.е. каждый оператор программы выполнится один раз. Но если внести в алгоритм ошибки — заменить в первом условии and на or, а во втором Х > 1 на Х < 1, ни одна ошибка не будет обнаружена. Кроме того, путь ABD вообще не будет охвачен тестом, и если в нем есть ошибка, она также не будет обнаружена. В таблице ожидаемый результат определяется по блок-схеме а, а фактический — по б.
Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.
Таблица. Результат тестирования методом покрытия операторов
а) б)
Пример метода покрытия решений
Для программы, приведенной на рисунке выше, покрытие решений может быть выполнено двумя тестами, покрывающими пути {АСЕ, АBD}, либо {АСD, АBЕ}. Для этого выберем следующие исходные данные;