BPROF:2dm

A Miau Wiki wikiből
A lap korábbi változatát látod, amilyen Jkv1 (vitalap | szerkesztései) 2023. február 14., 15:30-kor történt szerkesztése után volt. (Választott technológiák)

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

Tartalomjegyzék

Szakdolgozat alrendszerei

  • 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:
  • rendszer
  • réteg
  • modul
  • alrendszer
  • szoftver
  • licensz

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
  2. letöltött adatok megjelenítése
  3. ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
  4. egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
  5. régi 2DM-játék által igényelt specifikációk véglegesítése
  6. 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
  7. manuálisan készített saját játék tesztelése
  8. 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 10
  • Intel Core i5 11th gen
  • 16GB ram

Választott technológiák

  • Programnyelv:
    • desktop:
      • C# (verzió: C# 10.0,net6.0)
    • mobil:
      • Swift
  • lokális adattárolás: JSON
  • publikus adattárolás: Firebase NoSQL adatbázis
  • Bevonni tervezett online szolgáltatások:
    • Általunk használandó:
      • ChatGPT
      • flowchart tervező
    • Általunk ajánlott:
      • nayuki.io/page/png-file-chunk-inspector
      • png/jpeg/gif ellenőrzése
      • helyesírásellenőrzés
      • szöveget tartalmazó kép helyesírás ellenőrzése
      • felolvasó robot esetén helyes-e a szöveg?
    • Ötletek

Vizuális követelmények

single Játéktervező nézetei

  • nyitó kép (1.vizuális réteg):
    • tartalom:
      • logó
      • pl: copyright @ 2023 Sipos
      • termék neve
      • verziószám
      • elérhetőségek
        • weboldal
        • telefon
        • email
        • ...
    • forma:
      • betűméret
      • stílus
      • nyelv (nyelvválasztó, 0. vizuális réteg?)
      • ...
    • funkcionalitás:
      • automatikusan betöltődik
      • X másodpercig látható
      • legalább az elérhetőség kijelölhető
      • a nyitó képet a menük egyik alpontja újra betölti (kapcsolatok)
  • ÁSZF/szerződés (2.vizuális réteg):
    • tartalom:
      • licensz típus
      • adatgyűjtés (GDPR)
        • játéktervező felel a GDPR általi nem érintettségért
        • log gyűjtés szabályrendszere. ezzel egyet kell értetni mind a játék tervezőt, mind a játék játszóját
      • copyright a képekre (felelősség játéktervező részéről, NEM a keretrendszer tervező részéről!)
      • halmazelméleti szabályok közlése a sor és oszlop fejlécre vonatkozóan
        • kihagyásmentesség
        • átfedésmentesség
      • súgó elérhetősége
      • helyetérzékeny súgók elérhetősége
      • GYIK
    • forma
      • kiemelések
      • ugrópontok
        • email
        • weboldal
        • applikáción belüli ugrópont (pl.: helyetérzékeny súgók)
      • kijelölhetőségek
      • betűméret
      • betűstílus
    • funkcionalitás
      • ÁSZF archiválhatósága (letölthetősége ... )
      • súgók demója
      • ÁSZF accept/deny gomb/checkbox
      • Online adatbáziskapcsolat engedélyezése (ezt letiltva a felhasználó beszorítja magát a lokális adattérbe, ezt lehet később módosítani)
      • Accessibility nézet
        • színvakság
        • szoftveres felolvashatóság
        • élő billentyűkről szóló tájékoztatás
          • ne lehessen felesleges inputot megadni, engedélyezetlen eszközről
        • ...
  • Menü (3. vizuális réteg)
    • tartalom
      • szingle játék tervezése (egyenlőre 3x3)
        • ellenőrzési elemek:
          • játék adatfájljainak elérésének megadása (létezik-e az elérési útvonal)
          • kép fájl típusok megadása listából (png, jpg, gif ...)
            • képfájl tartalom azonosság ellenőrzése (fizikai azonosság, másolatok más néven való ellenőrzése)
            • hiba üzenet ha nincs pontosan 17 db megfelelő formátumú képállomány
            • maximum felbontás ellenőrzése (hiba üzenet ha a méret/arány nem megfelelő pl.: 400x400)
            • kép permission olvashatóságának (read,write,execute) ellenőrzése
            • kép formátum önazonosságának ellenőrzése ( attól még, hogy .png, valóban kép-e a kép)
            • felső fájl méret ellenőrzése
            • színpaletta egyenszilárdságának ellenőrzése
            • vízjelmentesség ellenőrzése
            • (törvényi előírásokat nem sértő tartalom garantálása)
            • könyvtár olvashatóságának ellenőrzése
            • kép fájl tartalmaz-e káros kódot?
            • kép fájl nevek nem tartalmazhatnak speciális karaktereket (ékezet szóköz , fájlnév 1-17ig stb)
            • képek stílusa egyezik-e? (pl.: mindegyik kép eliptikus...)
        • képek játékba integrálása
          • 17 soros összerendező táblázat (1-17ig előre kitöltve felülírhatóság mellett és a felhasználó ehhez fog alkalmazkodni)
            • lapozó kép (1)
            • bal felső sarok (2)
            • oszlop bal (3)
            • oszlop közép (4)
            • oszlop jobb (5)
            • sor felső (6)
            • sor közép (7)
            • sor alsó (8)
            • válaszkártyák (9-17)
      • multi játék tervezése (csak single alapon)
        • integrálandó játékok számának megadása (2-től N-ig)
        • N db alkönyvtár megadása abban a sorrendben, amiben a játékok integrálandók (ezek a könyvtárak a single játék tervezés eredményeinek kell hogy legyenek)
        • játéktervező szoftver névjegyének ellenőrzése könyvtáranként
      • lokális adatfájl betöltése
      • játék indítása
      • online adatfájlok elérése katalógusosan
      • beállítások elérése
        • tervezői beállítások
          • időlimites-e a játék
          • éles vagy próba játék (lehet újrapróbálni...)
          • tesztíró azonosítási módja (pl.: anonim, belső kód ...)
          • ....
    • forma
      • ellenőrzési elemekről olvasmányos,színes visszaigazolás
    • funkcionalitás
      • játéktervezés:
        • ellenőrzési lépések után a felhasználót a lépések sikerességéről tájékoztatva:
          • megfelelő játéktípus szükséges alkotórészeinek új alkönyvtárba másolása
          • 1-17 képfájlok másolat készítése,átnevezése
          • játékindítás fejajánlása

Játékot használó vizuális rétegei

....

Egyéb követelmények

Internet elérése szükséges a Kvíz Katalógus használatához, hiszen csatlakoznia kell a Firebase adatbázishoz

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

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


https://miau.my-x.hu/miau/292/2dm_figures/ folyamatabrak lesznek

IT biztonsági kérdések

  • kulcsok tárolása a forráskódban?
    • tanács: nem az .exe -be fordítjuk bele a kulcsot, hanem valamilyen keychain szolgáltatásból nyeri ki
  • Hálózaton keresztül történő adatátvitel feltörhetősége
  • Logika nem a kliens,hanem a szerver oldalon kell, hogy tárolva legyen
  • Adatbázishoz való hozzáférés kiosztása
  • JSON alapú lokális adattárolás megfelelőssége
  • régebbi verziójú keretrendszer használatának korlátozása, ezzel is csökkentve annak az esélyét, hogy egy már felefedezett sebezhetőségnek nem tesszük ki a felhasználót.
  • képekhez kötődő károkozási formák feltárása
  • kép eredeti (licensz kérdés nincs ha saját) vagy manipulált-e?
    • ...pdf url
    • elérési út alapján ellenőrizendő: létezik-e az objektum? (igen/nem)
      • nem = hibaüzenet a felhasználónak a helyes elérési útvonal kikényszerítésére
    • elérési útvonalban megadott fájl kiterjesztésének ellenőrzése (megfelel az előre fellistázott opcióknak/nem felel meg)
      • nem = hibaüzenet a felhasználónak a helyes kiterjesztés kikényszerítésére
    • elérési útvonalban megadott objektum jogosultságainak ellenőrzése (olvasható/nem olvasható)
      • nem = kérjük oldja fel, az olvashatóság korlátozását
    • a szóban forgó objektum megfelel-e a kiterjesztéshez kapcsolódó összes elvárásnak (igen/nem)
    • kép méret,harmónia, ellenőrzése
      • ezeknek a sorrendje?
        • először méret, legvégén a harmónia
        • szerintem rettentő mindegy
      • kép ne olvadjon bele a futtató környezetbe
      • színharmónia megítélése
        • skálázható
        • mondhatja a szoftver, hogy szerinte ez csúnya

Programnyelv

Desktop

interpretált vs fordított

https://www.freecodecamp.org/news/compiled-versus-interpreted-languages/#:~:text=Examples%20of%20pure%20compiled%20languages,Haskell%2C%20Rust%2C%20and%20Go.

  • Interpretált programnyelv:

Az interpretált sorról sorra olvassák be a programot, és futtatnak le minden parancsot. Ezek a programnyelvek szignifikánsabban lassabbak, mint a fordított programnyelvek.
pl.: Python, Ruby

  • fordított programnyelv:

Közvetlenül a CPU-ba vannak írva, és ezért gyorsabban lehet futtatni öket, mint az interpretált nyelveken íródott programokat. Hátránya, hogy a fejlesztéskor minden változtatás futtatásakor rebuildelni kell a teljes programot.
Előnye, hogy mivel a CPU-ba vannak írva, nehezebb hozzáférni a forráskódhoz. pl.: C++, Rust, Go

Konklúzió: Nem lesz logika tárolva a frontendben, ez a későbbi alfejezetekben lesz kifejtve.

Mobil

Swift

Tesztelt prorgamnyelvek

C#
Feltörése

C# visszafejtése JetBrains dotPeek szoftver segítségével: https://miau.my-x.hu/mediawiki/index.php/BPROF:Csharp_Visszafejt%C3%A9se

  • C# helyett mi?

Ruby

Mivel nem fordított nyelv, ezért a kódot nem lehet "elrejteni". A program egy *.rb fájl lenne, és ezt kellene futtatni egy interpreter segítségével. Emiatt a Ruby programnyelv használatát elvetem (a szakdolgozat GUI részének megvalósításához)

Feltörése

Nincs szükség rá,mivel magát a script fájlt futtattam le


Rust

Fordított programnyelv, tehát IT biztonsági szempontból megfelelő.


Logika tárolása

A keretrendszer logikáját nem maga a kliens,hanem a szervernek kellene kezelnie

Backend

Itt kell a logikát tárolni. (azaz,hogy a képkockák jo helyen vannak -e Feladat: megfelelő backed service-t találni

Lista lehetséges backend service-kről:

  • heroku.com (fizetős)
  • aws

Frontend

Itt nem kellene semmi logikát tárolni, csak az adatokat megfelelő módon átadni a backendnek Feladat: megtalálni a megfelelő frontend setupot. Megfelelő = szép, kultúrált, lehetőleg multiplatform supportos Kiválasztott: electron


licenszelés

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

ki kaphat licenszt?

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

Licensz tárolása adatbázisban (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?

licensz archiválása

licensz árazása

Lokális adattárolás

Nem éppen megfelelő az alkalmazás adatait JSON fájlokban tárolni. pl.: .db fájlban tárolni? https://learn.microsoft.com/en-us/windows/apps/design/app-settings/store-and-retrieve-app-data

Szoftverben használt csomagok és azok licenszeik

majd a végén, amikor kész lesz a szoftver

Log rendszer

A rendszer minden felhasználói tevékenységet feljegyez mind fejlesztési, mind a csalás elkerülése érdekében. A teszt fejlesztője megmondhatja, hogy mennyire kell szigorúan venni a szabályokat:

  • minden csalás tiltott, első attrocitás esetén a teszt lezárul, a log elkészül
  • csalások nincsenek engedélyezve, ám nem zár le a keretrendszer, csak logolja, hogy ez és ez történt
  • szabadon lehet csalni
  • beállíthatjuk, hogy mit vegyen csak figyelembe a rendszer. (indoklása: pl moodlen feltöltött anyagokat lehet használni, de más internetes keresést stb... nem)

Jelenleg logolható

  • app minimalizálása, bezárása, puzzle 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 puzzle 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, https://2b2t.miraheze.org/wiki/Baritone) 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

Eredeti, elvetettt ötlet

Githubon organizációban tárolt adatok. Hozzáfárés engedélyrzése esetén lehetett ide publikálni repositorykat. Ez se informatikailag, se IT biztonságilag nem volt megfelelő ötlet, ám nem kellett adatbázist fenntartani hozzá.

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

Adatbázis jogosultságai

Csak megfelelő ID-val lehet elérni az adatbázist, melyet az alkalmazás tárol. Ezt megfelelően kell tárolni, hogy ne lehessen kinyerni a forráskódból, Az ID csak az áruház adatait tároló adatrészhez kap olvasási jogosultságot. .......

Egyéb ötletek

Egyszeri jelszóval (OneTimePassword) azonosítsuk a klienst. Ehhez generáltatni kell egy jelszót, melyet el kell tárolni az adatbázisban is valami módon.

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, ez esetben csak az 1-9ig felsorolt adatokat, és a "question" kulcsban megadott adatokat fogja figyelembe venni a rendszer.

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

Ebben a fejezetben fogom leírni mind a belső (saját magam/KJE-n belüli) mind a külső (.......) tesztelési folyamatokat, észrevételeket, eredményeket.

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)


Github Actions szolgáltatás segítségével minden egyes Branch Merge (vö.: https://www.w3schools.com/git/git_branch_merge.asp?remote=github) alkalmával tesztelendő a kód, ezen és ezen szempontokból (ezek a logikai szempontok, ezekből még nem tudjuk, hogy miket lehet megvalósítani):

  • Projekt buildelhetőségének tesztelés:
    • A program le tud futni, nincs benne hiba
    • ...
  • Játék játszhatóságának tesztelése
    • Sikerült adatot betölteni
    • Van output a játékból

Nem szempont:

  • Tartalmi ellenőrzés

Mivel ez csupán forráskód, ezért nem szükséges a szakdolgozatíró saját magának írt kódot ellenőrizni tartalmi szempontból, hiszen nem publikus

Projekt buildelhetőségének tesztelés

GitHub action fájl:

name: build and test
on:
 push:
 pull_request:
   branches:
     - '**'
   paths-ignore:
   - 'README.md'
env:
 DOTNET_VERSION: '6.0.x' # The .NET SDK version to use
# Defines a single job named "build-and-test"
jobs:
 build-and-test:
   # When the workflow runs, this is the name that is logged
   # This job will run three times, once for each "os" defined
   name: build-and-test-$Sablon:Matrix.os
   runs-on: $Sablon:Matrix.os
   strategy:
     matrix:
       os: [windows-latest]
   # Each job run contains these five steps
   steps:
   # 1) Check out the source code so that the workflow can access it.
   - uses: actions/checkout@v2
   # 2) Set up the .NET CLI environment for the workflow to use.
   #    The .NET version is specified by the environment variable.
   - name: Setup .NET
     uses: actions/setup-dotnet@v1
     with:
       dotnet-version: $Sablon:Env.DOTNET VERSION
   # 3) Restore the dependencies and tools of a project or solution.
   - name: Install dependencies
     run: dotnet restore
   # 4) Build a project or solution and all of its dependencies.
   - name: Build
     run: dotnet build --configuration Release --no-restore
   # 5) Test a project or solution.
   - name: Test
     run: dotnet test --no-restore --verbosity normal

Github Action kód magyarázat

Alap konfiguráció

Ez az alap konfig, még nem a kódot teszteli, hanem megmondja, hogy mit kell/mit nem kell testtelni. a Github Action action neve

name: build and test

Minden branchet végig tesztel, minden egyes Git push eseménykor:

on:
 push:
 pull_request:
   branches:
     - '**'

A Readme.md fájlokat kihagyja a tesztből:

paths-ignore:
  - 'README.md'

Beállitja a .NET verziót 6.0.X-re (mivel a keretrendszer ezt használja vö.: *link a specifikáciokbol*, X >= 0)

env:
 DOTNET_VERSION: '6.0.x'

valamiiiii

jobs:
 build-and-test:

sdrdfsdffdfdfd

name: build-and-test-$Sablon:Matrix.os
  runs-on: $Sablon:Matrix.os
  strategy:
    matrix:
      os: [windows-latest]
Forráskód tesztelése

Itt kezdődik a prejekt testz

Játék játszhatóságának tesztelése

Készülnie kell egy Unit tesztelő algoritmusnak, mely tudni fogja a keretrendszerek paramétereit, argumentumjait, és ennek megfelelően megpróbálja mind valid, mind invalid adatokkal feltölteni a keretrendzsert. Ennek eredményeaképpen látni fogjuk, hogy milyen inputra milyen output fog keletkezni, és felfedhetőek lesznek az inkonzisztens adatok által létrehozott hibák is.

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

Hogyan nézzen ki egy lefejlesztendő játék, amennyiben a fejlesztő kézzel, és nem az erre megadott alrendszert (GTDS) használja.

1. játék

  • X=3
    • X1= oszlop1
    • X2= oszlop2
    • X3= oszlop3
  • Y=3
    • Y1= sor1
    • Y2= sor2
    • Y3= sor3
  • válaszkártyák (9=3*3)
    • VK1= kép1-nek a lokális elérési útvonala
    • VK2= kép2-nek a lokális elérési útvonala
    • VK3= ...
    • VK4= ...
    • VK5= ...
    • VK6= ...
    • VK7= ...
    • VK8= ...
    • VK9= kép9-nek a lokális elérési útvonala
  • Maga a feladat megfogalmazása

i. játék

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

Teszt katalógus

A katalógus a Firebase adatbázist fetcheli, és jeleníti meg.

A katalógus a GTS alrendszer része, mivel:

  • a tesztírónak elég egy alkalmazást tudnia használni
  • a teszt megírása amúgy is a GTS rendszerben fog történni, így kézenfekvő a kvízek letöltése onnan, ahol a kvízt két-három kattintással később le is lehet játszani

Saját teszt publikálása

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

Üzleti hasznosítás

Lényegében iskoláknak készült, hogy a tanulókat számon kérjék stb.................

Kapcsolódó wiki-oldalak