Каква е типичната структура на автоматизиран тест?

Как трябва да структурираме нашите автоматизирани тестове? По-важното е как можем да направим нашите автоматизирани тестове детерминирани и повторяеми?

Всеки автоматизиран тест трябва да бъде валидиращ спрямо едно или повече предписани условия. Тоест, докато създаваме автоматизиран тест, трябва да знаем какъв трябва да бъде резултатът от дадено действие, за да можем да поставим подходящи оценки на място.

Автоматизираните тестове трябва да се изпълняват автоматично, без ръчна намеса. Освен това резултатите от автоматизираните тестове трябва да бъдат детерминирани и надеждни.


Но как да постигнем това?

Отговорът е съвсем прост, но такъв, който често се пренебрегва и това е използването на контролирани данни .




Компоненти на тест

За да стартираме тест, са ни необходими три компонента:

  • Приложение
  • Сценарий
  • Данни

Единственият компонент, който оказва силно влияние върху поведението на дадено приложение, е данни ; Данни, от които приложението се нуждае, и данните, които се подават към него.

За да илюстрирате това, помислете за приложение за електронна търговия, където потребителите могат да търсят продукти.

Страницата с резултати от търсенето ще изглежда и се държи по различен начин, когато в базата данни има продукти, отколкото когато базата данни е празна.


Очевидно нашите автоматизирани тестове трябва да се грижат за различни състояния на приложението и да проверяват за различното поведение.

Когато търсим продукт и виждаме списъци, как можем да потвърдим резултатите? Как можем да сме абсолютно сигурни, че тези данни са това, което очакваме? Нещо повече, как можем да направим този процес повторяем, така че при всяко ново внедряване да получаваме същия резултат?



Как да направим автоматизираните тестове детерминирани

Защо се нуждаем от контролирани данни при автоматизирани тестове?

Давам ви пример за лоша практика, която често виждам да се прави в автоматизирани тестове:


Много лош тест е, че търсим продукт и твърдим, че се показват някои списъци. Няма да проверяваме дълбоко - стига да има продукти, показвани на страницата, значи сме добри. БЕЗУМЕН!

За съжаление това би оставило някои въпроси без отговор:

  • Как да разберем, че данните идват от правилната база данни? Свързани ли сме с фалшив сървър с подигравани данни?
  • Как да разберем, че върнатите данни всъщност са това, което търсихме?
  • Как да разберем, че правилният брой елементи се показва на страницата с резултати от търсенето?

Трябва да можем да твърдим за резултатите от тестовете. Твърденията трябва да имат смисъл и да бъдат валидни проверки.

Ако не контролираме данните, няма как да знаем или да проверяваме за горните въпроси.


За да направим автоматизираните тестове детерминирани, трябва сами да поставим данните. Автоматизираните тестове трябва да инжектират известни данни и да потвърдят резултата спрямо тези данни.

Ако просто разчитаме на данните, които се използват от други процеси и които подлежат на промяна, тогава нашите автоматизирани тестове не биха били надеждни. Нямаме начин да определим резултатите.



Как да направя автоматизираните тестове повторяеми

Автоматизираните тестове трябва да се изпълняват автоматично. По истински автоматизиран начин тестовете се задействат от процес като CI / CD конвейер, който контролира изпълнението и отчитането на тестовете.

Отново начина, по който обработваме данните, влияе върху надеждността и повторяемостта на автоматизираните тестове.


Типична структура за добър автоматизиран тест е

  • 1 - Настройка [Създаване на известни данни]
  • 2 - Тест [Използвайте създадените данни]
  • 3 - Teardown [Унищожи създадените данни]

Създаване на тестови данни

Защо трябва всеки път да настройваме тестовите данни? Това няма ли да ни забави всеки път, когато провеждаме тестовете? Не можем ли просто да го настроим веднъж и след това да използваме отново едни и същи данни?

Е, как да разберем какво се случва с данните след приключване на теста? Може би тестът на друг човек е променил или изтрил данните?

Как можем да бъдем сигурни, че следващия път, когато искаме да пуснем същия тест, данните вече са налице, за да ги използваме?

Унищожи данните от теста

Защо трябва да унищожим създадените тестови данни?

Тъй като при следващото изпълнение, когато се опитваме да създадем тестови данни, ще има дублирани данни или по-лошо може да получим изключения, хвърлени в тестовете.

Ако не изтрием тестовите данни и продължим да пресъздаваме случайни тестови данни, тогава, извънредно, базата данни ще има много тестови данни и ще имаме други проблеми.

Така че не забравяйте да създадете и унищожите тестовите си данни.



Обобщение

За да получим максимална стойност от нашите усилия за автоматизация на тестовете, трябва да проектираме добри тестове с добра структура.

Един от начините, по който можем да направим нашите тестове предсказуеми и детерминирани, е да контролираме данните от теста. Вместо да разчитат на съществуващите данни за тестване, автоматизираните тестове трябва да поставят данните като предварителна стъпка към стартиране на сценарии.

Като засяваме нашите собствени данни от теста, можем да тестваме за различни условия. Нещо повече, можем да сме сигурни, че изявленията за твърдение проверяват за известни данни. Това ще направи тестовете детерминирани.

За да стартираме автоматизирани тестови сценарии многократно, трябва да гарантираме, че тестовете ни създават тестови данни, преди да стартират сценариите. Това се прави в раздела за настройка на автоматизиран тест.

След това сценариите ще използват данните, създадени в стъпката за настройка.

И накрая, когато приключим с тестването, трябва да имаме начин за почистване на тестовата среда, като изтрием всички създадени данни. Това се прави в раздела за разкъсване на автоматизиран тест.

Свързани: