Любой маломальски опытный QA-инженер (или в простонародье тестировщик) сможет сходу назвать пяток различных видов тестов: удобство пользователя, дымовое, нагрузочное, регрессионное, конфигурационное, тестирование взаимодействия и т.д. Какие-то виды тестирования используются редко, например нагрузочное, почаще применяется тестирование удобства пользователя, о таких экзотических видах, как конфигурационное тестирование или тестирование взаимодействия, многие вообще слышали только в книгах Канера и Фолка «Тестирование программного обеспечения» и никогда не использовали в работе. Но есть вид тестирования, про который можно сказать совершенно четко: его делал каждый. Я говорю о регрессионном функциональном тестировании. Этот вид теста, пожалуй, является одним из наиболее важных, нудных и трудоемких.

Всю суть регрессионного функционального тестирования передает картинка:



Обычно для проведения регрессионного тестирования пишут тест-кейсы, в которых пошагово описывают последовательность действий для проверки той или иной функциональности. Но работать с тестовой документацией довольно сложно (само составление сценариев отнимает чертовски много времени), а в ситуации часто изменяющихся требований проводить регрессионный анализ по тест-кейсам и вовсе нецелесообразно. Прежде всего из-за того, что на их актуализирование может уходить до 50% от времени тестирования. Из-за этого качество регрессионного тестирования ухудшается: тест-кейсы перестают обновляться и через какое-то время (несколько релизов) у команды тестировщиков остается куча старых сценариев, которым место в корзине.

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

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



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

Оптимальным инструментом, сочетающим в себе плюсы тест-кейсов и чек-листов, на мой взгляд, является MindMap (или альтернативное русское название интеллект-карта). Почему именно эта технология? Мозг плохо воспринимает информацию в виде текстов, списков и таблиц, намного естественнее и проще сознанию усваивать информацию, которая основана на ассоциациях, задействует иерархическое мышление, визуализирована. Вот, пример интеллект-карты



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

На вопрос «зачем MindMap аналитикам?» можно ответить так: отпадает необходимость писать подробные постановки задач для проектов с часто меняющимися требованиями. Достаточно поддерживать карту контроля актуальной, добавлять в нее новые ветки с описанием и удалять из карты функциональность, которая больше не используется. Аналитик сможет охватывать весь функционал разрабатываемого продукта. Отпадет необходимость заводить задачи и указывать все, что нужно проверить, так как актуальная MindMap будет содержать нововведения (поверьте, поддерживать MindMap легко). К тому же и аналитик, и менеджер проекта будут уверены в том, что все, что занесено в схему будет проверено (в противном случае можно дать этой картой по лбу тестировщику, если он не проверил какие-то пункты, а в них выявились ошибки).
Разработчики тоже извлекут из интеллект-карты пользу. Благодаря взаимосвязям на карте программист поймет, на каком уровне вложенности дерева ему нужно вносить изменения в код и на что это может повлиять.

Основные преимущества интеллект-карт получают QA-инженеры, а именно:
• удобная статистика: с MindMap можно сказать со уверенностью, какие именно компоненты продукта уже проверялись, а какие все еще нуждаются в проверке;
• надежность тестирования: можно очень долго тестировать приложение, но так и не убедиться в том, что проверено действительно все. Постоянно актуализированная MindMap, охватывающая весь функционал, позволит минимизировать риски по пропуску ошибок;
• полный охват картины тестирования: из постановок неясно какой процент требований реализован, какая информация неактуальна, что будет реализовано в будущем. Тестировщику, который знаком с проектом, проще войти в курс дела, не перечитывая постановки и задачи;
• иерархическая система интеллект-карты удобна своей наглядностью. Правка кода, соответствующего одной ветки наглядно показывает каких дочерних веток коснутся изменения – их и нужно будет проверять в первую очередь.

Ранее на Хабре в статье «В чем нарисовать MindMap? Детальный обзор 6 самых популярных программ для рисования mindmap» были описаны наиболее популярные утилиты для построения интеллект-карт. На мой взгляд самой удобной является Xmind. Даже бесплатная версия обладает хорошим набором компонент для построения удобной интеллект-карты. Ниже будет приведен краткий обзор функций, которые были использованы мною в работе.

Заметки
Чтобы описать какой-нибудь пункт плана в Xmind можно использовать систему заметок. Добавление заметок бывает удобно для хранения «паролей и явок», списка действий для проверки нужного пункта (не путать с тест-кейсом). Ниже приведен пример использования заметок.



Изображения
Функционал добавления фотографии к пункту интеллект-карты удобен в тех случаях, когда нужно визуализировать изменения в конкретной области. Например, изменение логотипа с одного на другой (изображение нового лого целесообразно прикрепить к пункту карты). Пример того как выглядит вложенное в пункт плана изображение ниже.



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



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



Ведение версионности
Чтобы идентифицировать новую функциональность на интеллект-карте, целесообразно указать версионность. Т.е. добавить пункт карты (по сути являющийся функционалом) и указать версию ПО, куда вошел данный функционал. При проверке новых фич сделать фильтр по «версии», и на карте будут подсвечены только те пункты, которые относятся к выбранной версии.



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

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

Комментарии (8)


  1. Marazmatik
    21.07.2015 15:33
    -1

    спасибо, за то что вернули меня в 2007


    1. SirArhey Автор
      22.07.2015 08:30

      Гхм, несколько не понимаю сути вашего коммента. Причем здесь 2007 год? Это отсылка к году, когда уже использовали MindMap (вы или кто-то другой) в тестировании или троллинг-мем «где мой 2007 год», когда была трава зеленее, музыка громче, статьи интереснее и т.д.?


      1. Marazmatik
        22.07.2015 10:28

        Несколько не понимаю где он «Новый взгляд»? Что тут нового?

        P.S. В какой-то момент времени вам не хватит сил тащить несколько карт одновременно и вы придете к тому, чтобы использовать TMS. Не знаю как сейчас, но раньше xmind не умел поддерживать версии карт, а значит вы не сможете увидеть какая ситуация была в X билде и что именно изменилось.


        1. SirArhey Автор
          22.07.2015 13:54
          +2

          По поводу названия «Новый взгляд...». Оно обосновано тем, что мне хотелось посмотреть на использование интеллект-карт с новой стороны. В основном, используют MindMap разные категории людей: дизайнеры для придумывания концепций, бизнес-тренеры для презентаций, менеджеры для составления планов. А вот о том, как можно использовать интеллект-карты в тестировании как-то слышать не довелось, отсюда идея написания статьи.

          По поводу «времени и сил». Вы отчасти правы. Если решить создать MindMap для готового и давно разрабатываемого проекта, то скорее из этого ничего не выйдет. Согласен, не хватит сил и времени. Но если вводить использование интеллект-карт на начальных стадиях проекта, то «тащить» карту несложно. Ну что стоит перед каждым релизом добавить десяток новых веток и убрать/переписать пару старых?

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

          Однако, резюмировать бы я хотел так: MindMap для небольших проектов чудо как хорош. Для больших проектов с регулярными билдами MindMap будет не так полезен, возможно нужно рассмотреть что-то другое.


          1. Marazmatik
            22.07.2015 14:46

            Про использовании майнд мапов на конфах по тестированию не рассказывал только ленивый, собственно отсюда и стебный коммент :)

            По поводу остального я с Вами согласен :)


  1. SpooNesT
    22.07.2015 13:36

    1. что с совместной работой?
    2. что с производительностью, когда карта становится огромной?



    1. SirArhey Автор
      22.07.2015 14:20
      +1

      Про совместную работу. Подразумевается работа нескольких тестировщиков и аналитиков над одной картой в режиме реального времени? Увы, совместная работа не предусматривается, все-таки это не Google Docs. Как я писал выше, MindMap скорее удобен для небольших и средних проектов, с которыми справится один человек. Но есть у нас проект достаточно объемный, который тестируют два человека. Мы разбиваем интеллект карту на несколько частей (можно либо на несколько файлов, либо на несколько страниц как в Excel). Каждая часть — это отдельная большая функциональность (и даже приложение, если проект состоит из нескольких приложений). Два человека делят между собой эти части и отмечают там информацию и тестировании.

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

      Надеюсь ответил на ваш вопрос.


      1. SpooNesT
        22.07.2015 14:40

        Да, спасибо