Особенности тестирования приложений в условиях гибкой разработки

Автор: Ярыгина Е.В.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 11-2 (27), 2018 года.

Бесплатный доступ

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

Тестирование, гибкая разработка, автотестирование, unit-тесты

Короткий адрес: https://sciup.org/140280478

IDR: 140280478

Текст научной статьи Особенности тестирования приложений в условиях гибкой разработки

Большинство гибких методологий разработки программного обеспечения (ПО) нацелены на минимизацию рисков чрезмерных затрат на приложение посредством разработки в рамках коротких итераций. Одним из главных принципов гибкой стратегии является возможность быстрого реагирования на возможные изменения, нежели стремление положиться на долгосрочное планирование. Именно поэтому при планировании тестирования в условиях гибкой разработки необходимо учитывать возможные риски в плане бюджета и правильно распределять усилия [5].

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

Проблемы тестирования ПО в условиях гибкой разработки

Если рассматривать работу команды тестирования при работе по принципам Scrum [1], можно выделить несколько основных видов деятельности, в которых постоянно должны принимать участие тестировщики, чтобы придерживаться методологии и поддерживать процесс разработки:

  •    участие в Scrum-активностях (дейли, планинг, ретро) [1];

  •    поддержка юнит-тестирования (если оно применяется);

  •    тестирование пользовательских историй;

  •    сотрудничество с заказчиком и владельцем продукта для определения критериев приема продукта;

  •    поддержка автоматического тестирования (если оно применяется).

В то же время существует несколько особенностей гибкой методологии, которые вызывают определенные сложности для команды тестирования:

  •    необходимо обязательно оценивать все задачи, которые команда берет в одну итерацию на сложность со стороны тестирования;

  •    тестировщик должен постоянно следить за требованиями, поскольку они могут постоянно изменяться;

  •    необходим частый регресс в связи с частыми изменениями в коде;

  •    нужно одновременно планировать тестирование и выполнять тесты;

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

Анализ способов документирования процесса тестирования

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

Тест-кейсы - это четко прописанные сценарии с шагами, которые обычно представляют собой структуру: шаги, данные, ожидаемый результат. Если ожидаемый результат не совпадает с фактическим, тест-кейс считается не выполненным и заводится отчет об ошибке. Тестирование по предварительно написанным тест-кейсам гарантирует полное покрытие задачи сценариями, но занимает много времени - на объемную задачу понадобится написать 10-15 тест-кейсов. В случае если какая-то часть требований изменится, например , название лейбла, который был упомянут в 10 тест-кейсах, придется потратить немалое количество времени на исправление сценариев. Тестирование по тест-кейсам подойдет проекту, на котором не более 4 команд и нет большого и разнообразного функционала.

В свою очередь, тестирование по чек-листам имеет ряд преимуществ -в чек-листе  прописывается  список проверок, которые необходимо выполнить для задачи с конкретным результатом каждой из них. Иногда чек-листы тоже можно поделить, например, написать по одному чек-листу на каждую форму, реализуемую в рамках задачи. Таким образом, чек-листы занимают немного времени для написания, но покрывают не весь функционал задачи. Они гарантированно предотвратят критичные баги, но минорные остаются на внимательность тестировщика. Тестирование по чек-листам подходит для больших проектов, на которых задействовано 5 и более команд, либо функционал разрабатываемого приложения очень разнообразен.

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

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

Регрессионная модель приложения

Регрессионная модель приложения - это набор определенного пула систематизированных тест-кейсов, покрывающих всю функциональную и интеграционную составляющую приложения [7]. Наличие регрессионной модели является одним из важнейших факторов успешного тестирования при гибкой разработке. Регрессионная модель поможет быстро понимать состояние системы после установки масштабных изменений и менее болезненно переживать изменения больших частей старого функционала. Важно понимать, что регрессионная модель должна закладываться в самом начале проекта и поддерживаться в актуальном состоянии на всем его протяжении.

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

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

Проблемы автоматизированного тестирования в условиях гибкой разработки

Использование автотестирования на проекте с гибкой разработкой зачастую помогает значительно сократить время на регрессионное и приемочное тестирование. Также возможно использование unit-тестов. Unit-тестирование – процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы [3]. Обычно unit-тесты пишут разработчики, тестировщики только могут систематизированно их поддерживать, т.е. разделять по функционалу и помогать с повторным использованием уже существующих тестов. Использование unit-тестирования позволяет отсечь множество критичных багов уже на этапе написания кода [6].

Кроме unit-тестов, можно использовать GUI-автотесты. GUI-автотесты – это автоматизированное ПО, которое позволяет тестировать приложения через графический пользовательский интерфейс. Такое тестирование имеет несколько плюсов: во-первых, приложение тестируется тем же способом, которым его будет использовать человек, во-вторых, можно тестировать приложение, не имея при этом доступа к исходному коду. Идеальный вариант, это покрытие регрессионной модели GUI-автотестами. При таком варианте, в случае любого крупного изменения не нужно тратить около 4 часов на ручной прогон 15 сценариев, а можно просто запустить автотесты, которые через час дадут однозначный ответ, были ли задеты другие части приложения.

Для оценки рентабельности автотестирования на проекте существуют специальные стратегии, например, “Do pilot” [4]. Как видно из графика на рисунке 2, использование автоматизации дает лучшие результаты при тех же затратах. Но данный график будет актуальным только при автоматизации тестирования больших проектов (общая команда проекта ~100+ человек или более 5 команд), поскольку только в данном случае экономия от использования автоматизации может оправдать и окупить расходы на ее

Рисунок 2 – Рентабельность автоматизации тестирования

Заключение

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

Список литературы Особенности тестирования приложений в условиях гибкой разработки

  • Сазерленд Д. Scrum. Революционный метод управления проектами. -Москва: Манн, Иванов и Фербер, 2017.
  • Юнит-тестирование [Электронный ресурс] - режим доступа: https://habr.com/post/169381
  • Методологии тестирования ПО [Электронный ресурс] - режим доступа: https://xbsoftware.ru/blog/metodologii-testirovaniya-po-kakuyu-vybrat
  • Как автоматизировать тестирование [Электронный ресурс] - режим доступа: http://software-testing.ru/library/testing/testing-automation/2938-desktop-testing
  • G. J. Myers, C. Sandler and T. Badgett, The art of software testing. John Wiley & Sons, 2011.
  • E. Daka and G. Fraser, A survey on unit testing practices and problems, Software Reliability Engineering (ISSRE), 2014 IEEE 25th International Symposium on. IEEE, 2014.
  • Тестирование. Фундаментальная теория [Электронный ресурс] - режим доступа: https://habr.com/post/279535
Статья научная