Szkriptelési feladat megoldása

Hasonló dokumentumok
Powershell 2. gyakorlat

Utolsó módosítás: március 3.

Powershell 1. gyakorlat

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

BASH SCRIPT SHELL JEGYZETEK

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Powershell gyakorlathoz.. Bővebben

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 9. óra. Kocsis Gergely, Kelenföldi Szilárd

Konfigurációkezelés (2B)

BASH script programozás II. Vezérlési szerkezetek

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Az SQL*Plus használata

Pénzügyi algoritmusok

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Modellek ellenőrzése és tesztelése

1. ábra Fájl feltöltése 2. ábra Megtekintés

.NET Microsoft.Net Framework és programozása II.

Szkriptnyelvek. 1. UNIX shell

M-Fájlok létrehozása MATLAB-ban

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

PowerShell v2.0 alapok. Nagy Miklós

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

AWK programozás, minták, vezérlési szerkezetek

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Forráskód formázási szabályok

Modellező eszközök, kódgenerálás

Operációs Rendszerek II. labor. 2. alkalom

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

S z á m í t ó g é p e s a l a p i s m e r e t e k

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Konzolalkalmazások gyors tesztelése

Kikapcsoláskor mindig a Commodore számítógépet vagy a floppy meghajtót kapcsolja ki először.

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Delphi programozás I.

Operációs Rendszerek. Windows Parancssor

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

ÉVFOLYAM ZH PRÓBA. Feladat (projekt- és exe-név: miki; tömörített fájl neve: EHA-kód)

Automatikus tesztgenerálás modell ellenőrző segítségével

Smalltalk 2. Készítette: Szabó Éva

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

S z á m í t ó g é p e s a l a p i s m e r e t e k

Bevezetés a Python programozási nyelvbe

PowerShell v2.0 alapok. Nagy Miklós

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

MATLAB alapismeretek II.

Hálózati adminisztráció levelező tagozat 1. konzultáció vázlata Göcs László

Programozás I. gyakorlat

A C# programozási nyelv alapjai

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Entity Framework alapú adatbáziselérés

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

S z á m í t ó g é p e s a l a p i s m e r e t e k

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Szoftver karbantartási lépések ellenőrzése

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

OOP és UML Áttekintés

Segédanyag: Java alkalmazások gyakorlat

A héj vezérlő szerkezetei I.

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

AWK programozás Bevezetés

Modell alapú tesztelés: célok és lehetőségek

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Objektumorientált programozás C# nyelven

Imperatív programozás

1. Alapok. Programozás II

Digitális technika (VIMIAA02) Laboratórium 5.5

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Windows hálózati adminisztráció

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

I. Felzárkoztató Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Vizuális programozás gyakorlat

Automatizált Java Build. ApacheAnt használatával

C# osztályok. Krizsán Zoltán

Java és web programozás

Objektumorientált programozás C# nyelven

Tesztelési szintek Tesztautomatizálás

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Youtube videó letöltés és konvertálás Linuxon

Unix-Linux alapok I. gyakorlatvezető: Lutár Patrícia

S z á m í t ó g é p e s a l a p i s m e r e t e k

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

AWK programozás, minták, vezérlési szerkezetek

Parancsok. 1. fejezet Könyvtár- és fájlkezelés

Átírás:

Intelligens rendszerfelügyelet (VIMIA370) Szkriptelési feladat megoldása Micskei Zoltán http://mit.bme.hu/~micskeiz Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Feladat Készítsünk egy olyan szkriptet, ami paraméterként kap egy könyvtárnevet kiírja, hogy hány alkönyvtár van benne opcionálisan kiírja, hogy melyik kiterjesztésből van a legtöbb a könyvtárban lévő fájloknál 2

0. Interfész pontosítása Collect-Content.ps1 -Folder <String> [-Extensions] Folder paraméter kötelező Extensions switch típusú, opcionális 3

param ( ) 1. Interfész definíció (params) [string] $Folder, [switch] $Extensions Ellenőrzés: Get-Help.\Collect-Content.ps1 Kimenet: Collect-Content.ps1 [[-Folder] <string>] [-Extensions] Eredmény: o Hiba: Folder nem kötelező így 4

1. Interfész definíció (params, mandatory) param ( [Parameter(Mandatory=$true)][string] $Folder, [switch] $Extensions ) Ellenőrzés: Get-Help.\Collect-Content.ps1 Kimenet: Collect-Content.ps1 [-Folder] <string> [-Extensions] [<CommonParameters>] Eredmény: o ~OK, Folder pozícionális is (maradhat?) 5

2. Paraméterek ellenőrzése Milyen értékeket vehetnek fel a paraméterek? Folder o Nincs megadva Kezelve (bekéri) o Megadva Extensions o Nincs megadva o Megadva 6

2. Paraméterek ellenőrzése (finomítás) Milyen értékeket vehetnek fel a paraméterek? Folder o Nincs megadva Kezelve (bekéri) o Megadva Nem érvényes könyvtár Érvényes könyvtár Extensions o Nincs megadva o Megadva Hibás eset, kezelni kell 7

3. Paraméterek ellenőrzése (érték) Folder értékének ellenőrzése Vizsgálat: Test-Path Hibakezelés: o Mit tegyünk hiba esetén? o Mit tesznek a beépített cmdletek? Pl. Remove-Item c:\notexists Eredmény: kivételt dob if (! (Test-Path $Folder)){ throw "$Folder does not exist!" } 8

3. Paraméterek ellenőrzése (érték) [Még lehetne finomítani, de egyelőre jó így] 9

3. Paraméterek ellenőrzése (érték) Most már van funkcionalitás + ellenőrzés hozzá o Van egy tesztesetünk Jegyezzük fel: o Bemenet: Collect-Content.ps1 c:\notexists o Elvárt eredmény: Kivétel (Erre lehetne teszt szkriptet írni) 10

3. Paraméterek ellenőrzése (összesítés) Milyen értékeket vehetnek fel a paraméterek? Folder o Nincs megadva Kezelve (bekéri) o Megadva Nem érvényes könyvtár Érvényes könyvtár Kezelve (kivétel) Finomítani kell még (funkció) Extensions Nem kell ellenőrizni o Nincs megadva o Megadva 11

4. Paraméterek értékei (funkció) Milyen értékeket vehetnek fel a paraméterek? Folder o Nincs megadva o Megadva Nem érvényes könyvtár Érvényes könyvtár Finomítani kell még (funkció) Nincs alkönyvtára 1 alkönyvtára van több alkönyvtára van alkönyvtárainak is van alkönyvtára Ilyenkor mit tegyünk? Extensions o Nincs megadva o Megadva 12

4. Tesztek a főbb esetekhez Mik a tesztek ehhez a programhoz? o Igazából adott könyvtárak (fájlokkal és könyvtárakkal) o Hozzunk létre ilyen példa könyvtárakat! Ezeket érdemes a kód megírása előtt (lásd TDD) o Segít végiggondolni a funkcionalitást o Kis, ellenőrzött kódrészleteink lesznek [Lehetne izolálni (mock, stub ), hogy ne függjünk a fájlrendszertől, de most jó ez így] 13

4. Tesztek a főbb esetekhez test1: nincs alkönyvtára test2: 1 alkönyvtára test3: több alkönyvtár (+szóköz, ékezetes betűk) 14

4. Tesztek a főbb esetekhez Tesztesetek: 1. 2. 3. o Bemenet: o Elvárt eredmény: o Bemenet: o Elvárt eredmény: o Bemenet: o Elvárt eredmény: Abszolút vagy relatív elérés? Collect-Content.ps1 test1 <Mi legyen a kimenet formája?> 15

Tesztesetek: 1. 2. 3. 4. Tesztek a főbb esetekhez o Bemenet: Collect-Content.ps1 test1 o Elvárt eredmény: Subfolders in <Folder> : 0 o Bemenet: Collect-Content.ps1 test2 o Elvárt eredmény: Subfolders in <Folder> : 1 o Bemenet: Collect-Content.ps1 test3 o Elvárt eredmény: Subfolders in <Folder> : 3 16

4. Alkönyvtárak megszámolás # count subfolders $subfolders = (Get-ChildItem -Path $Folder -Directory).Count Write-Output "Subfolders in $Folder : $subfolders" Futtassuk a tesztjeinket! o Most már jól jönne legalább egy szkript a bemenetekkel Eredmény: OK 17

5. Alkönyvtárak megszámolása (rekurzív) Bővítsük a teszteket a rekurzív számolással Collect-Content.ps1.\tests\test4 Subfolders in.\tests\test4 : 3 Eredmény: HIBA 18

5. Alkönyvtárak megszámolása (rekurzív) Bővítsük a kódot is # count subfolders $subfolders = (Get-ChildItem -Path $Folder -Directory -Recurse).Count Write-Output "Subfolders in $Folder : $subfolders" Nézzük meg, hogy jó-e az új tesztre Nézzük meg, hogy nem rontotta-e el a régieket (!) 19

6. Kiterjesztések megszámolása Mik az esetek a kiterjesztések számolásakor? Nincs egy fájl sem Csak 1 fájl van, van kiterjesztése Több fájl, többféle kiterjesztéssel Több fájl, többféle kiterjesztéssel, több legtöbb kiterjesztés Van olyan fájl, aminek nincs kiterjesztése 20

6. Kiterjesztések megszámolása Tesztesetek: Egybe az előző könyvtárakkal (előny/hátrány?) test1 (üres) test2 o file.txt test3 o New Text Document.txt o other.txt o szöveg.txt o command.cmd o lista.cmd test4 o New Text Document.txt o other.txt o command.cmd o lista.cmd o program.exe 21

6. Kiterjesztések megszámolása Első próbálkozás: $maxextension = Get-ChildItem -Path $Folder -Recurse -File Group-Object -Property extension Sort-Object -Property Count -Descending Select-Object -First 1 Write-Output "Most frequent extension: $($maxextension.name) ($($maxextension.count))" Eredmény: HIBA, ha nincs fájl: Most frequent extension: (0) HIBA, ha több kiterjesztés a leggyakoribb 22

7. Kiterjesztések megszámolása (javítás) # count extensions if ($Extensions){ $extensionsgroup = Get-ChildItem -Path $Folder -Recurse -File Group-Object -Property extension $maximalcount = ($extensionsgroup Measure-Object -Property Count -Maximum).Maximum # get that / those extensions that are the most frequent $frequentextension = $extensionsgroup? {$_.Count -eq $maximalcount} if ($extensionsgroup -eq $null){ Write-Output "No files in the folder" } elseif ($frequentextension.length -eq 1) { Write-Output "Most frequent extension: $($frequentextension.name) ($($frequentextension.count))" } else { Write-Output "Most frequent extensions:" $frequentextension % {Write-Output " $($_.Name) ($($_.Count))"} } } 23

7. Kiterjesztések megszámolása (javítás) Tesztek eredménye: Collect-Content.ps1 -Extensions -Folder.\tests\test1 Subfolders in.\tests\test1 : 0 No files in the folder Collect-Content.ps1 -Extensions -Folder.\tests\test2 Subfolders in.\tests\test2 : 1 Most frequent extension:.txt (1) Collect-Content.ps1 -Extensions -Folder.\tests\test3 Subfolders in.\tests\test3 : 3 Most frequent extension:.txt (3) Collect-Content.ps1 -Extensions -Folder.\tests\test4 Subfolders in.\tests\test4 : 7 Most frequent extensions:.cmd (2).txt (2) Collect-Content.ps1 -Extensions -Folder.\tests\test5 Subfolders in.\tests\test5 : 0 Most frequent extension: (2) Nincs kiterjesztése a fájlnak, mi az elvárt? 24

8. Fejkomment hozzáadása <#.SYNOPSIS Counts the subfolders and most frequent extensions in a folder..parameter Folder The folder to process..parameter Extensions If present, the most frequent extension(s) is listed also. #> 25

HF ellenőrző lista (1) Menjünk végig a HF ellenőrző listán (lásd honlap) SZ1 Szintaktikai hibás megoldás o Futtatjuk még egyszer a tesztekkel: OK SZ2 Pontosan specifikált interfész o Megegyezik betűről-betűre az elvárt interfésszel: SZ3 Ne csak a fejlesztői környezetből fusson o Nem az ISE-ből indulva is fut a kód: OK SZ4 Használjunk nevesített paramétereket o param kulcsszó megoldja: OK 26

HF ellenőrző lista (2) SZ5 Ne tegyen olyat, amit nem kértünk o Csak olvas, nem ír/módosít: OK SZ6 Ne használjunk bedrótozott neveket o Paraméterként kapja a könyvtárat: OK SZ7 Ellenőrizzük a bemenetet o Könyvtár létezését ellenőrizzük: OK SZ8 Adatforgalom, teljesítmény o Nincs távoli lekérdezés, de o ~11ezer alkönyvtár esetén 20 sec (elfogadható?) SZ9 Távoli fél hibájára felkészülés N/A 27

HF ellenőrző lista (3) SZ10 Legyenek részletes tesztesetek o Végén 10 teszteset (bemenet+elvárt kimenet): OK SZ20 Hibakezelés o Nem létező könyvtár esetén kivétel: OK SZ21 Beszédes, differenciált hibaüzenetek o (Most csak egy hibaüzenetünk van) SZ22 Kerüljük a kód duplikálását: OK SZ23 Legyen fejkomment: OK SZ24 Legyen kommentezve: OK 28

HF ellenőrző lista (4) SZ25 Angol változónevek: OK SZ26 Tagoljuk a kódot: OK o Főbb részek üres sorral elkülönítve, if esetén behúzás SZ27 Adott környezet kihasználása o Rekurzív bejárást nem implementáltuk újra: OK SZ28 Beszédes változónevek o $maximalcount, $subfolders és nem $m, $s: OK 29

Összefoglalás Paraméterek végiggondolása o Szintaxis, kötelezőség o Értékek lehetséges osztályai Tesztesetek végiggondolása o Paraméterosztályok alapján o Egyszerű teszteket előre elkészíteni o Lásd: https://inf.mit.bme.hu/content/tesztelesi-alapok HF ellenőrző lista 30