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

 

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