понедельник, 15 июня 2015 г.

о категоризации тестов

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

что это такое
суть в том, что перед каждым тестом мы на него вешаем атрибут с тегом (пример выполнен на языке С# с фреймворком запуска Gallio MBUnit).

        [Test]
        [Category("Contact-List")]
        [Category("Presence")]
        [Category("Chat")]
        public void  CheckUserStatusInContactListTest()
        {
                   //...
        }

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

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

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