1) Функциональное и регрессионное тестирование (functional and regression testing)
Функциональное тестирование – это тестирование функций приложения на соответствие требованиям. Оценка производится в соответствии с ожидаемыми и полученными результатами (на основании функциональной спецификации), при условии, что функции отрабатывали на различных значениях.
Регрессионное тестирование проводится с целью проверить, не влияют ли новые функции, улучшения и исправленные дефекты на существующую функциональность продукта.
Функциональное и регрессионное тестирование проводится на протяжении всего жизненного цикла приложения и может иметь различную степень покрытия.
Тестирование графического интерфейса пользователя предполагает проверку соответствия приложения требованиям к графическому интерфейсу, профессионально ли оно выглядит, выполнено ли оно в едином стиле.
В большинстве случаев, функциональное тестирование приложения осуществляется вместе со следующими видами тестирования графического интерфейса пользователя:
Тестирование на соответствие стандартам графических интерфейсов;
Тестирование локализованных версий: точность перевода, проверка длины названий элементов интерфейса и т.д.;
Тестирование графического интерфейса пользователя на целевых устройствах (для КПК-совместимых приложений).
3) Тестирование безопасности (security testing)
Тестирование безопасности представляет собой ряд услуг, от разработки политики безопасности до тестирования безопасности на уровне приложения, операционной системы и сетевой безопасности.
Тестирование безопасности может иметь различную степень покрытия:
Первичное тестирование безопасности;
Полное тестирование приложения;
Полное тестирование приложения и сервера.
В зависимости от степени покрытия тестирование безопасности может включать в себя следующие аспекты:
Тестирование контроля доступа — помогает обнаружить дефекты, в результате которых пользователи могут получать несанкционированный доступ к объектам и функциям приложения.
Тестирование авторизации пользователей — выявляет дефекты, связанные с авторизацией отдельных пользователей и групп пользователей и с проверкой их подлинности.
Тестирование валидации ввода — используется для проверки валидации данных сервером до того, как они попадают в приложение.
Тестирование надежности шифрования данных — используется для выявления дефектов, связанных с шифрованием и расшифровкой данных, использованием цифровых подписей и проверкой их подлинности.
Тестирование правильности обработки ошибок — включает в себя проверку таких аспектов, как вывод на экран фрагментов кода при ошибке, влияние ошибок на работу всего приложения и раскрытие излишней информации о сбое в работе.
Тестирование на переполнение буфера — выявляет ненадлежащее раскрытие данных.
Тестирование конфигурации сервера — помогает обнаружить ошибки в многопоточных средах, в результате которых данные могут быть повреждены или использованы совместно (например, переменные, совместно используемые разными потоками и приводящие к дефектам типа «time-of-check-time-of-use», некорректные шаблоны проектирования «Одиночка» (Singleton) и плохое построение кэша).
Для интернет-приложений при тестировании безопасности используются такие инструменты, как SQL-, html-, script-injection, перехват POST и редактирование GET данных.
Тестирование удобства пользования приложением определяет, соответствует ли приложение потребностям целевой аудитории и отвечает ли оно требованиям пользователя.
Мы тестируем приложение на соответствие основным принципам удобства пользования (например, время, затраченное на достижение цели, полученный результат, легкость доступа к нужной информации и т.д.).
При тестировании удобства пользования приложением во внимание принимаются следующие его аспекты:
Однородность;
Логика и структура;
Навигация.
5) Тестирование баз данных (database testing) Тестирование базы данных помогает обнаружить узкие места в производительности разрабатываемого приложения и проверить все механизмы, обеспечивающие целостность и конфиденциальность данных.
Тестирование базы данных разделяется на следующее типы:
А) Тестирование логической модели
- Проверка модели на логическую согласованность и отсутствие повторяющейся информации;
- Поиск возможностей для упрощения логической модели.
Б) Тестирование логической схемы базы данных
- Тестирование на соответствие нормальным формам (обычно третьей);
- Тестирование на согласованность базы данных (внешние ключи, ограничивающие условия, триггеры);
- Тестирование на избыточность данных.
В) Тестирование физической структуры базы данных
- Анализ и настройка покрытия индекса;
- Анализ системы хранения данных (группы файлов (MS SQL), настройка для увеличения производительности и надежности;
- Анализ политики безопасности и разработка предложений по ее улучшению (пользователи, роли, роли приложения, логины, интегрированные с операционной системой, хранимые процедуры);
- Анализ денормализации (при необходимости может быть проведена проверка потенциального прироста производительности и модификаций схемы базы данных);
- Анализ и реализация распределения базы данных;
- Анализ и реализация стратегии репликации;
- Анализ и реализация стратегии резервного копирования.
Г) Тестирование программируемости базы данных
- Анализ эффективности хранимых процедур и триггеров;
- Оптимизация запросов, настройка индекса для охвата определенных запросов;
- Анализ эффективности клиентского приложения.
6) Техническое тестирование (technical testing)
Техническое тестирование показывает способность приложения работать безопасно, эффективно и надежно в нормальных и пиковых условиях использования. Это тестирование больше затрагивает внутреннюю работу решения и требования, которые предъявляет к нему пользователь, чем соответствие функциональным требованиям.
Самыми распространенными типами таких тестов являются:
Тесты производительности (performance tests), которые заключаются в измерении характеристик различных бизнес-процессов и транзакций, критичных по времени, в условиях низкой нагрузки, но с реальным размером базы данных;
Нагрузочные тесты (load tests), которые представляют собой полные тесты производительности в условиях ожидаемой реальной нагрузки и служат для измерения характеристик различных бизнес-процессов и транзакций, критичных по времени;
Стресс-тесты (stress tests), которые помогают определить нагрузку, при которой происходит сбой в системе, и отследить, как это происходит;
Для разработки и проведения технических тестов используются различные инструменты. Их выбор зависит от архитектуры и среды разработки приложения, покрытия и содержания тестов.
7) Тестирование процедур установки и механизмов лицензирования (installation and licensing testing)
Тестирование процедуры установки продукта разделяется на несколько частей:
1) Формальное тестирование программы установки (графический интерфейс пользователя, общее удобство пользования, соответствие стандартам);
Тестирование документации осуществляется на этапе разработки требований к программному продукту после создания функциональных спецификаций. Этот тип тестирования помогает избежать логических дефектов и ненужных изменений в продукте до начала его фактической разработки. Он также позволяет сократить число обращений в службу поддержки благодаря улучшению пользовательской документации.
Тестирование документации охватывает следующие виды документов:
Функциональные спецификации;
Спецификации по графическому интерфейсу пользователя;
Руководства пользователя и онлайновые справочные системы.