AzoftБлогКак мы в Azoft занимаемся тестированием программного обеспечения

Как мы в Azoft занимаемся тестированием программного обеспечения

Илья Катаев Апрель 5, 2018

Тестирование программного обеспечения

Отказ от тестирования — это риски, которые трудно просчитать. Найденные после релиза баги могут отпугнуть пользователей, а вы потеряете время и деньги. Со стороны это не всегда очевидно, но контролировать качество продукта — важно. Для этого существует отдел тестирования.

Мы вспомнили три наших крупных проекта и на их примере рассказываем, чем именно занимаются наши тестировщики.

Первый проект: Android-приложение для логистической компании СДЭК. Второй: информационная система для тематического парка развлечений Любогород. Третий проект: конструктор сайтов для интернет-провайдера Электронный Город.

Как работает отдел тестирования

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

Мы используем связку из функционального и нефункционального тестирования. Каждый проект проверяем на соответствие требованиям и документации. Отдельно смотрим вёрстку и удобство использования (usability).

Функциональное и нефункциональное тестирование начинаются, когда часть функционала уже разработана. Рассмотрим на практике.

Проверка требований и составление тестовой документации

Как правило, мы тестируем проекты, которые разрабатываем. Требования для таких проектов передаёт заказчик или собирает наш отдел аналитики.

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

Мы определяем инструментарий и стратегию тестирования, чтобы составить тестовую документацию. В случае с проектами для Любогорода и СДЭКа это были чек-листы, но мы используем и другие виды документации. Её содержание и формат зависят от проекта, его особенностей, пожеланий заказчика.

Сначала мы проясняем требования, потом пишем документацию. Иногда выполняем эти действия параллельно. Например, для СДЭКа и Любогорода мы прояснили требования при составлении тестовой документации.

Тестирование

Обычно мы не ограничиваемся одним видом тестирования в процессе работы. Стараемся проводить комплексные проверки с комбинациями различных техник и подходов.

Функциональное тестирование

Все три проекта мы тестировали по чек-листам. Записывали, что проверяем, какие данные вносим и какое поведение ожидаем.

Функциональное тестирование

СДЭК мы тестировали и по юзкейсам. Это сценарии, по которым юзеры будут пользоваться приложением. Чтобы сделать юзкейсы наглядными, мы использовали XMind. Так мы визуализировали поведение системы и логику переходов.

Визуализация логики переходов

В процессе тестирования мы просматриваем базу данных проекта и вносим изменения. Тип БД определяет клиент, который будем использовать. Например, на проекте для Любогорода использовали HediSQL — клиент для MySQL.

Нефункциональное тестирование

Вёрстку на мобильных проектах проверяем на различных операционных системах, версиях ОС и мобильных устройствах с различными разрешениями экрана. Веб-приложения тестируем в разных браузерах и на разных операционных системах.

Для тестирования вёрстки мы обычно используем Developer Console в Chrome и Firefox Firebug Console в Firefox.

Нефункциональное тестирование

Мы всегда проверяем, что проект соответствует дизайну и макетам. Кроме этого мы сверяемся с руководствами Apple и Google по пользовательскому опыту и интерфейсу. Опыт тестировщика тоже важен: он может указать на ошибки в UX и помочь их исправить.

Для СДЭКа и Любогорода мы делали тестирование взаимодействия. Проверяли, как компоненты ПО взаимодействуют друг с другом, а разрабатываемая система — с другими системами.

В мобильных проектах мы часто тестируем API. Так можно проверить работу интерфейса взаимодействия в начале разработки проекта или отдельной фичи. Для этого в проектах для СДЭКа и Любогорода мы использовали Postman.

На всех трёх проектах нужно было убедиться, что взаимодействие сервера и клиента реализовано верно. Чтобы просматривать, перехватывать и редактировать запросы между сервером и клиентом мы использовали Fiddler. Так мы проверили, что на стороне клиента данные отображаются корректно.

Дополнительные виды тестирования

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

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

Чтобы протестировать необходимый сценарий, мы использовали Jmeter. Это инструмент для performance-тестирования от компании Apache. Мы подготовили тестовую среду, разработали сценарии в Jmeter и реализовали параллельный запуск на нескольких удалённых машинах.

Затем запустили тестирование и вместе с разработчиками следили за состоянием системы под нагрузкой. Для мониторинга использовали Zabbix. Искали ошибки, оптимизировали систему и тестировали по новой, пока результат не начал соответствовать заявленным требованиям. Результаты тестов мы сформировали в отчёт и предоставили заказчику.

Дополнительные виды тестирования

По итогам функционального и нефункционального тестирования мы завели задачи в таск-трекере. Там же описали баги и предложили улучшения.

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

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

Перед тем как сдать проект, мы проверяем работоспособность системы. Для этого проводим приёмочное или смоук-тестирование.

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

Заключение

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

Если вы заказываете у нас разработку, то наш внутренний отдел тестирования будет заниматься проектом. Не потребуется дополнительно отдавать контроль качества на аутсорс и ждать, пока подрядчики вникнут в детали проекта.

Комментарии

комментарии