how to write good autotests
DESCRIPTION
TRANSCRIPT
ХОРОШИЕ АВТОТЕСТЫ? WTF?
В одной из предыдущих презентаций я рекомендовал
вместо плохих автотестов писать хорошие автотесты.
В то время, как ваши более одаренные коллеги уже гребут деньги лопатой, пиша пис хуяча
хорошие автотесты, лодыри вроде вас продолжают скрести в
затылке, пытаясь понять, с чем это вообще едят.
С ЧЕГО НАЧАТЬ?
Представим себе,
что вы – одно из этих бездарных, ограниченных и ленивых
созданий, прогуливавших в школе уроки ясновидения и телепатии и
неспособных и строчки кода написать без ошибок.
ВЫ - РАЗРАБОТЧИК
С ЧЕГО НАЧАТЬ?
А ваш автотест – и есть тестировщик,
чья задача – максимально доступно разъяснить
разработчику (который по природе своей непонятлив), где он
накосячил и какой он вообще лузер* по жизни.
* Ну ладно, про лузера ему разъяснит дома жена.
ТИПЫ ПЛОХИХ ТЕСТИРОВЩИКОВ АВТОТЕСТОВ
Можно выделить не менее четырех типов плохих автотестов:
• Тип 1• Тип 2• Тип 3• Тип 4• и т.д.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 1
Итак, ваш тестировщик приходит к вам (разработчику) и говорит:
«Тут какая-то херня, ничего не работает»
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 1
«ЧТО НЕ РАБОТАЕТ?ГДЕ НЕ РАБОТАЕТ?
КУДА ТЫ НАЖИМАЛ?»- спрашиваете вы*.
* Разработчики непонятливы.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 1
«Тут какая-то херня, ничего не работает»,
невозмутимо отвечает тестировщик.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 1
Увы, с плохим автотестом
этот номер не пройдет.
«Тут какая-то херня, ничего не работает», -
единственное , что он умеет говорить.
Ну и еще молчать.
Причем еще неизвестно, что хуже.
КАК ИСПРАВИТЬ ПЛОХОЙ АВТОТЕСТ ТИПА 1
Тестировщик должен быть в состоянии подробно и внятно
разъяснить разработчику (который по природе своей
несообразителен),
что именноне работает
и где
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 2
Ваш тестировщик снова приходит к вам (разработчику) и говорит:
«Я сравнивал X и 42, и они не совпали».
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 2
«X? КАКОЙ К ХУЯМ Х?ПОЧЕМУ 42, А НЕ 37?
И ЧЕМУ ЖЕ ОН У ТЕБЯ БЫЛ РАВЕН?»
- орете вы*.* Разработчики легко раздражаются по пустякам.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 2
Он не помнит.
Забыл.
Записал на старом чеке, засунул в задний карман брюк и сдал их в
химчистку.
Да и вообще, с хуя ли он будет что-то там запоминать. Не равно и
все тут.
КАК ИСПРАВИТЬ ПЛОХОЙ АВТОТЕСТ ТИПА 2
Тестировщик должен
всегда говорить разработчику
(который по природе своей тугодум),
что и с чем он сравнивал,
а также
что он ожидал получить
и что получил на самом деле
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 3
И вновь ваш тестировщик приходит к вам (разработчику) и
говорит:
«Я выполнил методы doBlunder(), performIdioticChecks() и
verifyThatEverythingIsFine() и все упало».
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 3
«ЗАЧЕМ ЗДЕСЬ БЫЛО ВЫПОЛНЯТЬ doBlunder(),?
ЭТО ЖЕ ВООБЩЕ ДРУГОЙ
ФУНКЦИОНАЛ!»- не можете взять в толк вы*.
* Разработчики бестолковы.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 3
«Мы всегда выполняем doBlunder() перед
performIdioticChecks(). У нас есть целая тестовая сюита на 700
тестов, и все они сначала делают doBlunder(), а потом
performIdioticChecks()»,
- отвечает он.
КАК ИСПРАВИТЬ ПЛОХОЙ АВТОТЕСТ ТИПА 3
Быть может, этот тестировщик не так уж и глуп. Возможно, здесь
действительно нужно было вызвать doBlunder(). А может и нет. Но кто, черт
возьми, ему это сказал? Откуда это следует? Где это написано?
Тестировщик должен четко пояснять разработчику (который по природе
своей недоверчив),
почему он выполняет те или иные действия,
а также
что он пытается проверить
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 3АРазновидностью автотеста типа 3
является автотест типа 3А.
Представьте, что ваш тестировщик
говорит вам (разработчику) :
«Я выполнил тест Test001 и он упал».
Или, может быть:
«Я выполнил тест Test001 и он не упал».
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 3А
«И ЧТО ЭТО НАХРЕН ЗА ТЕСТ ТАКОЙ - TEST001? ЧТО ОН
ПРОВЕРЯЕТ?»- вопрошаете вы*.
* Разработчикам вечно нужно объяснять элементарные вещи.
КАК ИСПРАВИТЬ ПЛОХОЙ АВТОТЕСТ ТИПА 3А
Последовательность действий по исправлению автотеста типа 3А
аналогична ситуации с автотестом типа 3. Тестировщик должен давать понять
разработчику (который по природе
своей необузданно дотошен),
что именно он проверял,
потому что если никто не понимает, что он тестировал, то и результат теста
никому ни о чем не скажет.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 4
Тестировщик опять-таки приходит к вам (разработчику) и говорит:
«Ништяк, братуха, все тесты зеленые».
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 4
Конечно, не исключено, что вам наконец удалось научиться писать
хорошиеавтотесты.
Но не спешите радоваться*. Не исключено, что перед вами
плохой автотест типа 4.* Разработчики мнительны.
ЧТО ТАКОЕ ПЛОХОЙ АВТОТЕСТ ТИПА 4
Почитайте внимательно, о чем рапортует вам ваш тестировщик.
• «Хэй, в этой строке действительно присутствует пустая подстрока!»
• «Я проверил твою страницу на наличие в ней элементов типа <div> и
<a>! Они там есть, ура!»
• «Чувак, 0 == 0! Ты представляешь, 0 == 0!»
КАК ИСПРАВИТЬ ПЛОХОЙ АВТОТЕСТ ТИПА 4
Не спешите прибегать к народному средству.
Здесь оно не поможет.
Этот человек – дебил, он безнадежен.
Все, что вам остается делать, – это
ПОСЛАТЬ ЕГО НАХУЙ
и перепроверить все самому.
ЗАКЛЮЧЕНИЕ
На самом деле разновидностей плохих автотестов намного
больше.
Ибо несть границ человеческой
глупостиИ
безалаберности
ЗАКЛЮЧЕНИЕ
Поэтому хватит прикидываться разработчиком.
Какой вы к хуям разработчик?
Вы и есть тестировщик.
Вот и отправляйтесь писать свои автотесты.
ХОРОШИЕ АВТОТЕСТЫ.