Мегаобучалка Главная | О нас | Обратная связь


Понятие тестирование. Перечислите экономические аспекты тестирования.



2019-08-13 339 Обсуждений (0)
Понятие тестирование. Перечислите экономические аспекты тестирования. 0.00 из 5.00 0 оценок




Вопрос 27

▪ Для того чтобы процесс тестирования имел оправданную с экономической точки зрения трудоемкость, необходимо заранее выработать ряд стратегий. Две наиболее распространенные из них — это тестирование методом “черного” и “белого” ящиков.

 

Одной из важнейших стратегий тестирования является тестирование методом черного ящика (black-box testing), которое также называют тестированием, управляемым данными (data-driven testing), или тестированием, управляемым входам и выходом (input/output-driven testing). В соответствии с этим методом программа рассматривается как “черный ящик”, внутреннее поведение и структура которого не имеют никакого значения. Вместо этого все внимание фокусируется на выяснении обстоятельств, при которых поведение программы не соответствует спецификации.

▪ При таком подходе тестовые данные выбираются исключительно на основе спецификации требований

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

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

▪ Исчерпывающее тестирование такой программы потребовало бы создание тестов для всех возможных треугольников с целочисленными сторонами, длина каждой из которых не превышает наибольшего целого числа, допустимого в используемом языке программирования. Количество таких тестов выражается астрономическим числом, но и они не образуют исчерпывающего набора. Они не обнаружат ошибку, если программа сопоставит тройке значений -3, 4, 5 неравносторонний треугольник, а значениям  равносторонний. Уверенность в обнаружении всех ошибок подобного рода может дать лишь тестирование с использованием не только всех допустимых входных значений, но и всех возможных значений. Для этого требуется выполнить практически бесконечное количество тестов, что, 1счно же, нереально.

Таким образом выполнить исчерпывающее входное тестирование невозможно. Отсюда следуют два важных вывода.

▪ Во-первых, никакое тестирование не может гарантировать отсутствие ошибок в программе.

▪ Во-вторых, при тестировании программного обе­спечения невозможно игнорировать экономические факторы.

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

В стратегии тестирования методом белого ящика (white-box testing), называемой также тестированием, управляемым логикой программы (logic driven testing), разрешается исследовать внутреннюю структуру программы. Исходя из этой стратегии, тестировщик подбирает тестовые данные путем анализа логики программы (к сожалению, нередко забывая обращаться к ее спецификации).

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

Однако, количество уникальных путей выполнения в программе может выражаться астрономическим числом.

▪ Рассмотрим граф потока управления программы, изображенный на рис. Пусть для определенности граф описывает программу, состоящую из 10-20 инструкций, в числе которых есть и цикл , который выполняется до 20 раз. Внутри цикла имеется набор вложенных инструкций IF. Определение количества уникальных логических путей выполненияинструкций равносильно определению суммарного количества уникальнмх путей, по которым можно перейти из точки а в точку Ь (все зонные переходы предположительно независимы). В нашем случае количество логических путей составляет порядка 1014, т.е. примерно 100 трилли­онов. Это число получается в результате суммирования ряда 520 + 519 +... +51, где 5 — количество путей, проходящих через тело цикла.

▪ Если допустить, что на составление, выполнение и проверку результатов каждого теста тратится по пять минут, то на выполнение всех тестов уйдет около 1 миллиарда лет. Если работать энергичнее и выполнять каждый тест всего за одну секунду, то справиться с этой задачей можно будет за 3,2 миллиона лет.

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

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

▪ Во-первых, исчерпывающее тестирование путей никоим образом не га­рантирует, что программа соответствует спецификации..

▪ Во-вторых, причиной некорректности программы могут быть отсут­ствующие пути. Совершенно очевидно, что исчерпывающее тестирование путей не позволит обнаружить отсутствие части необходимых путей.

▪ В-третьих, исчерпывающее тестирование путей не может обнаружить оши­бок, обусловленных чувствительностью алгоритма к данным (data-sensitivity errors).

▪ Несмотря на декларируемое превосходство исчерпывающего входного тестирования(«черный» ящик) по сравнению с исчерпывающим тестированием путей («белый» ящик), ни одна из этих стратегий не может быть полезной в силу невозможности их реализации. В связи с этим возникает вопрос. А нельзя ли попытаться создать некую разумную, пусть даже и не идеальную, стратегию тестирования, которая вобрала бы в себя все лучшее, что содержится в методах “черного” и «белого” ящиков?



2019-08-13 339 Обсуждений (0)
Понятие тестирование. Перечислите экономические аспекты тестирования. 0.00 из 5.00 0 оценок









Обсуждение в статье: Понятие тестирование. Перечислите экономические аспекты тестирования.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (339)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)