Experience-based Techniques

advertisement
Lecture 06
1/29/2016 11:31:00
AM
Техники тестирования.
Black Box testing и White Box. Explorative testing.
Существует множество техник тестирования: некоторые очень общие, другие наоборот узконаправлены.
Какие-то из них легко реализуются, другие же очень сложны.
Есть три наиболее важные техники тестирования, с которыми обязан быть знаком каждый тестер:
 Техника нацеленая на функциональность определённую в спецификациях или документированой
модели системы. Техника также известная как BlackBox (or specification-based)
 Техника нацеленая на написаный код. Техника также известная как WhiteBox (or structure-based)
 Техника основаная на опыте тестера – Experienced-based (explorative)
Черный ящик (Blackbox testing/Specification-based testing)
Основная идея в тестировании системы, как черного ящика состоит в том, что все материалы, которые
доступны тестировщику: требования на систему, описывающие ее поведение и сама система, работать с
которой он может только подавая на ее входы некоторые внешние воздействия и наблюдая на выходах
некоторый результат. Все внутренние особенности реализации системы скрыты от тестировщика, таким
образом, система и представляет собой «черный ящик», правильность поведения которого по отношению к
требованиям и предстоит проверить.
С точки зрения программного кода черный ящик может представлять с собой набор классов (или
модулей) с известными внешними интерфейсами, но недоступными исходными текстами.
Основная задача тестировщика для данного метода тестирования состоит в последовательной проверке
соответствия поведения системы требованиям. Важно понимать, что требования или спецификации не
определяют (и не должны определять) как система должна достигнуть желаемого поведения. В
спецификациях описывается желаемый результат, то что система должна делать. Описание же того «как»
система должна работать содержиться в описании архитектуры (design) системы. При тестировании чёрного
ящика проверяется именно «что» делает система.
Очень важно помнить, что не все системы созданы по чётким спецификациям. В некоторых случаях
спецификации отсутсвуют и тестеру приходится самостоятельно через общение с Project Manager’ом и
девелоперами составлять модель системы. И лишь затем эти модели используются как основа тестов.
Помимо проверки на соотвествие поведения документированым требованиям тестировщик должен
проверить работу системы в критических ситуациях – что происходит в случае подачи неверных входных
значений. В идеальной ситуации все варианты критических ситуаций должны быть описаны в требованиях на
систему и тестировщику остается только придумывать конкретные проверки этих требований. Однако в
реальности в результате тестирования обычно выявляется два типа проблем системы:
1. Несоответствие поведения системы требованиям
2. Неадекватное поведение системы в ситуациях, не предусмотренных требованиями.
Отчеты об обоих типах проблем документируются и передаются разработчикам. При этом проблемы
первого типа обычно вызывают изменение программного кода, гораздо реже – изменение требований.
Изменение требований в данном случае может потребоваться ввиду их противоречивости (несколько разных
Lecture 06
1/29/2016 11:31:00
AM
требований описывают разные модели поведения системы в одной и той же самой ситуации) или
некорректности (требования не соответствуют действительности).
Проблемы второго типа однозначно требуют изменения требований ввиду их неполноты – в
требованиях явно пропущена ситуация, приводящая к неадекватному поведению системы. При этом под
неадекватным поведением может пониматься как полный крах системы, так и вообще любое поведение, не
описанное в требованиях.
Тестирование черного ящика называют также тестированием по требованиям, т.к. это единственный
источник информации для построения тест-плана.
Белый ящик (WhiteBox/Structure based testing)
Во многих ситуациях тестирование поведения системы в целом невозможно – отдельные участки
программного кода могут никогда не выполняться, при этом они будут покрыты требованиями. Примером
таких участков кода могут служить обработчики исключительных ситуаций. Если, например, два модуля
передают друг другу числовые значения, и функции проверки корректности значений работают в обоих
модулях, то функция проверки модуля-приемника никогда не будет активизирована, т.к. все ошибочные
значения будут отсечены еще в передатчике.
В этом случае выполняется ручной анализ программного кода на корректность, называемый также
просмотрами или инспекциями кода. Если в результате инспекции выявляются проблемные участки, то
информация об этом передается разработчикам для исправления наравне с результатами обычных тестов.
Инспекции кода обычно проводятся специализироваными прогаммными инструментами.
Experience-based Techniques
Error guessing
Тестирование основаное на опыте позволяет тестировать неописаные детально в спецификациях области.
Наиболее важные области выявляются основываясь на опыте тестеров и/или пользователей системы и
покрывают области наиболее вероятные для появления ошибок. То есть определяются области возможные
для появления ошибок.
Такие области, например, могут быть заданы
 основываясь на опыте тестирования других продуктов слабые области продукта
 основываясь на списке заведомо существующих багов. Анализируется область затронутая багом и
область поиска новых ошибок расширяется вокруг этим известным багом.
Explorative testing
Экплоративное тестирование проводится в тех случаях когда спецификации неточны или отсутствуют и когда
присутсвует временое ограничение. Как и в Error guessing экплоративное тестирование во многом
основывается на опыте тестера. Отсутствует чёткий план или структурированый подход к тестам, но область
тестирования выявляется опытным путём: проводится поверхностная проверка какого-то компонента и
анализируя результат определяется необходимость более глубокого тестирования с применением
экплоративного подхода.
Download