← Blog

Tester'ni qanday qurdim

Mentorlikdagi muammodan ~200 foydalanuvchili anti-cheat test platformasigacha.

Sfera Academy'da mentor bo'lib ishlaganimda testlarni Google Forms orqali olardim. Natijalar juda yaxshi chiqardi. Darsda `for` siklini zo'rg'a yozadigan o'quvchi ham 10 dan 10 olardi. Sababi oddiy edi: o'quvchi yangi tab ochadi, savolni ChatGPT'ga tashlaydi va javobni ko'chiradi. Men bilimni emas, tab almashtirish tezligini o'lchayotgan ekanman.

Tester shu muammodan boshlandi.

## G'oya

O'qituvchi testni yaratadi va Google Meet'dagidek bitta havola tarqatadi (`tester.lesson24.uz/dqn-rfab-teu`). O'quvchilar shu havola orqali kirib test topshiradi. Platforma ko'chirishga urinishlarni kuzatadi, o'qituvchi esa jarayonni jonli ko'rib turadi.

## Texnologiya

Avvaliga real-time va ko'p foydalanuvchi bo'lgani uchun Go'ni o'yladim. Oxiri **Django + DRF + PostgreSQL**'ni tanladim, chunki mahsulotni tez chiqarish muhimroq edi. Bitta guruhda 20–30 o'quvchi bo'ladi, bu Django uchun muammo emas.

Avval backend'ni to'liq yozib serverga joyladim, keyin **React + TypeScript** frontend'ni tayyor API ustiga qurdim. Kirish Google OAuth2 va JWT orqali ishlaydi.

## Anti-cheat

Brauzer hamma narsani ko'ra olmaydi. O'quvchi telefoniga qarasa, buni JavaScript aniqlay olmaydi. Shuning uchun maqsadni ko'chirishni qiyin va ko'rinadigan qilish deb belgiladim:

- **Tab va oyna**: `visibilitychange` va `blur` hodisalari.

- **Kamera**: kadrda yuz yo'qolsa, ogohlantirish beriladi.

- **Ovoz**: shovqin bo'lsa, faqat hodisa sifatida yoziladi.

Har bir hodisa alohida saqlanadi. O'qituvchi bitta "ko'chirdi" belgisini emas, butun tarixni ko'radi va qarorni o'zi qabul qiladi.

Birinchi testdan muhim saboq oldim: kamera ruxsati oynasi yoki tizim bildirishnomasi ham `blur` hodisasini beradi. Noto'g'ri ayblov o'qituvchining ishonchini yo'qotadi, shuning uchun bunday holatlarni filtrlashga to'g'ri keldi.

## Claude connector

O'qituvchilar eng ko'p vaqtni savol kiritishga sarflayotganini ko'rib, Tester uchun MCP server yozdim. Endi o'qituvchi Claude'ga "kasrlar mavzusida 15 ta savollik test tuz" deb yozadi, test esa to'g'ridan-to'g'ri Tester'da paydo bo'ladi.

## Hozir

Tester ishlab turibdi, ~200 foydalanuvchisi bor. Uni Lesson24 jamoasida Otabek Nabiyev bilan birga rivojlantiryapmiz. Katta maqsadimiz DTM darajasidagi testlarni ham Tester'da o'tkazish.

Siz ham o'qituvchi bo'lsangiz, sinab ko'ring: [tester.lesson24.uz](https://tester.lesson24.uz)