Автоматизация тестирования
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
Автоматизация сопровождения
Среда сопровождения
● Информационные системы;
● Базы знаний;
● Часто задаваемые вопросы (FAQ);
● Механизмы обновления;
● Системы учета ошибок;
● Системы сбора запросов на сопровождение;
● CRM.
Служба технической поддержки или техподдержка (Technical support, Helpdesk, Service desk) — сервисная структура, разрешающая проблемы пользователей с компьютерами (как аппаратным, так и программным обеспечением) и оргтехникой. Важной функциональной составляющей является ITIL (библиотека инфраструктуры информационных технологий), позволяющая выявить проблемные участки инфраструктуры ИТ и оценить эффективность работы подразделения ИТ.
На больших предприятиях или в крупных компаниях-аутсорсерах служба технической поддержки часто организована по следующему многоуровневому принципу:
● Пользователь — обращается с вопросом в службу поддержки по телефону или с помощью электронной заявки (электронная почта, или специальные сервисы подачи заявок, например fastAdmin).
● Оператор (1-я линия поддержки, Call-center) — регистрирует обращение, при возможности помогает пользователю самостоятельно, либо эскалирует (передаёт и контролирует выполнение) заявку на вторую линию поддержки.
● Вторая линия поддержки — получает заявки от первой линии, работает по ним, при необходимости привлекая к решению проблемы специалистов из смежных отделов (системные администраторы, поддержка POS-терминалов, поддержка специального ПО, поддержка специального оборудования, администраторы биллинговой системы и т. д.).
Примеры Баз знаний
● Механизм Wiki
● HELP-файлы в Windows
● Info, man — страницы в Unix/Linux
Система управления взаимоотношениями с клиентами (CRM, CRM-система, сокращение от англ. Customer Relationship Management) — прикладное программное обеспечение для организаций, предназначенное для автоматизации стратегий взаимодействия с заказчиками (клиентами), в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путём сохранения информации о клиентах и истории взаимоотношений с ними, установления и улучшения бизнес- процессов и последующего анализа результатов.
CRM — модель взаимодействия, полагающая, что центром всей философии бизнеса является клиент, а основными направлениями деятельности - меры по поддержке эффективного маркетинга, продаж и обслуживания клиентов. Поддержка этих бизнес-целей включает сбор, хранение и анализ информации о потребителях, поставщиках, партнёрах, а также о внутренних процессах компании. Функции для поддержки этих бизнес- целей включают продажи, маркетинг, поддержку потребителей.
Средства CRM
● SugarCRM
● Vtiger
● DeskWork
● 1C:CRM
● MS Dynamics CRM
● Terrasoft CRM