Как трябва да структурираме нашите автоматизирани тестове? По-важното е как можем да направим нашите автоматизирани тестове детерминирани и повторяеми?
Всеки автоматизиран тест трябва да бъде валидиращ спрямо едно или повече предписани условия. Тоест, докато създаваме автоматизиран тест, трябва да знаем какъв трябва да бъде резултатът от дадено действие, за да можем да поставим подходящи оценки на място.
Автоматизираните тестове трябва да се изпълняват автоматично, без ръчна намеса. Освен това резултатите от автоматизираните тестове трябва да бъдат детерминирани и надеждни.
Но как да постигнем това?
Отговорът е съвсем прост, но такъв, който често се пренебрегва и това е използването на контролирани данни .
За да стартираме тест, са ни необходими три компонента:
Единственият компонент, който оказва силно влияние върху поведението на дадено приложение, е данни ; Данни, от които приложението се нуждае, и данните, които се подават към него.
За да илюстрирате това, помислете за приложение за електронна търговия, където потребителите могат да търсят продукти.
Страницата с резултати от търсенето ще изглежда и се държи по различен начин, когато в базата данни има продукти, отколкото когато базата данни е празна.
Очевидно нашите автоматизирани тестове трябва да се грижат за различни състояния на приложението и да проверяват за различното поведение.
Когато търсим продукт и виждаме списъци, как можем да потвърдим резултатите? Как можем да сме абсолютно сигурни, че тези данни са това, което очакваме? Нещо повече, как можем да направим този процес повторяем, така че при всяко ново внедряване да получаваме същия резултат?
Защо се нуждаем от контролирани данни при автоматизирани тестове?
Давам ви пример за лоша практика, която често виждам да се прави в автоматизирани тестове:
Много лош тест е, че търсим продукт и твърдим, че се показват някои списъци. Няма да проверяваме дълбоко - стига да има продукти, показвани на страницата, значи сме добри. БЕЗУМЕН!
За съжаление това би оставило някои въпроси без отговор:
Трябва да можем да твърдим за резултатите от тестовете. Твърденията трябва да имат смисъл и да бъдат валидни проверки.
Ако не контролираме данните, няма как да знаем или да проверяваме за горните въпроси.
За да направим автоматизираните тестове детерминирани, трябва сами да поставим данните. Автоматизираните тестове трябва да инжектират известни данни и да потвърдят резултата спрямо тези данни.
Ако просто разчитаме на данните, които се използват от други процеси и които подлежат на промяна, тогава нашите автоматизирани тестове не биха били надеждни. Нямаме начин да определим резултатите.
Автоматизираните тестове трябва да се изпълняват автоматично. По истински автоматизиран начин тестовете се задействат от процес като CI / CD конвейер, който контролира изпълнението и отчитането на тестовете.
Отново начина, по който обработваме данните, влияе върху надеждността и повторяемостта на автоматизираните тестове.
Типична структура за добър автоматизиран тест е
Защо трябва всеки път да настройваме тестовите данни? Това няма ли да ни забави всеки път, когато провеждаме тестовете? Не можем ли просто да го настроим веднъж и след това да използваме отново едни и същи данни?
Е, как да разберем какво се случва с данните след приключване на теста? Може би тестът на друг човек е променил или изтрил данните?
Как можем да бъдем сигурни, че следващия път, когато искаме да пуснем същия тест, данните вече са налице, за да ги използваме?
Защо трябва да унищожим създадените тестови данни?
Тъй като при следващото изпълнение, когато се опитваме да създадем тестови данни, ще има дублирани данни или по-лошо може да получим изключения, хвърлени в тестовете.
Ако не изтрием тестовите данни и продължим да пресъздаваме случайни тестови данни, тогава, извънредно, базата данни ще има много тестови данни и ще имаме други проблеми.
Така че не забравяйте да създадете и унищожите тестовите си данни.
За да получим максимална стойност от нашите усилия за автоматизация на тестовете, трябва да проектираме добри тестове с добра структура.
Един от начините, по който можем да направим нашите тестове предсказуеми и детерминирани, е да контролираме данните от теста. Вместо да разчитат на съществуващите данни за тестване, автоматизираните тестове трябва да поставят данните като предварителна стъпка към стартиране на сценарии.
Като засяваме нашите собствени данни от теста, можем да тестваме за различни условия. Нещо повече, можем да сме сигурни, че изявленията за твърдение проверяват за известни данни. Това ще направи тестовете детерминирани.
За да стартираме автоматизирани тестови сценарии многократно, трябва да гарантираме, че тестовете ни създават тестови данни, преди да стартират сценариите. Това се прави в раздела за настройка на автоматизиран тест.
След това сценариите ще използват данните, създадени в стъпката за настройка.
И накрая, когато приключим с тестването, трябва да имаме начин за почистване на тестовата среда, като изтрием всички създадени данни. Това се прави в раздела за разкъсване на автоматизиран тест.
Свързани: