Разработка тестового сценария. Оценка необходимого количества тестов Цель
![]()
|
Разработка тестового сценария. Оценка необходимого количества тестов Цель: усвоить знание о видах тестирования; освоить способы обнаружения и фиксирования ошибок. Научиться оценивать необходимое количество тестов. Форма отчета: −выполнить задание; −показать преподавателю; −ответить на вопросы преподавателя. Теоретические сведения Разработка тестового сценария Software Configuration Management или Конфигурационное управление подразумевает под собой комплекс методов, направленных на то, чтобы систематизировать изменения, вносимые разработчиками в программный продукт в процессе его разработки и сопровождения, сохранить целостность системы после изменений, предотвратить нежелательные и непредсказуемые эффекты, а также сделать процесс внесения изменений более формальным. К процедурам можно отнести создание резервных копий, контроль исходного кода, требований проекта, документации и т. д. Степень формальности выполнения данных процедур зависит от размеров проекта, и при правильной ее оценке данная концепция может быть очень полезна. Конфигурационное управление требует выполнения множества трудоемких рутинных операций. На практике, в большинстве случаев, для конфигурационного управления применяются специальные системы контроля версий исходного кода программ. В качестве примера рассмотрим информационную систему Subversion. Это бесплатная система управления версиями с открытым исходным кодом. Subversion позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени. Это позволяет восстановить более ранние версии данных, предоставляет возможность изучить историю всех изменений. Заповеди по отладки программного средства, предложенные Г. Майерсом. Заповедь 1. Считайте тестирование ключевой задачей разработки ПС, поручайте его самым квалифицированным и одаренным программистам, нежелательно тестировать свою собственную программу. Заповедь 2. Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы. Заповедь 3. Готовьте тесты как для правильных, так и для неправильных данных. Заповедь 4. Документируйте пропуск тестов через компьютер, детально изучайте результаты каждого теста, избегайте тестов, пропуск которых нельзя повторить. Заповедь 5. Каждый модуль подключайте к программе только один раз, никогда не изменяйте программу, чтобы облегчить ее тестирование. Заповедь 6. Пропускайте заново все тесты, связанные с проверкой работы какой-либо программы ПС или ее взаимодействия с другими программами, если в нее были внесены изменения (например, в результате устранения ошибки). Оценка необходимого количества тестов Сколько тестов понадобится, чтобы обнаружить ошибки? Для ответа на этот вопрос предлагается следующая модель. Утверждается, что вероятность успешности очередного теста зависит от процента оставшихся ошибок. Последние ошибки обнаружить сложнее. (Заметим, что данное утверждение вполне соответствует опыту.) Пусть Tn — среднее количество тестов, необходимых для обнаружения n ошибок, N — число ошибок в программе. Для оценки Tn предлагается следующая формула: ![]() Здесь α — некий коэффициент, значение которого надо определять экспериментально. Но мы заниматься этим не будем, поскольку формула для вычисления Tn будет интересовать нас не сама по себе, а лишь как база для последующих рассуждений. Мы хотим оценить количество тестов, которое потребуется для нахождения всех N ошибок. Посчитать напрямую Tn мы не можем, поскольку не знаем коэффициента α. Чтобы исключить его из вычислений, перейдем от абсолютных величин к относительным. Попробуем оценить, какую часть от всех необходимых тестов придется выполнить для того, чтобы найти первые n ошибок ![]() Теперь осталось подставить в формулу для P конкретные значения N и n. Результаты — очень интересные — представлены в таблицах. В первой таблице N изменяется от 10 до 100, во второй таблице — от 1 до 10. Последняя таблица построена специально для новичков, программы которых настолько малы по размерам, что в них просто не найдется места для сотни ошибок. Таблица. Средний процент тестов, необходимых для обнаружения заданного процента ошибок (в зависимости от общего числа ошибок в программе) ![]() Оказывается, что при 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 классов выходных данный. Оценка необходимого количества тестов Контрольные вопросы Что такое тестирование? Что является объектами тестирования? Опишите виды тестирования. Поясните понятия «тест», «тестовые данные», «тестовый эксперимент». |