Pedagoški test
Pedagoški test se definiše kao sistem zadataka određenog sadržaja, sve veće težine, određene forme, koji omogućava da se kvalitetno i efikasno izmeri nivo i oceni struktura pripremljenosti učenika. U pedagoškom testu zadaci su poređani prema rastućoj težini - od najlakših do najtežih.
Integrativni test
Integrativnim testom možemo nazvati test koji se sastoji od sistema zadataka koji ispunjavaju zahtjeve integrativnog sadržaja, forme testa i sve veće težine zadataka usmjerenih na generalnu konačnu dijagnozu pripremljenosti diplomca obrazovne ustanove.
Dijagnostika se sprovodi prezentovanjem ovakvih zadataka, za čije tačne odgovore su potrebna integrisana (generalizovana, jasno međusobno povezana) znanja iz oblasti dve ili više akademskih disciplina. Izrada ovakvih testova je data samo onim nastavnicima koji imaju znanje o nizu akademskih disciplina i razumiju važnu ulogu interdisciplinarno povezivanje u učenju, umeju da kreiraju zadatke za čije tačne odgovore je potrebno od učenika da poseduju znanja iz različitih disciplina i sposobnost primene tih znanja. Integrativnom testiranju prethodi organizacija integrativne obuke. Nažalost, sadašnji razredno-nastavni oblik izvođenja nastave, u kombinaciji s pretjeranom fragmentacijom akademskih disciplina, zajedno s tradicijom predavanja pojedinačnih disciplina (a ne generaliziranih predmeta), dugo će kočiti implementaciju integrativnog pristupa u procesima. učenja i praćenja pripremljenosti.
Prednost integrativnih testova u odnosu na heterogene je u većoj informativnosti svakog zadatka i u manjem broju samih zadataka.
Metodologija izrade integrativnih testova slična je metodologiji za izradu tradicionalnih testova, sa izuzetkom rada na utvrđivanju sadržaja zadataka. Za odabir sadržaja integrativnih testova obavezna je upotreba ekspertskih metoda.
Adaptivni test
Adaptivni test radi kao dobar ispitivač. Prvo, on "postavlja" pitanje umjerene težine, a rezultirajući odgovor se odmah procjenjuje. Ako je odgovor tačan, onda se povećava procjena sposobnosti ispitanika. U ovom slučaju postavlja se teže pitanje. Ako učenik uspješno odgovori na pitanje, sljedeće se bira kao teže, a ako nije uspjelo, lakše se bira sljedeće.
Glavna prednost adaptivnog testa u odnosu na tradicionalni je efikasnost. Adaptivni test može utvrditi nivo znanja ispitanika sa manje pitanja (ponekad se dužina testa smanjuje i do 60%).
U adaptivnom testu, u prosjeku, imate više vremena za razmišljanje o svakom pitanju nego u običnom testu. Na primjer, umjesto da odvoji 2 minute po pitanju, polaznik adaptivnog testa može završiti sa 3 ili 4 minute (u zavisnosti od toga na koliko pitanja treba da odgovori).
Pouzdanost rezultata adaptivnog testa poklapa se sa pouzdanošću testova fiksne dužine. Obje vrste testova podjednako precizno procjenjuju nivo znanja.
Međutim, uvriježeno je mišljenje da je adaptivni test preciznija procjena znanja. Ovo nije istina.
Ukupno aplikacija. Ali između ove dvije faze testiranja, javljaju se i druge. Ja, kao i mnogi drugi, takve testove nazivam integracijom.
Nekoliko riječi o terminologiji
Nakon dosta razgovora sa entuzijastima vođenog testom razvoja, došao sam do zaključka da oni imaju drugačiju definiciju pojma „testovi integracije“. Sa njihove tačke gledišta, integracijski test testira "eksterni" kod, odnosno onaj koji je u interakciji sa "spoljnim svetom", svetom aplikacije.
Dakle, ako njihov kod koristi Ajax ili localStorage ili IndexedDB i stoga se ne može testirati s jediničnim testovima, oni umotavaju tu funkcionalnost u sučelje i ismijavaju to sučelje za jedinične testove, a testiranje stvarne implementacije sučelja naziva se "test integracije" " Sa ove tačke gledišta, "integracioni test" jednostavno testira kod koji je u interakciji sa "stvarnim svetom" izvan onih jedinica koje rade bez obzira na stvarni svet.
Ja, kao i mnogi drugi, koristim termin "integracioni testovi" da se odnosim na testove koji testiraju integraciju dve ili više jedinica (modula, klasa, itd.). Nije važno da li se kriješ stvarnom svijetu preko zaključanih interfejsa.
Moje pravilo da li da koristim stvarne implementacije Ajax i druge I/O (ulaz/izlaz) operacije u integracijskim testovima su sljedeće: ako to možete učiniti, a testovi i dalje rade brzo i ne ponašaju se čudno, onda testirajte I/O. Ako je I/O operacija složena, spora ili samo čudna, onda koristite lažne objekte u svojim integracijskim testovima.
U našem kalkulatoru, na sreću, jedini pravi I/O je DOM. Ne postoje Ajax pozivi ili drugi razlozi za pisanje sprdnji.
Lažni DOM
Postavlja se pitanje: da li je potrebno pisati lažni DOM u integracijskim testovima? Hajde da primenimo moje pravilo. Hoće li korištenje pravog DOM-a usporiti testove? Nažalost, odgovor je da: korištenje pravog DOM-a znači korištenje pravog pretraživača, što testove čini sporim i nepredvidivim.
Odvajamo li većinu koda od DOM-a ili testiramo sve zajedno u E2E testovima? Obje opcije nisu optimalne. Srećom, postoji treće rješenje: jsdom. Ovaj divan i neverovatan paket radi upravo ono što očekujete od njega - implementira DOM u NodeJS.
Radi, brzo je, radi u Nodeu. Ako koristite ovaj alat, možete prestati tretirati DOM kao "I/O". I ovo je veoma važno, jer je odvajanje DOM-a od front-end koda teško, ako ne i nemoguće. (Na primjer, ne znam kako to da uradim.) Pretpostavljam da je jsdom napisan posebno za pokretanje frontend testova pod Nodeom.
Hajde da vidimo kako to radi. Kao i obično, postoji inicijalizacijski kod i postoji testni kod, ali ovaj put ćemo početi s testnim kodom. Ali prije toga, povlačenje.
Povlačenje
Ovaj dio je jedini dio serije koji je fokusiran na određeni okvir. A okvir koji sam izabrao je React. Ne zato što je to najbolji okvir. Čvrsto vjerujem da tako nešto ne postoji. Mislim da čak i ne postoje bolji okviri za specifične slučajeve upotrebe. Jedino u šta verujem je da ljudi treba da koriste okruženje u kome im je najugodnije da rade.
A okvir sa kojim mi je najprijatnije raditi je React, tako da je sljedeći kod napisan u njemu. Ali kao što ćemo vidjeti, frontend integracijski testovi koji koriste jsdom trebali bi raditi u svim modernim okvirima.
Vratimo se korišćenju jsdoma.
Koristeći jsdom
const React = require("react") const e = React.createElement const ReactDom = require("react-dom") const CalculatorApp = require("../../lib/calculator-app") ... opisati( "komponenta aplikacije kalkulatora", funkcija () ( ... it("trebalo bi raditi", funkcija () ( ReactDom.render(e(CalculatorApp), document.getElementById("container")) const displayElement = document.querySelector(" .display") očekivati(displayElement.textContent).to.equal("0")Zanimljivi su redovi od 10 do 14. Na redu 10 renderujemo komponentu CalculatorApp, koja (ako ste pratili kod u spremištu) takođe prikazuje komponente Display i Keypad.
Zatim provjeravamo da li u redovima 12 i 14 element u DOM-u pokazuje početnu vrijednost 0 na displeju kalkulatora.
I ovaj kod, koji radi pod Node, koristi document ! Globalna varijabla dokumenta je varijabla pretraživača, ali je ovdje u NodeJS-u. Da bi ove linije funkcionisale, potrebna je veoma velika količina koda. Ova veoma velika količina koda koja se nalazi u jsdomu je u suštini potpuna implementacija svega u pretraživaču, bez samog renderovanja!
Red 10, koji poziva ReactDom da renderuje komponentu, takođe koristi dokument (i prozor), pošto ih ReactDom često koristi u svom kodu.
Dakle, ko stvara ove globalne varijable? Test - pogledajmo kod:
Prije (funkcija () ( global.document = jsdom(`