„BPROF:2dm” változatai közötti eltérés

A Miau Wiki wikiből
(Alternatívák)
(Tesztelés)
267. sor: 267. sor:
  
 
=Tesztelés=
 
=Tesztelés=
 +
==Saját kód tesztelése==
 +
Github Actions szolgáltatás segítségével minden egyes Branch Merge (vö.: ) alkalmával tesztelendő a kód, ezen és ezen szempontokból:
 +
* ...
 +
* ...
 +
* ...
 +
==Belső tesztelés==
 
A keretrendszer megvalósításakor intézményen belüli, és kívüli személyeket felkértünk a tesztelésre.
 
A keretrendszer megvalósításakor intézményen belüli, és kívüli személyeket felkértünk a tesztelésre.
==Belső tesztelés==
 
 
Kiosztott jogosultságokkal belső tesztelés folytatódott intézményen belül, melynek segítségével több hibát is felfedeztünk.
 
Kiosztott jogosultságokkal belső tesztelés folytatódott intézményen belül, melynek segítségével több hibát is felfedeztünk.
 
privat kanban boardon (majd elkészül)
 
privat kanban boardon (majd elkészül)

A lap 2022. december 3., 09:49-kori változata

Ez a szócikk a "Rendszertervezés" tantárgy keretében keletkező dokumentum, mely része a szakdolgozat mellékleteinek. Tartalmazza a felhasznált technológia részletes leírását, informatikai felépítését. A dokumentum a reprodukálhatóság elősegítéséhez készült

Szakdolgozat részei

  • GTS (Graphical Test Software), ez a tesztek lejátszására kifejlesztett szoftver
  • GTDS (Graphical Test Designer Software), ez a tesztek tervezésére kifejlesztett szoftver
  • Theme4GTS ,ez a témák létrehozására fejlesztett szoftver
  • Language4GTS ,ez a nyelvek létrehozására fejlesztett szoftver

Fogalmak

(potenciális változók a kódhoz)
  • puzzle: X-szer Y-os háló, melyben a sorfejléc (X) és oszlopfejléc (Y) attribútumok alapján kell elhelyezni az odaillő válaszkártyát
  • X(i): sorfejléc, mely megadja a válaszkártya1. attribútumát
  • Y(j): soszlopfejléc, mely megadja a válaszkártya2. attribútumát
  • válaszkártya(k): képkocka, melyet el kell helyezni a megfelelő kockájába a hálónak
  • megoldástér(i,j,k):
  • keretrendszer: puzzle megjelenítő szoftver
  • log: minden tevékenység (pl. egérmozgás, billentyű-leütés, billentyű-kombináció) feljegyzése egy fájlban, dátummal felcímkézve (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro#Tanfolyami_vez.C3.A9r-feladatok)
  • kiértékelés: válaszkártyák helyének helyességének ellenőrzése
  • ...
  • teszt:
  • hiba:
  • játék:
  • ...

Megrendelői kezdeményezés

Létezik egy 2DM-játék (https://miau.my-x.hu/miau/254/2dm_kemia_demo/), amelyben a feladat egy 3x3-as* hálóban különféle képeket elhelyezni az oszlop- és sor-fejlécek alapján. A létező 2DM-játék log-ja a vágólapra keletkezik a JavaScript lehetőségei mentén. Az új rendszerben a sebezhetőségek minimalizálása, csalás minden mennyiségű kizárása a cél.

Feladat:

  • Új játék tervezését és
  • futtatását támogató keretrendszer kialakítása úgy, hogy
  • a keretrendszer által olyan output kialakítása, mely a jelenlegi 2DM-megoldás által azonnal futtatható

Nem feladat:

  • online kollaboratív munka támogatása
  • adatbázis-alapú megoldás kialakítása

Jelenlegi 2DM játék

Struktúrája: A jelenleg már elkészült 2DM játék adatbeolvasását,adatstruktúráját ki kell nyomozni annak érdekében, hogy a dolgozatban készülő játék kompatibilis lehessen vele.

Nyomozás lépései:

  1. https://www.cyotek.com/downloads/info/setup-cyowcopy-1.9.0.822-x86.exe alkalmazás segytségével letöltöttem a https://miau.my-x.hu/miau/271/2dm/ weboldal összes fájlját (https://github.com/kje-pitlik/2dm-source).
  2. letöltött adatok: img/,00m.png,03-00.png,03-30.png,03-49.png,03h.png,12-00.png,12-30.png,12-49.png,12h.png,18-00.png,18-30.png,18-49.png,18h.png,30m.png,49m.png,AD_CLOCK.jpg,auth.png,auth_alairas.png,auth_arc.png,auth_dns.png,auth_gepeles.png,auth_hang.png,auth_irisz.png,auth_kez.png,auth_retina.png,auth_ujj.png,BLANK_BLANK.png,BLANK_C1.png,

BLANK_C2.png,BLANK_C3.png,BLANK_R1.png,BLANK_R1_BLANK_C1.png,BLANK_R1_BLANK_C2.png,BLANK_R1_BLANK_C3.png,BLANK_R2.png,BLANK_R2_BLANK_C1.png,BLANK_R2_BLANK_C2.png,BLANK_R2_BLANK_C3.png,BLANK_R3.png,BLANK_R3_BLANK_C1.png, BLANK_R3_BLANK_C2.png,BLANK_R3_BLANK_C3.png,BRW.png,circle.png,COIN_1E.png,COIN_20C.png,COIN_2C.png,COLOR_DOT.jpg,COLOR_FLAG.jpg,COLOR_SHAPE.jpg,COLOR_TETRIS.jpg,DIR_B.png,DIR_BC.png,DIR_BL.png,DIR_BR.png,DIR_C.png,DIR_L.png,DIR_M.png, DIR_MC.png,DIR_ML.png,DIR_MR.png,DIR_R.png,DIR_T.png,DIR_TC.png,DIR_TL.png,DIR_TR.png,dot_1.png,dot_2.png,dot_3.png,EUR_COIN.jpg,favicon.ico,flag1.png,flag1_BRW.png,flag1_GRW.png,flag1_GRY.png,flag2.png,flag2_BRW.png,flag2_GRW.png,flag2_GRY.png, flag3.png,flag3_BRW.png,flag3_GRW.png,flag3_GRY.png,FLAG_IRL.png,FLAG_SMR.png,FLAG_SVK.png,FRENCH_CARD.jpg,GRW.png,GRY.png,hearts.png,hearts_jack.png,hearts_king.png,hearts_queen.png,hexagon.png,IRL_1E.png,IRL_20C.png,IRL_2C.png,jack.png,king.png, LArrow.png,logo.jpg,pikes.png,pikes_jack.png,pikes_king.png,pikes_queen.png,queen.png,RArrow.png,SMILEY_DIR.jpg,SMR_1E.png,SMR_20C.png,SMR_2C.png,SVK_1E.png,SVK_20C.png,SVK_2C.png,tetris_1.png,tetris_11.png,tetris_12.png,tetris_13.png,tetris_2.png, tetris_21.png,tetris_22.png,tetris_23.png,tetris_3.png,tetris_31.png,tetris_32.png,tetris_33.png,tiles.png,tiles_jack.png,tiles_king.png,tiles_queen.png,triangle.png,TTT_E1.png,TTT_E2.png,TTT_E3.png,TTT_M1.png,TTT_M2.png,TTT_M3.png, - card-design.css,- carousel.js, - gameProperties.js, - gameScreenEvents.js, - index.htm, - index.js, - style.css, - util.js

  1. ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
  2. egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
  3. régi 2DM-játék által igényelt specifikációk véglegesítése
  4. egy régi 2DM-játék (értékes tartalommal történő) manuális előállítása a specifikációk alapján az új játék fejlesztője által
  5. manuálisan készített saját játék tesztelése
  6. ezen manuális saját játék új keretrendszerben való reprodukálása és az output tesztelése

Rendszer megrendelővel egyeztetett követelményei

  • optimális (tesztelt):
    • windows 11
    • Intel Core i5 11th gen
    • 16GB ram
  • választott technológiák:
    • Programnyelv: C# (verzio: C# 10.0,net6.0)
    • lokális adattárolás: JSON
    • publikus adattárolás: Firebase NoSQL adatbázis

Egyéb funkciók

  • UI személyre szabása előre elkészített, akár a felhasználók által személyre szabott téma segítségével - (színvilág/színharmónia nem ellenőrzött, a téma tervezőjének kell figyelnie arra, hogy a felhasznált színek nem olvadnak egybe egymással)
  • nyelvek támogatása, akár a felhasználók által definiált szótár segítségével - (szótár helyessége nem ellenőrzött, nincs kizárva akár a halandzsa nyelv használata sem)

Folyamatábrák

  • Teszt tervezésének folyamatábrája:........
  • Teszt megírásának folyamatábrája:........
  • Teszt kiértékelésének folyamatábrája:........

IT biztonsági kérdések

licenszelés

A szoftver licensszel való védése már egy erős IT biztonsági lépés.

Ingyen kellene adni, mert nem tartom reálisnak, hogy a tanárok/iskolák erre költenének. -> önkormányzatoknak kellene ezeket managelni?

ki kaphat licenszt?

Adatbázis (Firebase):

_______________________________
| licensz tulaj | licensz kód |
###############################
| ............. | ........... |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Amelyik kód bent van az adatbázisban a megfelelő rekordokkal, az hozzáférhet a programhoz

licensz generálása

Szerveren° futtatandó scriptnek kellene kérésre generálnia licensz kulcsokat, és azokat eltárolni a Firebase-s adatbázisban

° milyen szerveren?

Szoftverben használt csomagok és azok licenszeik

Log rendszer

A rendszer minden felhasználói tevékenységet feljegyez mind fejlesztési, mind a csalás elkerülése érdekében. Jelenleg logolható:

  • app minimalizálása, bezárása, teszt elindítása

Tervezett funkciók:

  • internet használat elemzés (van-e esetleg olyan kulcsszavú keresés, mint amilyen szavak/kifejezések vannak az éppen aktív teszt fájljaiban?)
  • egérmozgás elemzés (mennyire határozott a teszt író -> túl nagy határozottság akár azt is jelentheti, hogy valahonnan megszerezte a megoldásokat a teszthez ?)
  • ismert közösségi,csevegésre használt alkalmazások meg vannak-e nyitva (Messenger,Discord,facebook.com,Skype,Teams stb), ezek csalásra adhatnak lehetőséget
  • külső meghajtók vannak-e csatolva
  • adat mozgatás történt-e a számítógépen a teszt írása közben (x lokációról y lokációra való fájl mozgás)
  • operációs rendszerre telepített képfelismerési program detektálása
  • távolról van-e vezérelve a gép
  • képernyőkép készítésének logolása
  • automatikus egér mozgató (ha van ilyen) auto clicker detektálása
  • ...

Rendszerspecifikáció

Ajánlott irodalom/demo/minta: http://centroszet.hu/tananyag/ - pl. http://centroszet.hu/tananyag/szervezes2/615_rszletes_rendszerterv.html 

Logikai rendszerterv

Fizikai rendszerterv

Program specifikáció

A követekző alfejezetben fogom összegyűjteni a program különféle specifikációját

User interface

Választott UI technológia

  • WPF, xaml
  • továbbá kiegészítés C# segítségével

Alternatívák

Adattárolás

Lokális adattárolás választott formája

  • A JSON fájlok egyszerű olvashatósága, értelmezhetősége miatt bárki létre tud hozni saját témát, nyelv sémát.
  • Alternatív megoldások elvetésének indoklása: Egyszerű txt fájlok is megfelelőek a feladatra, ám a JSON fájltípus által biztosított kulcs-érték adatszerkezet nagy segítséget nyújt a fájl adatbázis szerű átláthatósághoz, illetve a programmal való feldolgozhatósághoz.

Ez a saját téma/nyelvi csomag létrehozásának segítségül is szolgáló leírás.

  • A keretrendszer az adatokat .json fájlokban tárolja. Ezek
    • a beállítási adatok (kiválasztott téma illetve nyelv),

Unrestricted adattárolás választott formája

Firebase adatbázis

Konfiguráció

A rendszer konfigurálható paramétereit json fájlokban tároljuk, melyek a rendszer különböző életciklusaiban kerülnek betöltésre.

defaultConfig.json

Rendszer újraindításától lép életbe.

{
 "data": [
   {
     "theme": "dark.json",
     "language": "hu.json"
   }
 ]
}

Nyelv fájl

Rendszer újraindításától, vagy új nyelv kiválasztásakor lép életbe.

{
   "windowTitle": "Teszt kitöltése...",
   "loadTestFileBtn":"Teszt fájl betöltése",
   "startTestBtn":"Teszt indítása",
   "settingsBtn":"Beállítások",
   "nextBtn": "Következő",
   "previousBtn": "Előző",
   "saveBtn":"Mentés"
}

Tesztadatok

A tesztfolyamat adatok betöltése után lép életbe. Az elérési útvonalnak a publikált képekre kell mutatni. EZ a githubos környezet eseten a githubra felötlött képekre mutat. (kérdés, válasz lehetőségek)

{
"puzzles": [
   {
     "question": "Ide írjuk a kérdést",
     "correctGridOrder": {
       "1": "C:/Users/x/Y/kep1.png",
       "2": "C:/Users/x/Y/kep2.png",
       "3": "C:/Users/x/Y/kep3.png",
       "4": "C:/Users/x/Y/kep4.png",
       "5": "C:/Users/x/Y/kep5.png",
       "6": "C:/Users/x/Y/kep6.png",
       "7": "C:/Users/x/Y/kep7.png",
       "8": "C:/Users/x/Y/kep8.png",
       "9": "C:/Users/x/Y/kep9.png"
     }
   },…
]
}

Esetleges többletadat figyelmen kívül hagyása.

Téma fájl

Rendszer újraindításától, vagy új téma kiválasztásakor lép életbe.

{
 "data": [
   {
     "backgroundColor": [ 120, 0, 100, 0 ],
     "buttonColor": [ 150, 0, 255, 0 ]
   }
 ]
}

Értelmezése: argb színkódolást használ a szoftver, mely az Alpha, Red,Green és Blue színekből állít elő szint.

pl: "backgroundColor" színkódjának értelmezése
120: Alpha
0: Red
100: Green
0: Blue

Hibaelhárítás

(note: milyen funkciok vannak amik segitenek a hibaelharitasban)

A log megjelenítése a felhasználónak. Log automatikus kielemzése (pár alap esetet tudok előre definiálni, pl.: rossz json struktura, rossz fajlkiterjesztes stb), és tanács adás a felhasználónak, hogy vajon mi történt, és mit tudna tenni, hogy legközelebb ne történhessen meg ilyen eset. A szoftver kísérletet tehet a hiba automatikus kijavítására ezekben az esetekben:

  • hibás .json fájl struktúra -> amennyiben logikus hiba van (hiányzik "," ":" "{" karakter), pótolni tudja azokat. Természetesen tudomást ad a felhasználónak, hogy nem feltétlen a kívánt adat lett előállítva.
  • Amennyiben olyan eset áll elő, ami nem pre-definiált, akkor support kontaktálás (email)
  • ...

Előredefiniált hibák:

  • ...
  • ...

Perzisztencia

Egy konfig fájlba vannak írva a külön beállítások (nyelv, téma), tehát ezek perzisztensek. A teszt írása közben készülő, sérülésmentes logfájl segítségével (a teszt tervező engedélyével) vissza lehet állítani a folyamat utoljára elmentett állapotát, akár rendszer újraindulás után is

Tesztelés

Saját kód tesztelése

Github Actions szolgáltatás segítségével minden egyes Branch Merge (vö.: ) alkalmával tesztelendő a kód, ezen és ezen szempontokból:

  • ...
  • ...
  • ...

Belső tesztelés

A keretrendszer megvalósításakor intézményen belüli, és kívüli személyeket felkértünk a tesztelésre. Kiosztott jogosultságokkal belső tesztelés folytatódott intézményen belül, melynek segítségével több hibát is felfedeztünk. privat kanban boardon (majd elkészül)

Külső tesztelés

Publikus tesztelés, ezen a kanban boardon kell gyűjteni a problémákat a projekttel kapcsolatban: https://github.com/users/SiposPtr/projects/2

Fejlesztői saját 2DM-játékok

A fejlesztés során az alábbi tartalmi kihívások

1. játék

  • X=3
    • X1=...
    • X2=...
    • X3=...
  • Y=3
    • Y1=...
    • Y2=...
    • Y3=...
  • válaszkártyák (9=3*3)
  1. ...
  2. ...
  3. ...
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. ...

i. játék

  • X>3
  • Y>3
  • X<>Y


Teszt katalógus

A katalógus menű a GTS-catalog https://github.com/orgs/GTS-catalog/repositories repository-kat fetcheli, és jeleníti meg a listanézetben. A repository-kból csak a ".json" fájlokat jeleníti meg.

Saját teszt publikálása

https://miau.my-x.hu/mediawiki/index.php/BPROF:2dm_q1