Защо и какво да автоматизираш
Накратко: Автоматизираният тест е програма, която пуска системата и сверява резултата, без човек. Той си струва за правила, които не се менят често, проверяват се при всяка промяна и струват пари, ако се счупят. Не си струва за еднократна проверка, за екран, който още се мени, и за всичко, което иска човешка преценка. Истинската му цена е поддръжката.
Проблем
Два дни ръчни тестове всяка седмица
Магазинът пуска нова версия всеки петък. Преди всяко пускане QA минава ръчно 120 тестови случая: доставката, количката, промо кодовете, връщанията. Отнема два дни.
Миналата седмица имаше празник, и времето стигна за 80. Пропуснатите 40 бяха „старите, те не се чупят“. В понеделник клиент плати доставка за поръчка точно за 50,00 €. Промяната беше в кода за промо кодовете, а счупи границата на доставката.
Идеята
Автоматизацията на тестовете
Автоматизацията на тестовете (test automation) е програма, която пуска системата, подава ѝ входа от тестовия случай и сверява резултата с очаквания. Без човек, при всяко пускане еднакво.
Какво дава:
- регресията става евтина. 120 случая вървят за минути, при всяка промяна, а не два дни веднъж седмично;
- еднакво всеки път. Програмата не се уморява на 80-ия случай и не прескача „старите“;
- бърза обратна връзка. Програмистът научава, че е счупил границата, след 5 минути, докато още помни какво е пипал;
- живата документация се пуска. Сценариите от модула за Gherkin спират да са текст в папка: те стават проверка, която минава или пада.
Автоматизацията не измисля тестове. Тестовият случай пак се пише от човек. Автоматизацията го повтаря.
Идеята
Какво си струва и какво не
Автоматизираният тест се плаща веднъж при писането и после при всяка промяна. Затова си струва, когато се пуска много пъти, а се мени рядко.
Струва си за:
- правила, които не се менят всяка седмица: доставката, лимитът в количката, отстъпките;
- проверки преди всяко пускане (регресията);
- много примери с едно и също правило: десет суми около границата;
- места, където грешката струва пари или доверие.
Не си струва (или още не) за:
- еднократна проверка: миграция на данните, която става веднъж;
- екран, който дизайнерът още сменя всеки ден;
- всичко, което иска преценка: разбира ли се формулярът, изглежда ли добре, удобно ли е. Това е използваемост, и тя се гледа от хора;
- изследователското тестване: там въпросът се измисля, докато тестваш.
Пробвай
Автоматизирай или не?
Идеята
Рисковете
Автоматизацията често се проваля не заради инструмента, а заради очакванията:
- „Ще намери всички дефекти.“ Тестът проверява само това, което някой е измислил. Ако никой не е измислил празната количка, автоматизацията няма да я провери, колкото и пъти да се пусне. Мутантите от модула за Gherkin минаваха незабелязано точно така.
- Подценена поддръжка. Тестовете са код. Когато прагът стане 60 €, сценариите, стъпките и тестовете се сменят. Ако никой не ги поддържа, след месец половината са червени, и екипът спира да ги гледа.
- Тест, на който никой не вярва. Ако тестът пада „понякога“, хората започват да го пускат пак, докато мине. Тогава и истинското падане минава незабелязано.
- Всичко през екрана. Тестовете през браузъра са бавни и се чупят, когато бутонът смени мястото си. Повечето проверки трябва да са по-надолу.
- Инструментът като цел. „Купихме инструмент“ не е стратегия. Първо е какво трябва да се проверява, после с какво.
По-точно, за любопитните
ISTQB CTFL v4.0.1 описва инструментите в глава 6. Раздел 6.2 изброява ползите, сред тях по-малко повтаряща се ръчна работа, по-голяма последователност, по-бърза обратна връзка и повече време за нови тестове, и рисковете, сред тях нереалистични очаквания, неточна оценка на времето и цената (включително поддръжката), инструмент там, където ръчното е по-подходящо, прекалено разчитане на инструмента без човешка критична мисъл и зависимост от доставчика или от софтуер с отворен код, който може да бъде изоставен.
За тези, които ще пишат автоматизация като професия, ISTQB има отделен сертификат на напреднало ниво: CTAL-TAE (Test Automation Engineering). Той е за архитектурата на автоматизацията и не е част от този курс.
Идеята
Кое ниво за коя проверка
Пирамидата от модула за нивата казва колко тестове на кое ниво. В автоматизацията тя става конкретна:
- сценариите (следващия урок) проверяват правилото с думите на бизнеса. Те са живата документация;
- тестовете на ниво компонент проверяват едно парче код, бързо и с много примери: десет суми около границата за милисекунди;
- API тестовете пращат истински заявки към сървъра на магазина, без браузър;
- UI тестовете отварят браузър и щракат като клиента. Малко на брой, само за пътищата, които не бива да се чупят.
В този модул правилото е едно и също през цялото време: безплатна доставка от 50,00 € включително, иначе 4,90 €, празна количка се отказва. Ще го видиш автоматизирано на всяко ниво, на Java, C#, Python и JavaScript, и ще видиш кой тест хваща коя грешка.
Тук трябва да можеш да четеш код на един от четирите езика. Нужното е от курса по програмиране, до модула „Програми в истинския свят“: класове, изключения и тестове на ниво компонент.
Пробвай
Пътят на едно правило
Подреди пътя на правилото за доставката от договарянето до отчета.
Правилото е проверено и с тестове на ниво компонентСценарият е свързан с кода чрез стъпкиОтчетът казва кое е паднало и защоТестовете се пускат при всяка промяна в кодаПравилото е договорено и записано като сценарий
Това е и планът на модула: стъпките, тестовете на ниво компонент, API и екран, после CI и отчетът. Сценарият е първи, защото той е договореното правило. Кодът на тестовете идва след него.
Упражнение
План за автоматизация
1. Кое първо и защо. Магазинът тепърва започва с автоматизацията.
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Нивата на тестване · Видовете тестване · Тестването в жизнения цикъл · Използваемост и достъпност
- Продължава в: От сценарий към стъпки · Тестове на ниво компонент · API и потребителски интерфейс · Тестовете в CI
- Задачи по темата: Автоматизация