Автоматизация тестирования
Unit-тестирование
Модульное тестирование или юнит-тестирование (англ. unit testing) — процесс, позволяющий проверить корректность отдельных модулей исходного кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже написанных и оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
Хорошие юнит тесты:
● Автоматизированы
● Выполняются быстро: выполнение сотни или даже тысячи юнит-тестов должно занимать считанные секунды
● Написаны в рамках эффективного фреймворка
● Независимыми друг от друга
● Результат работы теста воспроизводим и повторяем
● Легко поддаются отладке
● Написаны автором кода
● Оставляют конфигурацию / окружение в неизменном состоянии
● Имеют высокое покрытие кода
● Поддаются хранению и сопровождению
● Тестируют как функциональность, так и аварийные ситуации
● Покрывают граничные значения входных параметров.
Эти тесты имеют и некоторые ограничения:
● Юнит-тестирование не находит все ошибки в коде: оно показывает только наличие ошибок, а не их отсутствие
● У юнит-тестирования ограниченные рамки: это тестирование «белого ящика»
● Юнит-тестирование не покрывает сценарии и интеграцию между компонентами
Одной из наиболее важных техник, которые позволяют создать хорошие юнит-тесты, является техника использование mock- объектов (mock objects). Mock-объект - это симуляция реального объекта там, где использование самого объекта невозможно или нарушает принципы юнит- тестирования, например когда реальный объект:
● предоставляет недетерминированные результаты (например текущее время или температуру)
● имеет трудно воспроизводимые состояния (например ошибка сети)
● медленный (например полная база данных или файл на диске)
● ещё не существует или может изменить поведение
● должен содержать информацию или методы, необходимые только для тестирования
Для большинства популярных языков программирования высокого уровня существуют инструменты и библиотеки модульного тестирования. Некоторые из них:
Для Java
● JUnit JUnit.org
● TestNG testNG.org
● JavaTESK UniTESK.ru
NUnit [1] — для языков платформы .NET: C#, Visual Basic .NET и др.
Для C
● CUnit cunit
● CTESK UniTESK.ru
● cfix cfix
● API Sanity Autotest — для динамических C/C++ библиотек в Unix-подобных ОС.
● Для Objective-C
● OCUnit [2]
Для C++
● CPPUnit [3]
● Boost Test [4]
● Google C++ Testing Framework [5]
● Symbian[6] — фреймворк для Symbian OS всех версий.
● API Sanity Autotest — для динамических C/C++ библиотек в Unix-подобных ОС.
Для PHP
● SimpleTest [12]
● PHPUnit [13]
Разработка тестов и тестирование выполняется по схеме рис. 41.
Рис. 41
Схема алгоритма тестирования приведена на рисунке 42.
Рис. 42
Тестирование интеграции
Это тестирование всей системы, при котором, в основном, выявляются ошибки интерфейса. Основные категории ошибок интерфейса:
● Потеря данных при прохождении через интерфейс;
● Отсутствие в модуле необходимой ссылки;
● Негативное влияние одного модуля на другой;
● Подфункции при объединении не выполняют требуемую функцию;
● Неточности интерграции выходят за допустимый уровень;
● Проблемы при работе с глобальными структурами данных.
Виды тестирования:
1) Нисходящее;
2) Восходящее.
Структура первого приведена на рис. 43. А второго – на рис. 44.
Рис. 43
Типы заглушек
A – трассирует сообщение;
B – выводит входные параметры;
C – возвращает значения из таблицы, заданного набора;
D – возвращает результат из таблицы для конкретного входного значения.
Рис. 44
Типы драйверов
A – вызывает подчиненный модуль;
B – посылает элемент данных (параметр) из внутренней таблицы;
C – отображает параметр из подчиненного модуля;
D – является комбинацией драйверов B и C.
Синтетические тесты на производительность СУБД
Они играют важную роль. Такие тесты называют TPC. Их целью является предоставление объективных данных о производительности системы. Для того, чтобы достичь этой цели, спецификации TPC регламентируют, чтобы тестировалась производительность систем, продуктов, технологий, отвечающих следующим требованиям:
● продукт должен быть доступен пользователям;
● продукт должен относиться к соответствующему сегменту рынка (обработка транзакций);
● при тестировании продукта должны быть обязательно воспроизведены действия некоторого числа пользователей этой системы.
Пример представления результатов тестирования приведен на рис. 45.
Рис. 45
Существует целый ряд систем тестирования, которые можно применять в учебных целях. К ним относятся
1) Selenium —инструмент для тестирования Web- приложений. Selenium - это Java-приложение, которое может анализировать файлы определенной структуры для того, чтобы находить в них команды для манипуляции браузером и команды для выполнения определенных действий и проверок. Selenium поддерживается Microsoft Internet Explorer, Google Chrome, Mozilla Suite и Mozilla Firefox для Microsoft Windows, Linux и Apple Macintosh.
2) IBM Rational TestManager и др.
Работа над ошибками происходит в соответствии со схемой рис. 46.
Система отслеживания ошибок (англ. bug tracking system) — прикладная программа, разработанная с целью помочь разработчикам программного обеспечения (программистам, тестировщикам и др.) учитывать и контролировать ошибки и неполадки, найденные в программах, пожелания пользователей, а также следить за процессом устранения этих ошибок и выполнения или невыполнения пожеланий.
Рис. 46
Средства Bug tracking
● Bugzilla
● Mantis
● Trac
● JIRA
● YouTrack
● StarTeam
● TUTOS
Дата добавления: 2016-07-05; просмотров: 1820;