В прошлых публикациях (первая и вторая) рассмотрели основные понятия про качество, четырехуровневый процесса управления и обеспечения качества, увидели что требования и качества тесно связаны друг с другом, попробовали получить ответы на вопросы какое мышление должно быть у команды для встраивания качества в продукт? Какая на продукте пирамида тестирования? Как ускорить получение обратной связи при разработке программного обеспечения?

Отлично. Разобрались, осознали и приняли мышление Test-First, концепцию Shift Left Testing, определили пирамиду тестирования. Теперь возничкает вопрос, а как начать качественно генерировать качественные тест кейсы?

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

Шаблон для описании бизнес фич
Шаблон для описании бизнес фич

Такое описание фичи, позволяет сделать работу с ней понятной всем заинтересованным сторонам - клиенту, РО, разработке, тестированию, бизнесу.

Дальше фича должна быть разобрана на User Story и специальные story, которые направлены на исследования, архитектуру, или инфраструктуру. User Story - это основное средство выражения необходимой функциональности. Причем user story должны быть сфокусированы на ценности для клиента. т.е. не надо писать user story ради user story. Писать User Story лучше так же писать по шаблону - Как (роль), Я хочу (активность), чтобы (бизнес ценность). Описывая User Story с использованием шаблона, мы получаем кто или что фигурирует в user story, что будет происходить и, конечно же, какую ценность мы получаем, реализуя эту User Story.

User Story должна иметь INVEST критерии приемки
User Story должна иметь INVEST критерии приемки

При описании User Story лучше рукодствоваться принципами INVEST. При этом и критерии приемки User Story должны быть описаны по принципам INVEST.

  • Пишем User Story, которые можно разрабатывать отдельно

  • Пишем User Story, о рамках которых можно договориться

  • Пишем User Story, которые ценны заказчику

  • Пишем User Story, которые можно оценить

  • Пишем User Story, которые можно решить за одну итерацию

  • Пишем User Story, которые тестируемы.

А теперь, когда удалось расписать несколько User Story, давайте посмотрим на критерии приемки. Критерий приемки можно рассматривать как примлемое поведение системы при завершении истории. Но как система будет себя вести в разных ситуациях? Каким должно буть поведение, чтобы критерии приемки соблюдались? Чтобы получить ответ на этот вопрос есть можество способов, но один из самых действенных - это анализ поведения системы с разных точек зрения. Понимание поведения предполагает рассмотрение этого поведения с множества точек зрения. Причем только когнитивно различные точки зрения (мышлений) могут способствовать лучшему пониманию. РО (Клиент) - что хотелось бы сделать? Разработчик - как это технически реализовать? Тестировщик - как сделать все стабильным?

Работая над фичей, User Story, троица (или триада или три амиго), начинают генерировать, так называемые, сценарии и Use Case-ы. Один сценарий - одно поведение системы. И таких сценариев может быть много.

У сценариев так же есть свой формат описания. Один из самых распрастраненных - Дано, когда, тогда (Given, When, Then). Но существуют и другие варианты описания сценариев, главное, чтобы было начальное состояние, действие и финальное состояние.

Давайте рассмотрим небольшой пример. User Story - Установка круиз контроля. Критерий приемки возьмем пока один - Скорость машины должна быть близка к установленной скорости.

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

Сценарии могут появиться и при рассмотрении use case-ов.

Есть еще методы генерации сценариев - CRC карты, динамические модели, модели состояний, применение персон и т.д.

После того как записаны все сценарии, их надо превращать в тесты. Критерии приемки (и соответсвенно сценарии) определяют приемлемое поведение системы. Тесты приемки унаследованы от критериев приемки и определяют конкретные pass/fail поведения.

Тесты приемки
Тесты приемки

Как видно из примера, к сценариию добавились pass\fail данные. И появился первый тест. Тест, который был сформирован из критериев приемки. Тест, который практически написан на Gherkin. Gherkin имеет разные формы представления.

Разные формы представления
Разные формы представления

Используя эти Gherkin BDD тесты в связке с Cucumber или FitNess, получим хорошую автоматизацию, которая будет покрывать значительную часть требований к функционалу продукта.

Но надо понимать и осозновать, что как BDD так и TDD не внедряются по щелчку пальцев.

Для этого нужно менять процессы и внедрять еще и пракатику. О том, как это можно организовать, описано в статье.

Резимируя хочется сказать, что в статье описан один из подходов к генерации мощной базы автоматизированных тестов. Но есть множество нюансов и подходов при разработке е2е тестов, UI тестов, в определении SUT (System Under Test) и т.д.

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


  1. Myclass
    19.12.2021 17:47

    Так как качество и требования тесно связаны, то логично предположить, что тест кейсы можно сгенерировать из требований

    Как-то всё поверхностно и сильно обобщающе. Как какой-то фокус-покус, но обещаний успех. Требования бывают функциональными и нефукциональными. И те и другие под один знаменатель трудно подвести. А есть и другие, как технология, среда разработки итд. Посмотрите на разработку Boing 737 Max. Там этих тестов было не мало. Но весь проект был изначально неправильно начат и приведён в действие.

    А в последнее время качеству вообще мало кто уделяет внимание. Нет, на словах - все за. И как-бы и тесты вроде делаются, после каждого деплоя всё встаёт. Стабильную архитектуру никто в агильных проектах не сможет сделать в спринтах, а по другому никто вообще не собирается с этим начинать....


  1. anonymous
    00.00.0000 00:00


    1. Myclass
      19.12.2021 18:26
      +1

      Вы и правда на просторах интернета ничего из выше сказанного не находили и не знали с какой стороны к этой 'корове' подойти?!


  1. ChiTechOff Автор
    20.12.2021 06:31

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

    Насчет, архитектуры и то, что ее не возможно в agile командах внедрять. Не соглашусь. У нас в компании, к примеру, архитектуре, инфраструктуре, уделяется особое внимание. Эти задачи планируются, все прорабатывается. Мы работаем по SAFe(R). Все зависит от культуры, процессов, регламентов, методологий, площадок принятых в компании.


    1. Myclass
      20.12.2021 11:44

      что такой этап в разработке существует — это понятно всем. Но после обобщающих фраз…

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


      вы пишите
      А теперь, когда удалось расписать несколько User Story, давайте...

      ну и скажите, что это не похоже на рисование совы (если не в курсе, просто гуглить).

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

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

      А самое, что меня умиляет — это типа в Jira можно и процессы как в визио рисовать и модели создавать и есть уже куча всяких генераторов, которые переводят Excel-таблицы в Jira-таблицы. Проблема в том, что люди, которые это должны вроде делать — они это и раньше не умели. И сейчас не будут, а если и будут, то как в басне Крылова «квартет».


  1. lxsmkv
    20.12.2021 07:31
    +1

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

    "Кто сшил костюм?"
    "Кто сшил костюм?"

    И если мы попытаемся учесть все возможные взаимодействия всех сценариев у нас опять случается "комбинаторный взрыв". Т.е. нужно вводить еще одно измерение в котором сценарии будут иметь свойство совместимости друг с другом, чтобы можно было как-то систематически учитывать, как сценарии могут влиять друг на друга. А это уже совсем другой подход. На уровне сигналов, входов и выходов. Тут нужна системная аналитика технического инженера и/или архитектора. И опять у нас конфликт. С одной стороны "мы же не ракеты строим", а с другой стремление к полному покрытию.


    1. Myclass
      20.12.2021 11:17

      wow, именно это выражение

      мы же не ракеты строим

      я постоянно слышу. А на самом-то деле даже — да, может быть не всю ракету, но какую-то её часть! Даже, если делаем какую-нибудь интернет-страницу.