Tesztelés a Gyakorlatban - A szakértő tesztelők lapja

Finomított tesztelés és ellenőrzés


A képzett kognitív munka nem gyári betanított munka, ezért fontos, hogy felfogjuk mit is tesztelünk és hogyan tudják ezt az eszközök segíteni. A tesztelési módszertanokban különbséget teszünk a gépi munkavégzés és a tapasztalt tesztelői munka között. Vagyis az ellenőrzés és a tesztelés között.

Az írás társszerzője Micheal Bolton. Órákat fordítottunk minden egyes mondaton való vitatkozásra. Köszönettel tartozunk továbbá McCowatt-nak, a gyors felülvizsgálataiért és megjegyzéseiért.

A tesztelés és az eszközhasználat két dolog volt, amelyet emberség jellemzett a kezdetektől. (Nem csak ez a két dolog, de minden bizonyosan kettő a sok ezt jellemző dolog közül.) De amíg a tesztelés agyi és nagyrészt szellemi, az eszközhasználat eléggé nyílt körű. Az eszközök befolyásolnak minden folyamatot amelyet érintenek és meg is változtatják a folyamatokat. Így legalább évszázadok, vagy évezredek filozófiáján keresztül csodálkozunk „Ezt most én tettem, vagy az eszköz volt? Egy harcos vagyok, vagy csak a dárdát dobó akárki? Egy farmer vagyok vagy ekét toló?” Ahogy Marshall McLuhan mondta: „Mi formáljuk az eszközt, majd ezt követően az eszköz formál minket”.

Az evolúció alattomosságra képes folyamat, próbára tesz minket, ahogy aggatjuk magunkra és a környezetünkre a címkéket. Tanúi lehetünk, hogyan iparosodnak el az asztalos kézművesek bútorgyárakká, ami arra sarkall minket, hogy arról beszéljünk hogy a bútorkészítők szerepe megváltozott, de egy bútorgyári dolgozó nem egy átformált bútorasztalos. A kézműves asztalosok még mindig jelen vannak – igaz kevesebben, mint voltak – távolról sem a gyár dolgozza ki az igényes kialakítású bútorokat. Egy tapasztalt asztalos (mármár szinte biztos vagyok abban, hogy google-ban is van egy speciális szó „szakértő asztalos”-ra) még mindig keresett, mert vannak olyan problémák amelyeket egy IKEA nem tud megoldani. Ez a szituáció fennáll a tudományban, és az orvostudományban is. Ez mindenütt jelen van: milyen következményei lehetnek az evolúció eszközeinek a szakemberekre? Bárki aki arra törekszik hogy megállja a helyét a szakmában, ki kell harcolnia a megfelelő pozícióját az eszközökkel.

Ezért ne lepődj meg, hogy a tesztelés ma egy olyan folyamat ami magába foglalja az eszközök sokaságát, és ez az ami harcra hívja egy tesztelő gondolkodását.

Ez mindig is jelenlévő probléma volt - ezzel dolgoztam és vitatkoztam egészen 1987 óta, és a szakirodalom egészen 1961-re tekint vissza – de történt valami új: nagyszabású mobil számítástechnika. Igen, ez volt az az új dolog. A legnagyobb kihívásnak látom a tesztelés területén a micro-számítógépek megjelenése óta. Miért éppen ez a kihívás? Mert eddig a termékek összetettsége és a platformok évtizedek alatt növekedtek folyamatosan, most pediglen ott a hatalmas szoftverpiac amelyben az alkalmazások rövid időn belül telepítésre kerülnek és azonnal frissíthetőek.

Nagyon gyorsan szeretnénk egy terméket tesztelni? Ezt hogyan csináljuk? Könnyű lenne azt mondani: „majd az eszközök megcsinálják”. Ez hatalmas nyomást kelt a tapasztalt szoftvertesztelőkre és azokra, akik a teszteszközöket készítik a tesztelőknek. Így gondolják azok a nem tapasztalt szoftvertesztelők, akik a tesztelés iparosításáról azt látják, hogy a tesztelés eléggé hasonlít a bútorgyárakhoz.

Hisszük, hogy a képzett kognitív munka nem gyári munka. Ezért ez sokkal fontosabb, mint valaha, hogy felfogjuk, mit tesztelünk és hogyan tudják ezt az eszközök segíteni.

Ellenőrzés a teszteléssel szemben


Ebből az okból kifolyólag a gyors szoftvertesztelés módszertanában különbséget teszünka folyamat tesztelésének szempontjából arra, amelyekre a gépek képesek és arra, amelyeket csak a tapasztalt emberek tudnak véghezvinni. Nyelvi szempontból ezt úgy tettük, hogy a rendszerinti angol szót „checking” (ellenőrzés) ahhoz tettük, amit az eszközök képesek végezni. Ezzel teljes párhuzamban van az amit a fejlesztés során „programozásnak” és „fordításnak” nevezünk. A programozás az, amit az emberek tesznek. A fordítás egy bizonyos eszköz a programozók számára. Ha már itt tartunk, senki nem beszél automatizált programozásról és kézi programozásról. Van programozás és van egy csomó egyéb dolog amik eszközökkel készülnek. Ha létrejön egy eszköz, hogy elvégezzen valamit, azt már nem nevezik programozásnak.

Most, hogy Micheal és én már több mint 3 éves tapasztalattal dolgozunk ezzel a megkülönböztetéssel, még tovább élesítettük a nyelvezetünket frissített megállapításokkal és egy új különbségtétellel az emberi ellenőrzés, és a gépi ellenőrzés közt.

Először is vessünk egy pillantást a tesztelésre és az ellenőrzésre. Itt vannak az új javasolt definícióink, amit hamarosan lecserélünk arra, amit évekig használtunk. (feltéve hogy átnézik és kommentálják a kollégák):

A tesztelés a termék értékelésének folyamata, megismerni kísérletezéseken keresztül, ami magába foglalja valamelyest az alábbiakat: megkérdőjelezés, tanulás, modellezés, megfigyelés és következtetés.

(A teszt egy példánya a tesztelésnek.)

Az ellenőrzési folyamat az értékelés készítésének folyamata, ahol algoritmikus szabályokat alkalmazunk egy termék specifikus megfigyeléséhez.

(Az ellenőrzés egy példánya az ellenőrzési folyamatnak)

Magyarázó megjegyzések:

„Értékelni” azt jelenti elbírálni; ez jó? ez rossz? átment? elbukott? ilyesmi.

„Értékelés” mint főnév utal a termék értékelésére, amely az ellenőrzés keretében egy afféle tárggyá válik.

„Tanulás” valakinek a gondolatát fejleszteni. A legjobb érzékkel csak emberek képesek tanulni, ahogy azt mi is tesszük itt, mert a hallgatólagos és explicit tudást birtokoljuk.

„Kísérletezés” foglalkozni egy témával és megfigyelni azt ahogy működik. Még mindig sokszor „gondolati kísérlethez” folyamodunk, amely magában pusztán feltételezett interakció. Kísérletezésre hagyatkozva nem tagadjuk meg, vagy nem utasítjuk el a tanulás egyéb formáit, csupán azt próbáljuk meg kifejezni, hogy a kísérletezés egy gyakorlás.

„Algoritmikus”, vagyis ki lehet fejezni olyan úton-módon, hogy egy eszköz el tudja végezni.

„Megfigyelések” magukba foglalják a teljes folyamat megfigyelését, és nem csak annak eredményét.

„Specifikus megfigyelések” azt jelentik, hogy a megfigyelés folyamatának eredményei összefüggésben állnak (egyébként az algoritmikus döntési szabályok nem tudják feldolgozni).

Itt vannak bizonyos vonatkozásai a definícióknak:

  • A tesztelés magába foglalja az ellenőrzést, de önmagában az ellenőrzés még nem tesztelés.
  • Az ellenőrzés egy olyan folyamat, amelyet elméletileg egy eszköz végez az ember helyett, mivel a tesztelést csak eszközökkel lehet támogatni. Mindazonáltal, az eszközök sokkal többre használhatóak, mint egy ellenőrzés.
  • A tesztelés egy hosszabb vizsgálat, míg az ellenőrzés egy rövid „tény ellenőrzés” és elsősorban a konkrét tényekre, és a tényekre vonatkozó szabályokra fókuszál.
  • Az ellenőrzés nem egyenlő a megerősítéssel. Az ellenőrzést gyakran használják megerősítés módon (jellemzően regressziós tesztelés alatt), illetve használják nem megfelelőséghez is.
  • Az egyik leggyakoribb probléma az iparágban, hogy az ellenőrzést összekeverik a teszteléssel. A célunk az, hogy ezt a keveredési zavart csökkentsük.
  • Amíg az ellenőrzés körülírható, egy teszt lehet, hogy nem (ez azért van, mert ellentétben az ellenőrzéssel, a tesztet rejtett tudás is jellemzi).
  • Ezek a definíciók nem morális ítéletek. Nem mondjuk, hogy az ellenőrzés egy eredendően rossz dolog. Éppen ellenkezőleg, az ellenőrzést nagyon fontos végrehajtani. Azt állítjuk, hogy az ellenőrzés alapvetően jó, meg kell történnie a tesztelési folyamat alatt. Az ellenőrzés a tesztelés egyik taktikája.

Merre gondolkodjunk?

Ha követed a munkásságunkat, akkor tudnod kell, hogy ezt nagyon átgondoltuk. Egy átgondolt folyamat olyan dolog, amihez szükség van egy megfelelően szakképzett emberre is a végrehajtásához. Ugyanakkor több éves gyakorlás alatt úgy találtuk, közel lehetetlen azt a benyomást elkerülni, hogy ez egy nem átgondolt folyamat (egy olyan, ami nem igényel embert, de mégis szükséges hozzá egy tehetséges és képzett ember), egy hülye folyamat, hülye embereknek. Ezért van az, hogy az átgondolt szó intelligenciát sugall.

Az emberi ellenőrzés, a gépi ellenőrzéssel szemben

Bár az átgondoltság problematikus cím, még mindig különbséget kell tennünk aközött, amit az ember, és amit az eszköz képes tenni. Ezért amellett, hogy alapvető különbség van az ellenőrzés és a tesztelés között, különbséget kell tennünk az emberi ellenőrzés és a gépi ellenőrzés között is. Ez úgy tűnik egy kicsit zavaros elsőre, mert ellenőrizni definíció szerint valami, amit a gépek csinálnak. Megbocsátható a gondolat, miszerint az emberi ellenőrzés is csak ugyanolyan, mint a gépi ellenőrzés. De mégsem az. Nem lehet ugyanolyan.

Az emberi ellenőrzésnél az emberek próbálnak követni egy explicit algoritmikus folyamatot. Az eszközök esetében azonban nem csak követik ezt a folyamatot, hanem ők maguk testesítik meg azt. Az emberek nem testesítenek meg ilyen algoritmust. Itt egy példa arra, hogy a kísérletet bebizonyítsam: vedd rá az embereket, hogy kövessenek egy sor utasítást. Most nézd meg mi történik, ha lehetetlenné teszed, hogy teljes mértékben kövessék az utasításokat. Nem fognak csak ott ülni amíg szomjan- vagy éhen nem halnak. Leállnak és másképp próbálkoznak, vagy kilépnek a folyamatból. És ez az amikor biztosra veheted, hogy az ember – teljes egészében - amit megtestesít több annál, hogy elfogadja a folyamatot és megpróbálja követni azt. Nem haladunk előrébb ha hétköznapi emberekről beszélünk, vagy minimális kognitív képességről. Az emberek bármilyen eljárást követnek mindig csinálnak valami mást is. Az emberek állandóan értelmeznek és ettől függően módosítják tennivalójukat, amire egy eszköz nem képes. Ez elkerülhetetlen.

Az emberek célszerű tevékenységet képesek végrehajtani; az eszközök csak programozott viselkedést tanúsítanak (lásd Harry Collins és Martin Kusch „Shape of Actions” c. zseniális könyvét magyarázatul, miért is van ez így). A lényeg: definiálhatsz egy ellenőrzést könnyedén, de egy ember kicsit több idő alatt fogja végrehajtani ezt az ellenőrzést – és egyben kevesebb alatt bizonyos szempontól -, mint egy programozott eszköz. Értsük meg, az eszközöknek egy igen erős szerepe kell legyen a tesztelésben. Ahogy dolgozunk, az idő múlásával a jövő szakképzett, nagy teljesítményű és hatékony tesztelést hoz. Ez megköveteli, hogy figyelmesen osszuk el az emberi- és a gépi oldalt a tesztelés során. Az eszközök segíthetnek, és ez messze túlmutat az automatizált ellenőrzéseken. De ebben elkerülhetetlenül szerep hárul a szakképzett emberekre is; mivel az eszközök szakképzetlen használatának szörnyű következményei lehetnek.

Lehet meglepő az, hogy miért hívjuk úgy az emberi ellenőrzést, hogy „tesztelés”. Nos, annak hívjuk. Az emberi ellenőrzés része a tesztelésnek. mindenesetre azt vallom, hogy amikor az ember kifejezettem megpróbálja korlátozni a gondolatait az ellenőrzés határain belül – annak ellenére, hogy ez teljes mértékben nem fog sikerülni – az egy speciális visszafogott tesztelési taktika és nem egy átfogó tesztelés.

Mindezt szem előtt tartva, valamint azzal a céllal, hogy a ködöt eloszlassuk, felfogásunkat erősítsük, idézzük fel az ellenőrzés meghatározását:

Az ellenőrzési folyamat az értékelés készítésének folyamata, ahol algoritmikus szabályokat alkalmazunk egy termék specifikus megfigyeléséhez.

Ebből kiindulva, az ellenőrzés három fajtáját azonosítottuk:

  • Az emberi ellenőrzés egy kísérletező ellenőrző eljárás, ahol a emberek összegyűjtik a megfigyeléseiket és alkalmazzák a szabályokat az eszközök közvetítése nélkül.
  • A gépi ellenőrzés egy olyan eljárás, ahol az eszköz észrevételeket gyűjt, alkalmazva a szabályokat az emberek közreműködése nélkül.
  • Ember/gép ellenőrzés egy kísérletező ellenőrző eljárás, amelyben az emberek és az eszközök közreműködnek egymással, hogy észrevételeket gyűjtsenek és alkalmazzák a szabályokat.

Annak érdekében, hogy ezt végigmagyarázzuk, specifikus példákkal kellett szemléltetnünk. De ezt majd egy következő cikkben tesszük meg.

Addig is kérjük, jelezzétek észrevételeiteket ezzel az írással kapcsolatban.

Szerző:
James Bach

<< Vissza