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

Како треба да ги структурираме нашите автоматски тестови? Уште поважно, како можеме да ги направиме нашите автоматски тестови детерминистички и повторливи?

Секој автоматски тест треба да се потврди според еден или повеќе пропишани услови. Тоа е, додека создаваме автоматски тест, мора да знаеме каков ќе биде резултатот од една акција, за да можеме да поставиме соодветни изјави за проценка.

Автоматските тестови треба да се извршуваат автоматски без рачна интервенција. Покрај тоа, резултатите од автоматските тестови треба да бидат детерминистички и сигурни.


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

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




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

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

  • Апликација
  • Сценарио
  • Податоци

Една компонента што силно влијае на однесувањето на апликацијата е податоци ; Податоци што и се потребни на апликацијата и податоците што се доставуваат до неа.

За да го илустрирате ова, размислете за апликација за е-трговија каде што корисниците можат да бараат производи.

Страницата со резултати од пребарување би изгледала и се однесува поинаку кога има производи во базата на податоци отколку кога базата на податоци е празна.


Очигледно, нашите автоматски тестови треба да се грижат за различните состојби на апликацијата и да проверат за различните однесувања.

Кога бараме производ и гледаме списоци, како можеме да ги потврдиме резултатите? Како можеме да бидеме апсолутно сигурни дека овие податоци се она што го очекуваме? Покрај тоа, како можеме да го направиме овој процес повторлив, така што при секое ново распоредување да го добиваме истиот исход?



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

Зошто ни се потребни контролирани податоци при автоматски тестови?

Јас ви давам пример за лоша практика што честопати ја гледам како се прави во автоматски тестови:


Многу слаб тест е дека бараме производ и тврдиме дека добиваме прикажани некои списоци. Ние нема да провериме длабоко - сè додека има прикажани производи на страницата, тогаш сме добри. Лудо!

За жал, ова би оставило некои прашања неодговорени:

  • Од каде знаеме дека податоците доаѓаат од точната база на податоци? Дали сме поврзани со лажен сервер со исмејувани податоци?
  • Од каде знаеме дека вратените податоци се всушност она што го баравме?
  • Како знаеме точниот број на предмети што се прикажани на страницата со резултати од пребарување?

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

Ако не ги контролираме податоците, тогаш немаме начин да ги знаеме или проверуваме горенаведените прашања.


За да ги направиме автоматски тестовите детерминистички, треба самите да ги засадуваме податоците. Автоматските тестови треба да инјектираат познати податоци и да го потврдат резултатот од тие податоци.

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



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

Автоматските тестови треба да се извршуваат автоматски. На вистинска автоматизирана форма, тестовите се активираат од процес како што е изградбата на гасоводот CI / CD кој контролира извршување и известување за тестовите.

Повторно, начинот на управување со податоците влијае на веродостојноста и повторливоста на автоматските тестови.


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

  • 1 - Поставување [Креирај познати податоци]
  • 2 - Тест [Користете ги креираните податоци]
  • 3 - Teardown [Уништи ги создадените податоци]

Создадете податоци за тестот

Зошто треба да ги поставуваме податоците за тестот секој пат? Дали ова нема да нè забави секогаш кога ќе ги извршуваме тестовите? Можеме не само да го поставиме еднаш, а потоа повторно да ги користиме истите податоци?

Па, како знаеме што се случува со податоците по завршувањето на тестот? Можеби тестот на друго лице ги измени или избриша податоците?

Како можеме да бидеме сигурни следниот пат кога ќе сакаме да го извршиме истиот тест, податоците се веќе присутни за да ги користиме?

Уништи ги податоците за тестот

Зошто треба да ги уништиме креираните податоци за тестот?

Бидејќи при следното извршување, кога ќе се обидеме да ги создадеме податоците за тестот, ќе има дупликати податоци или уште полошо може да добиеме исклучоци фрлени во тестовите.

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

Затоа, не заборавајте да ги креирате и уништите вашите податоци за тестот.



Резиме

Со цел да добиеме најголема вредност од нашите напори за автоматизација на тестот, треба да дизајнираме добри тестови со добра структура.

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

Со засејување на нашите сопствени податоци од тестот, можеме да тестираме за различни услови. Покрај тоа, можеме да бидеме сигурни дека изјавите за тврдење проверуваат дали има познати податоци. Ова ќе ги направи тестовите детерминистички.

За да извршуваме автоматски сценарија за тестирање постојано, треба да осигураме дека нашите тестови ги создаваат податоците за тестот пред да ги извршат сценаријата. Ова е направено во делот за поставување на автоматски тест.

Потоа, сценаријата ќе ги користи податоците креирани во чекорот за поставување.

Конечно, кога ќе завршиме со тестирање, треба да имаме начин на чистење на тест-околината со бришење на сите креирани податоци. Ова е направено во делот за солзи на автоматски тест.

Поврзано: