Site-ul pentru testarea testhub · github

Pentru a face site-ul TestHub, care vă permite să creați și să ia teste. Ele pot fi folosite, de exemplu, profesori pentru a testa cunoștințele de studenți, angajatori, pentru a elimina candidati pentru un post vacant de marketing pentru a efectua interviuri.

  • Tehnologia propusă. Cadrul (Symfony 2 (mai greu, dar mai interesant) sau Yii2), MySQL, șablon creanga, ORM Doctrina
  • runtime. totul depinde de tine, dar mi-ar fi uitat la 4-6 săptămâni
  • Nivelul. incepator avansat
  • cunoștințelor necesare. PHP, OOP, HTML / CSS, SQL, elementele de bază JS

Pentru a verifica dacă site-ul funcționează corespunzător, vom folosi automat de testare (am un tutorial pe acest subiect).

Având în vedere că problema este mare, poate doriți să-l facă fragmentară. Puteți seta ordinea:

/ - Main. Acesta conține informații despre serviciul, cheia de intrare / de înregistrare și o listă a unora dintre cele mai populare în ultima lună de teste. tag-uri de ieșire pentru test (firele), numărul de trecut și numărul celor care au încercat să ia testul.

/ Teste - lista de testare. Acesta conține o listă a tuturor testelor de pe site-ul, o cartografiere paginate. Făcând clic pe acest subiect, puteți afișa numai încercările subiectului (în acest caz, acesta va fi introdus în câmpul de căutare). Există o casetă de căutare în cazul în care puteți introduce subiectul sau cuvântul din titlul testului, pentru a afișa numai testele pe acest subiect, sau care conțin cuvântul în titlu (vă puteți gândi, să se uite nu numai în nume, ci și în descrierea testului). câmp de intrare acceptă completarea automată a numelor în ordine.

Tag-uri (subiecte) - Puteți specifica orice, separate prin virgulă, în acest caz, toate etichetele introduse sunt colectate în tabel și sunt folosite pentru completarea automată. litere în tag-ul nu contează, „Fizică“ și „Fizică“ - o etichetă (probabil acestea ar trebui convertite forțat în litere mici). În cazul în care etichetele sunt diferite semne de punctuație doar aceleași (tag-urile pot conține doar o cratimă, virgulă, perioada (nu la sfârșitul numelui)).

  • un răspuns din listă
  • mai multe opțiuni din listă
  • numărul de intrare (care indică eroarea admisibilă)
  • Introducerea textului predictiv (puteți alege mai mult de un răspuns pentru a fi considerate corecte)

La întrebarea indică numărul de puncte pentru răspunsul, opțiunile de răspuns.

Întrebările pot fi reordonate. Având în vedere că problemele sunt mari și incomod pentru a le transporta, poate fi atunci când încercați să trageți problema retragerii din stânga a redus lista de numere la care puteți trage și plasa întrebarea în sine. De asemenea. puteți edita numărul întrebării, pentru a permite în acest scop.

Una dintre întrebările este în editarea Redime și alte probleme afișate pur și simplu (cu numărul de puncte și a marcat răspunsul corect). Faceți clic pe subiect inactiv îl pune în modul de editare.

Este recomandabil să se verifice corectitudinea câmpului înainte de a trimite formularul la server, de exemplu, dacă nu completați numele, apoi faceți clic pe butonul „Creați un test“ ar trebui să mergeți la acesta și va afișa un mesaj de lângă faptul că este un câmp obligatoriu.

Pentru înregistrare este necesar E-mail (confirmare nu este necesară, dar un e-mail de confirmare care va fi trimis. Pentru e-mail neconfirmată nu poate opera anumite funcții, cum ar fi trimiterea de notificări la e-mail), numele (care apare pe site-ul) și parola (nu permit să intre prea simplu ca 123456).

Acesta ar trebui să ofere o protecție de la brute force încercări parolă de limitare dintr-un singur IP într-o unitate de timp.

De asemenea, puteți introduce prin intermediul rețelelor sociale, prima intrare este, în esență, o înregistrare.

Dacă un utilizator uită parola, el poate introduce adresa de e-mail și pentru a obține link-ul. Un utilizator care nu are o parolă și care a trecut prin rețeaua socială, se poate seta în acest fel o parola (cu excepția cazului, desigur, el a subliniat e-mail la înregistrare).

/ Test / NNNN - prima pagină a testului. Se afișează numele, descrierea testului, regulile de livrare sale și statistici scurte, iar mai jos este un buton „test Start“. Făcând clic pe ea începe testul și calendarul.

/ Test / NNN / întrebare - problema paginii de test. Ea arată cât de mult timp este plecat, întrebarea actuală și având în vedere posibilitatea de a răspunde. Puteți reveni la întrebările anterioare. Nu puteți răspunde la întrebare. Controlul timpului ar trebui să fie menținut pe server, acesta nu poate fi evitată.

/ Test / NNN / rezultat - rezultatele testelor pagina. Acesta indică numărul de puncte. În cazul în care utilizatorul nu este înregistrat, vi se solicită să introduceți numele sub care va fi vizibil în tabelul cu rezultate de la profesor. De asemenea, există posibilitatea de a zagregistrirovatsya rapid.

Pentru utilizatorii înregistrați cont personal accesibil, pe care le puteți vedea prin teste, rezultatele trecerii lor, trecerea altor teste. Pentru utilizatorii neînregistrați sunt doar de a trece testele care le-au creat o legătură specială.

Rezultate și liste sunt afișate sub formă de tabel. Tabelele pot fi sortate după coloanele disponibile și se filtrează cu un șir de căutare.

Tabel pot fi exportate (descărcare) CSV, XLS, XML, JSON, TXT (simplă listă de text). În acest caz, acestea vor fi sortate și filtrate în același mod ca și tabelul este sortat pe ecran (acest lucru ar trebui să arate avertismentul).

Trebuie să ne gândim cum să-i spuneți utilizatorul despre opțiunile de filtrare. Puteți afișa un indiciu atunci când cursorul este în câmpul, puteți afișa „până în prezent“ buton, „data“, se introduce structurile corespunzătoare în domeniu.

Tabelul poate fi sortate după dată, numele, numărul de puncte, numărul de încercări.

Filtrul poate fi dupa nume, data, numărul de puncte.

Pentru a face test de import de la formatele populare și Moodle Moodle XML CADOU. Moodle - este un popular platformă open source pentru crearea de cursuri de e-learning. Acest lucru ne va permite să atragă profesori care și-au făcut deja teste pe acest sistem.

Efectuarea unui test de formate de export Moodle XML, GIFT, DOC, TXT. Ultimele 2 sunt necesare în cazul în care profesorul dorește să trimită un exemplu de test pentru aprobare. Acestea trebuie să fie numele de test, descrierea, timpul trece și max. numărul de puncte, întrebări, răspunsuri, dreptunghiuri pentru răspunsul de intrare / de selecție (dacă fișierul de imprimare).

Puteți adăuga în continuare Export în PDF.

Test de imprimare. Profesorul poate dori să imprime un test pentru a umple stiloul. Acesta ar trebui să facă un test de compact (este necesar pentru a salva de hârtie). Tipărește pagina aveți nevoie pentru a numi opichanie de testare, trecerea timpului, numărul maxim de puncte, întrebări, opțiuni pentru umplere.

Imprimați rezultatele testelor (sau orice alt tabel din contul dvs. personal). Este necesar să se ascundă elementele suplimentare de pagină, lăsând doar tabelul cu date. Încercați să-l compact, pentru a evita irosirea de hârtie. În acest tabel dlozhna fi sortate și filtrate în conformitate cu setările (acest lucru ar trebui să fie un mesaj de avertizare).

Asigurați-vă posibilitatea de a modifica numele, e-mail, schimbați parola.

Posibilitatea post-test pentru a posta rezultatele în rețeaua socială.

Sfaturi pentru punerea în aplicare

Toate formele (și link-uri, cum ar fi razloginivaniya) ar trebui să fie zaschisheny împotriva CSRF jeton.

Încercați pentru a maximiza caracteristicile cadrului, mai degrabă decât scris o bicicletă. De exemplu, formulare, grile, protectia CSRF, migrarea bazei de date model.

Pe pagina de test, lista jQuery UI poate fi utilizat pentru completarea automată pentru completare automată (și poate numele de test de?).

Pentru a găsi test este suficient pentru a utiliza o interogare de tip SQL numele LIKE „%% cuantic“ și numele de LIKE „%% fizica“. În cazul în care testul este un pic în cazul în care o mulțime (și doriți să faceți un pic mai complicat), este necesar să se facă o căutare full-text sau conectați Sfinxul.

Pentru a pune în aplicare trecerea materiei în curs de editare în stare normală poate fi realizată prin intermediul CSS, stil câmpurile de introducere și textarea într-o problemă latente, astfel încât acestea arata ca un text normal.

Baza de date este logic să facă același tabel pentru testele, unul pentru întrebări și, poate un altul pentru răspunsuri și legarea lor la chei străine.

O temă separată - înregistrare. Iată câteva caracteristici în valoare de vedere:

Nu spune id token-uri și aplicații în cod sau de configurare pe care le-ați evacuate în depozit.

Când veți pune în aplicare de intrare prin intermediul rețelei externe, încercați să faceți totul în stilul OOP, de exemplu, HTTP client pentru a face un singur obiect, mai degrabă decât încorporate în codul și scrie astfel încât nici un sistem de intrare schimbare poate fi mutat în orice alt site. Apoi, testați sistemul, atunci acesta va fi mult mai ușor.

Multe servicii folosesc acum protocolul OAuth (sau OAuth 2) pentru a intra prin intermediul lor, dar fiecare pic diferit. Aceasta face viața mai ușoară pentru dezvoltatori. În cazul în care rețeaua socială oferă posibilitatea de a primi e-mail, nu uitați să-l întreb.

Referințele la descrierea API:

De asemenea, există servicii, cum ar fi ulogin, care predostalvyayut intrarea ușor prin intermediul rețelei sociale prin adăugarea unui script pe pagină. Nu le folosiți. În primul rând, pentru că nu ai învățat nimic, iar în al doilea rând, ei privesc vizitatorii (chiar dacă acestea nu se conectează), și încărcate o grămadă de ifreymov discutabil în pagină (găsi orice site cu un astfel de sistem, și a vedea pentru tine inspectorul).

aveți nevoie pentru a trimite HTTP-cereri pentru a interacționa cu API. Utilizați orice bibliotecă gata făcute, de exemplu, guzzle Sach populare.

Pe Facebook puteți testa pentru a intra prin intermediul site-ului pentru a crea utilizatori de phishing web speciale - este convenabil.

Pentru a afișa tabelul cu rezultatele din cadrul dumneavoastră, cu siguranță există ceva. În Yii are o grilă, în Symfony 2 au nici o terță parte plug-in.

Yunit- și teste de integrare

  • Verificați dacă numărul de puncte la momentul testului sunt considerate
  • Verificați că „cel mai popular luna pentru“ teste sunt considerate corecte

Site-ul utilizează servicii externe (rețele sociale). Nu este bine în testele pentru a interacționa cu ei fără a fi necesară, trebuie să se gândească la modul în care să le înlocuiască (și au trimis date) pregătite în avans prize.

Nu a fost încă făcută. Iată conturul:

Este interesant de a învăța cum să facă site-ul ar putea ocupa un flux mare de vizitatori? Apoi, trebuie sa umplem entitățile de baze de date, și testați-l folosind Benchmark Apache, sau mai bine încă, Siege. Poate de optimizare interogare undeva în valoare, undeva pentru a adăuga cache.

Dacă vă simțiți trist uita la un site pe jumătate goale, sau doresc să verifice și cum s-ar comporta dacă adăugați o mulțime de date, puteți scrie generator de date pentru a crea profesori, studenți, teste, întrebări, răspunsuri, rezultate.

Văd despre această opțiune:

Sintaxa poate fi schimbată. Ar trebui să genereze și să comunice între ele, toate aceste entități în numărul corect.

Surse de date pentru generatorul:

e-mail - puteți genera în fakenamegenerator sau ceva de tine, cum ar fi nume.

Încercați să faceți o listă (nu știu în ce format - poate fi un fișier txt cu valorile pe linii separate, sau JSON) date brute și generator de șurub. Foarte mult nu trebuie să deranjeze, principalul lucru pe care am putea zaplnit baza de valori plauzibile.