Changes between Version 2 and Version 3 of SelfEvaluation/SDZ/Testing
- Timestamp:
- 10/26/18 04:09:00 (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SelfEvaluation/SDZ/Testing
v2 v3 2 2 3 3 Според официјалната документација на OpenXava, платформата која се користи за градење на овој модул, тестирањето на кодот кој е генериран од страна на OpenXava се тестира со JUnit (во позадина OpenXava всушност користи HtmlUnit). Со тоа што прави екстензија на JUnit и користи HtmlUnit, се овозможува автоматизирано тестирање на функционалноста на модулот со тоа што се симулира активностите што би ги правел корисник со помош на веб пребарувач. При пишувањето на кодот за тестирање ја употребувам ModuleTestBase класата која ги автоматизира акциите кои се преземаат врз пребарувач на SelfEvaluation модулот. Со оглед на тоа што е напишана од тимот кој ја создал и одржува OpenXava платформата, неслучајно при изработка на автоматизираното тестирање искористена е и земени се за репер примерите од делот за автоматизирано тестирање од официјалната документација која може да се најде на линкот: http://www.openxava.org/OpenXavaDoc/docs/testing_en.html#Lesson%203:%20Automated%20testing-Testing%20collections. 4 4 5 Со оглед на тоа што работната околина во која е изработен SelfEvaluation модулот е Eclipse Oxygen 4.7.2, со цел да се воведе континуирано тестирање, односно извршување на тест класите при секое зачувување (и билдање кое следува автоматски), се користи InfiniTest плагинот за Eclipse. InfiniTest ги детектира промените во кодот и при зачувување (со автоматско билдање) ги извршува соодветните (“засегнатите”) тестови и во конзола ги изпишува соодветните резултати, додека на долната лента се прикажува боја, црвена или зелена, зависно од резултатите на тестовите. InfiniTest плагинот може да се најде на следниот линк: http://infinitest.github.io. 5 6 6 7 7 Опфатот на тест случаите и тест активностите во рамки на автоматизираниот дел за тестирање, кои се опишани детално во оваа спецификација, се функционалностите кои се наложени и детализирано објаснети во корисничките сценарија – “Создавање на обична анкета” и “Активирање на анкета” и нивните соодветни UML дијаграми, во прилог на овој документ. … … 18 18 19 19 Save() – Овој метод е од тип void и ја симулира корисничката акција преку пребарувач кога анкетарот ќе кликне Save. Тоа се прави со методот execute("CRUD.save") и потоа се проверува дали има грешки при зачувувањето со методот assertNoErrors(). 20 20 21 addBasicProperties() – Овој метод ги користи готовите методи setValue("naziv", "JUnit Test Anketa") – додава назив на анкетата, setValue("opis", "Anketa za testiranje so JUnit") – додава опис на анкетата. Методот setValue() e метод кој додава вредности во полиња исто како анкетарот што би ги внел преку пребарувач. Тест податоците во случајов за назив е "JUnit Test Anketa" и за опис "Anketa za testiranje so JUnit". Овие вредности ги додавам во полињата преку повикување на методот addBasicProperties() со цел доколку треба да се променат во иднина, тоа да се направи само на едно место. 22 21 23 choosePerson() – Овој метод додава personId на анкетар на соодветната анкета. Повеќе од јасно е дека ова треба да се прави “во позадина” така што би се нашол анкетарот кој се автентифицирал и би се зело неговото personId без да се избира сам од листата, меѓутоа бидејќи автентикацијата не е предмет на разработка, се додава рачно. Полето за избирање на анкетар е опаѓачка листа, од која се бира соодветното презиме, а тоа во тестот се прави со методот setValue("person.personId", "2"). Облигаторно е да се има запис во базата на податоци која се користи лице во табелата Person со personId 2, соодветното презиме во записот во база е “Dzalev”. Може и да се промени personId, зависно од потребите. Активноста е иста како анкетарот преку пребарувач да ја кликнал опаѓачката листа и да го избрал лицето со презиме “Dzalev” кое во позадина има personId 2. 24 22 25 chooseSubject() - Овој метод додава subjectId на соодветната анкета. Полето за избирање на предмет е опаѓачка листа, од која се бира соодветниот назив на предмет, а тоа во тестот се прави со методот setValue("subject.subjectId", "9"). Облигаторно е да се има запис во базата на податоци која се користи во табелата Subject со subjectId 9, соодветниот назив во записот во база е “Razvojni procesi na IS”. Може и да се промени subjectId, зависно од потребите. Активноста е иста како анкетарот преку пребарувач да ја кликнал опаѓачката листа и да го избрал предметот со назив “Razvojni procesi na IS”, кој во позадина има subjectId 9. 23 26 … … 39 42 40 43 testCreateWithPregledRezultatiOnlyValidation() – Овој метод ја тестира валидацијата на анкетата која се создава кога дополнително се внесуваат лица со привилегии за преглед на резултати, а не прашања и одговори. Има три можни варијанти и сите три користат методи кои се веќе објаснети. Се симулира најава на анкетарот, се симулира клик на копчето за создавање на нова анкета, се симулира одбирање на анкетар од опаѓачката листа, се симулира внес на назив и опис на анкетата, и внес на лица со привилегии за преглед на резултати со повик на методот addPregledRezultati(). Очекуваната грешка што треба да се појави после извршувањето на овие акции е "Value for Subject in Anketa is required". Доколку оваа грешка не се појави тестот не е успешен. Се повикува метод за затворање на дијалог прозорец. Во втората варијанта повторно се симулира клик на копчето за создавање нова анкета, се симулира внес на анкетар, предмет и лица со привилегии за преглед на резултати, очекуваната грешка е "Vnesete naziv i opis". Доколку се појави оваа и само оваа грешка после акцијата од втората варијанта оваа варијанта поминува. Во третата варијанта се симулира клик на копчето за создавање на нова анкета, внес на анкетар, лица со привилегии за преглед на резултати. Се очекуваат грешките "Vnesete naziv i opis" и "Value for Subject in Anketa is required". Доколку после акциите од третата варијанта се појават овие и само овие две грешки и претходните две варијанти поминале успешно тестот е успешен. 44 41 45 testFullCreate() – Овој метод тестира создавање на “целосна”, валидна анкета. Се симулира најава на анкетар, клик на копчето за создавање на нова анкета, внес на анкетар, назив опис, предмет, прашање со два одговори, лице со привилегии за преглед на крај од методот се очекува да не се појави никаква грешка со методот assertNoErrors(). Овој тест е успешен доколку се извршат сите акции коректно, односно после (или во текот на) нивното извршување не се појави никаква грешка. 42 46