SpecFlowMaster: как улучшить качество тестов

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

Делаем правильные вещи


Современная разработка не может существовать без автоматизированных тестов. Тесты могут быть написаны очень быстро даже непрофессионалами. Таким образом, у нас есть тесты, все как бы хорошо. Можем ли мы довериться таким тестам? Каково качество наших инструментов для проверки качества? Давайте посмотрим на Specflow тесты, которые могут быть написаны человеческим языком.

Feature: SpecFlowFeature
	In order to avoid silly mistakes
	As a math idiot
	I want to be told the sum of two numbers

Scenario: Add two numbers
	Given I have entered 50 into the calculator
	And I have entered 70 into the calculator
	When I press add
	Then the result should be 120 on the screen

Этот тест состоит из трёх стандартных частей, которые называются настройка, действие и проверка. Все выглядит как бы хорошо. Но что происходит, когда кто-то добавит дополнительный шаг в этот тест?

Feature: SpecFlowFeature
	In order to avoid silly mistakes
	As a math idiot
	I want to be told the sum of two numbers

Scenario: Add two numbers
	Given I have entered 50 into the calculator
	And I have entered 70 into the calculator
	When I press add
	And I press memorize
	Then the result should be 120 on the screen

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

Такой тип тестов може появиться в результате большого рефакторинга или существенных изменений в техническое задание. Это означает, что мы будем иметь все тесты зелеными, но они проверяют работоспособность системы не очень хорошо. Тест указаный выше может быть исправленый двумя способами: удалить этот добавленый шаг “And I press memorize” или добавить еще один шаг в конце теста для проверки состояния памяти “Then value stored in memory is 120”.

SpecFlowMaster плагин


Этот плагин для Specflow позволяет найти такие тесты и подозрительные строчки тестов. Как это работает? Для каждой строчки Specflow feature он генерирует специальный тест, который запускает тот же самый тест, но без этой строчки. Если выполнение теста приводит к ошибке, то это ожидаемое поведение и тут все хорошо. Если такой тест выполняется успешно, то тут что-то плохо с испытуемой строчкой в этом тесте и система определяет эту строчку как подозрительную. Т.е. новый сгенирированый тест будет красным.

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

Технические замечания

  1. C#, VB
  2. SpecFlow 3.0 или выше
  3. .NET Framework 4.7.1 или выше, .NET Core 2.0 или выше

Что планируется сделать в дальнейшем

  1. Поддержка До (Before) и После (After) атрибутов
  2. Схожие плагины для Java и Node.js

Ссылки

  1. Плагин можно найти на гитхаб
  2. Любые отзывы высылайте на arskiev@gmail.com
Источник: https://habr.com/ru/post/473320/


Интересные статьи

Интересные статьи

Всем привет. Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редак...
Любому QA известен такой метод минимизации тест-кейсов, как Pairwise Testing — попарное тестирование. Метод отличный, достаточно простой и проверенный множеством команд. Но что делать...
С самого начала работы над одним из web-проектов мы стремились к высокому уровню покрытия кода тестами, и на начальном этапе разработки я не задумывался об оптимизациях скорости их вы...
Всем привет! В данной статье хочется рассказать о том, как была решена задача записи видео автотестов, работающих в headless Chrome (с записью в не headless режиме проблем быть не...
Но если для интернет-магазина, разработанного 3–4 года назад «современные» ошибки вполне простительны потому что перед разработчиками «в те далекие времена» не стояло таких задач, то в магазинах, сдел...