Смекни!
smekni.com

Принципы и инструменты тестирования программных продуктов (стр. 1 из 4)

Государственный университет – Высшая Школа Экономики

Факультет бизнес-информатики

Реферат

на тему:

Принципы и инструменты тестирования программных продуктов

Выполнил:

Студент гр.171мУРПО

Реднев Н.С.

Проверил:

Авдошин С.М.

Москва, 2009

СОДЕРЖАНИЕ

Введение. 3

Концепция тестирования. 4

Планирование тестирования. 5

Организация тестирования. 7

Циклы тестирования. 7

Критерии тестирования и требования к ним.. 9

Системное тестирование. 13

Автоматизация тестирования. 14

Заключение. 15

Список литературы.. 17

Введение

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

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

Данный реферат и будет посвящен основным инструментам и принципам тестирования программного продукта.

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

Являясь одной из ключевых стадий разработки программного продукта, тестирование характеризуется достаточно большим вкладом в суммарную трудоемкость разработки продукта. Из практики известна оценка распределения трудоемкости между фазами создания программного продукта - 40%-20%-40%[1]. Данные цифры говорят о том, что наибольший эффект в снижении трудоемкости может быть получен прежде всего на стадиях разработки и тестирования продукта.

Концепция тестирования

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

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

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

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

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

A**3 = A*A*A

A*A*A = A -> R, A*R -> R, A*R -> R

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

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

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

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

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

Планирование тестирования

Тестовый план

Тестовый план - это документ, или набор документов, содержащий следующую информацию[4]:

· Тестовые ресурсы.

· Перечень функций и подсистем, подлежащих тестированию.

· Тестовую стратегию, включающую[5]:

1) Анализ функций и подсистем с целью определения наиболее слабых мест, то есть областей функциональности тестируемой системы, где появление дефектов наиболее вероятно.

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

3) Определение потребности в автоматизированной системе тестирования и дизайн такой системы

4) Расписание тестовых циклов

5) Фиксацию тестовой конфигурации: состава и конкретных параметров аппаратуры и программного окружения.

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

Типы тестирования

В тестовом плане определяются и документируются различные типы тестов. Типы тестов могут быть классифицированы по двум категориям: по тому, что подвергается тестированию (по виду подсистемы) и по способу выбора входных данных[6].

Ниже представлены типы тестирования по виду подсистемы или продукта:

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

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

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

Типы тестирования по способу выбора входных значений:

Функциональное тестирование, при котором проверяется:

· Покрытие функциональных требований.

· Покрытие сценариев использования.

Стрессовое тестирование, при котором проверяются экстремальные режимы использования продукта.

Тестирование граничных значений.

Тестирование производительности.

Тестирование на соответствие стандартам.

Тестирование совместимости с другими программно-аппаратными комплексами.

Тестирование работы с окружением.

Тестирование работы на конкретной платформе

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

Организация тестирования

Тестирование осуществляется на заданном заранее множестве входных данных X и множестве предполагаемых результатов Y – (X,Y), которые задают график желаемой функции[7]. Кроме того, зафиксирована процедура Оракул (oracle), которая определяет, соответствуют ли выходные данные – Yв (вычисленные по входным данным – X) желаемым результатам – Y, т.е. принадлежит ли каждая вычисленная точка (x,yв) графику желаемой функции (X,Y).

Оракул дает заключение о факте появления неправильной пары (x,yв) и ничего не говорит о том, каким образом она была вычислена или каков правильный алгоритм – он только сравнивает вычисленные и желаемые результаты. Оракулом может быть даже Заказчик или программист, производящий соответствующие вычисления в уме, поскольку Оракулу нужен какой-либо альтернативный способ получения функции (X,Y) для вычисления эталонных значений Y.

Циклы тестирования

В тестировании выделяются три основных уровня, или три фазы:

· Модульное тестирование.

· Интеграционное тестирование.

· Системное тестирование.