minőségbiztosítás a fejlesztési folyamat során

65
Minőségbiztosítás a Minőségbiztosítás a fejlesztési folyamat fejlesztési folyamat során során Pusztai Pusztai László László vezető konzulens vezető konzulens Gaál Gaál László László rendszermérnö rendszermérnö k k Microsoft Microsoft Magyarország Magyarország

Upload: tyme

Post on 15-Jan-2016

33 views

Category:

Documents


0 download

DESCRIPTION

Minőségbiztosítás a fejlesztési folyamat során. Pusztai László vezető konzulens. Gaál László rendszermérnök. Microsoft Magyarország. Tartalom. A minőségbiztosítás szükségessége A minőségbiztosítás eszközei Napi tevékenységek A minőségbiztosítás elemei a napi fejlesztői munka során - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Minőségbiztosítás a fejlesztési folyamat során

Minőségbiztosítás a Minőségbiztosítás a fejlesztési folyamat soránfejlesztési folyamat során

Pusztai LászlóPusztai Lászlóvezető konzulensvezető konzulens

Gaál LászlóGaál Lászlórendszermérnökrendszermérnök

Microsoft MagyarországMicrosoft Magyarország

Page 2: Minőségbiztosítás a fejlesztési folyamat során

TartalomTartalom

A minőségbiztosítás szükségességeA minőségbiztosítás szükségességeA minőségbiztosítás eszközeiA minőségbiztosítás eszközeiNapi tevékenységekNapi tevékenységekA minőségbiztosítás elemei a napi A minőségbiztosítás elemei a napi

fejlesztői munka soránfejlesztői munka soránA termék kiadásaA termék kiadásaÖsszefoglalóÖsszefoglaló

Page 3: Minőségbiztosítás a fejlesztési folyamat során

Miért szükséges a Miért szükséges a minőségbiztosítás?minőségbiztosítás?

A projektek „nem kellően A projektek „nem kellően sikeres” ¾-e miattsikeres” ¾-e miatt

A „kommunikációs és A „kommunikációs és működési gondok” miattműködési gondok” miatt

28%28%46%46%

Page 4: Minőségbiztosítás a fejlesztési folyamat során

Ha ez nincs…Ha ez nincs…tipikus párbeszédtipikus párbeszéd „„Kijavítottátok azt a hibát, amit a Kijavítottátok azt a hibát, amit a mmezőbankosok jeleztek?”ezőbankosok jeleztek?” „„Miért, mi bajuk volt?”Miért, mi bajuk volt?” „„Igen, én megcsináltam”Igen, én megcsináltam” „„Akkor add ide a javítást, mert a Polgári Bankba is ki kéne Akkor add ide a javítást, mert a Polgári Bankba is ki kéne

vinni…”vinni…” „„Ott nem az új verziót tetted fel tegnap?”Ott nem az új verziót tetted fel tegnap?” „„De igen, csak azt otthon fordítottam, és a De igen, csak azt otthon fordítottam, és a BtrieveBtrieve-driver -driver

valamiért nem fordult le, úgyhogy abból a régit tettem fel valamiért nem fordult le, úgyhogy abból a régit tettem fel nekik.”nekik.”

„„Várj, odaadom azt is”Várj, odaadom azt is” „„De megy ez az ő megjelenítőjükkel?”De megy ez az ő megjelenítőjükkel?” „„Nem tudom, nekem ment”Nem tudom, nekem ment”

Page 5: Minőségbiztosítás a fejlesztési folyamat során

MinőségbiztosításMinőségbiztosítás

VáltozáskezelésselVáltozáskezelésselFix pont: a projekt aktuális állapotaFix pont: a projekt aktuális állapota

ezt az állapotot tudjuk kontrolláltan változtatniezt az állapotot tudjuk kontrolláltan változtatni

Projekt-állapotProjekt-állapot SpecifikációSpecifikáció A kód állapotaA kód állapota Bejelentett hibákBejelentett hibák

Page 6: Minőségbiztosítás a fejlesztési folyamat során

A szükséges infrastruktúraA szükséges infrastruktúra Nyilvántartás a specifikációk részéreNyilvántartás a specifikációk részére

követelménykezeléskövetelménykezelés Munkadarabok jegyzékeMunkadarabok jegyzéke

felelős, készültségi fokfelelős, készültségi fok Belső szabályrendszerBelső szabályrendszer

projekt-kézikönyvprojekt-kézikönyv Forráskód-kezelő rendszerForráskód-kezelő rendszer

a szoftver aktuális állapotaa szoftver aktuális állapota Hibajelentéseket kezelő rendszerHibajelentéseket kezelő rendszer

az aktuális állapotról szóló visszajelzések nyilvántartásaaz aktuális állapotról szóló visszajelzések nyilvántartása

Page 7: Minőségbiztosítás a fejlesztési folyamat során

Napi munkafázisok – fejlesztésNapi munkafázisok – fejlesztésDevelopDevelop

Készül az új kódKészül az új kód A fejlesztő dolgozik a A fejlesztő dolgozik a

saját gépénsaját gépén

DevelopDevelop(fejlesztés)(fejlesztés)

Specify(specifikálás)

módosítottmódosítottés új kódés új kód

módosított és újkövetelmények

Page 8: Minőségbiztosítás a fejlesztési folyamat során

Napi munkafázisok – bejelentésNapi munkafázisok – bejelentésCheck-inCheck-in

Az elkészült Az elkészült munkadarab munkadarab integrációja a integrációja a szoftver aktuális szoftver aktuális állapotábaállapotába

Változás!Változás! tehát változáskezelést tehát változáskezelést

kell alkalmaznikell alkalmazni forráskód-kezelőforráskód-kezelő szabályokszabályok

Develop(fejlesztés)

Check-inCheck-in(beadás)(beadás)

Specify(specifikálás)

aktuálisaktuálisállapotállapot

módosítottés új kód

módosított és újkövetelmények

Page 9: Minőségbiztosítás a fejlesztési folyamat során

Napi munkafázisok – buildNapi munkafázisok – buildBuildBuild

A szoftver aktuális A szoftver aktuális állapotának állapotának leképezése leképezése telepíthető termékkételepíthető termékké

Ha a projekt Ha a projekt elkészült, ennek az elkészült, ennek az eredményét adjuk ki a eredményét adjuk ki a megrendelőnekmegrendelőnek

BuildBuild(elkészítés)(elkészítés)

Develop(fejlesztés)

Check-in(beadás)

Specify(specifikálás)

aktuálisállapot

napinapibuildbuild

módosítottés új kód

módosított és újkövetelmények

Page 10: Minőségbiztosítás a fejlesztési folyamat során

Napi munkafázisok – tesztelésNapi munkafázisok – tesztelésTestTest

A termék aktuális A termék aktuális állapotának állapotának összevetéseösszevetése a követelményekkela követelményekkel általános elvárásokkaláltalános elvárásokkal

A visszajelzéseket A visszajelzéseket rögzítjükrögzítjük

Build(elkészítés)

Develop(fejlesztés)

Check-in(beadás)

TestTest(tesztelés)(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,hibák,vissza-vissza-jelzésekjelzésekmódosított

és új kód

módosított és újkövetelmények

Page 11: Minőségbiztosítás a fejlesztési folyamat során

VisszacsatolásVisszacsatolás

A fejlesztést A fejlesztést természetesen természetesen befolyásolják a befolyásolják a bejelentett hibák és bejelentett hibák és egyéb észrevételek isegyéb észrevételek is

Build(elkészítés)

DevelopDevelop(fejlesztés)(fejlesztés)

Check-in(beadás)

Test(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,vissza-jelzésekmódosítottmódosított

és új kódés új kód

módosított és újkövetelmények

Page 12: Minőségbiztosítás a fejlesztési folyamat során

A napi ciklusA napi ciklusA teljes képA teljes kép

A csapat tagjai A csapat tagjai konkurrensen hajtják konkurrensen hajtják végre az egyes végre az egyes fázisokatfázisokat

Ezeket az Ezeket az állomásokat állomásokat tárgyaljuk most tárgyaljuk most részletesenrészletesen

Build(elkészítés)

Develop(fejlesztés)

Check-in(beadás)

Test(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,vissza-jelzésekmódosított

és új kód

módosított és újkövetelmények

Page 13: Minőségbiztosítás a fejlesztési folyamat során

A napi ciklusA napi ciklus

09:3009:30 Napindító megbeszélésNapindító megbeszélés09:4509:45 Fejlesztés, tesztelésFejlesztés, tesztelés17:0017:00 Check-in ablak nyílik, peer code Check-in ablak nyílik, peer code

review-kreview-k18:0018:00 Napi buildNapi build

Page 14: Minőségbiztosítás a fejlesztési folyamat során

A fejlesztési szakaszA fejlesztési szakaszDevelopDevelop

A tényleges fejlesztés A tényleges fejlesztés folyamatafolyamata

Erről ma nem Erről ma nem beszélünkbeszélünkmegtanulható megtanulható

iskolában, iskolában, tanfolyamon, tanfolyamon, könyvből, könyvből, önképzéssel, önképzéssel, munka közben, …munka közben, …

Build(elkészítés)

Develop(fejlesztés)

Test(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,vissza-jelzések

módosított és újkövetelmények

aktuálisállapot

módosítottmódosítottés új kódés új kód

Check-in(beadás)

Page 15: Minőségbiztosítás a fejlesztési folyamat során

De akkor miről?De akkor miről?

Arról, hogy...Arról, hogy... Hogyan rendszerezzük a fejlesztendő Hogyan rendszerezzük a fejlesztendő

munkadarabokatmunkadarabokat Hogyan kövessük a kód változásaitHogyan kövessük a kód változásait

Page 16: Minőségbiztosítás a fejlesztési folyamat során

DevA forrásfaA forrásfa

A forráskód a A forráskód a rendszer rendszer komponentizálásának komponentizálásának megfelelő irányított megfelelő irányított gráfgráf

A levélelemek A levélelemek tartalmazzák az tartalmazzák az egyes komponensek egyes komponensek forráskódjátforráskódját

Page 17: Minőségbiztosítás a fejlesztési folyamat során

Dev

Hogyan építsük fel a Hogyan építsük fel a forrásfát?forrásfát? Legyen benne minden, ami a termék Legyen benne minden, ami a termék

elkészítéséhez kellelkészítéséhez kell Forráskód + eszközök = termék (ez a build környezet)Forráskód + eszközök = termék (ez a build környezet) A dokumentumoknak is a forráskód követő rendszerben A dokumentumoknak is a forráskód követő rendszerben

a helyüka helyük

Ne szennyezzük a fordítás során előálló Ne szennyezzük a fordítás során előálló fájlokkalfájlokkal

Minden egyes ágnak gazdája kell, hogy legyenMinden egyes ágnak gazdája kell, hogy legyen Az eszközöket célszerű külön, több projekt Az eszközöket célszerű külön, több projekt

számára közös ágban elhelyezniszámára közös ágban elhelyezni

Page 18: Minőségbiztosítás a fejlesztési folyamat során

Dev

Példa forrásfa Példa forrásfa szerkezetszerkezetd:\sourcesd:\sources

\foo\foo\binary_release\binary_release

\x86\x86\specs\specs\src\src

\feature1\feature1\feature2\feature2

\testsrc\testsrc\bvt\bvt\feature1\feature1\feature2\feature2

\tools\tools

Page 19: Minőségbiztosítás a fejlesztési folyamat során

DevKülső függőségekKülső függőségek Amikor egy másik csapat vagy projekt Amikor egy másik csapat vagy projekt

eredményeit kell felhasználnunkeredményeit kell felhasználnunk Microsoft komponensek (msvcrt, msvbvm, mdac)Microsoft komponensek (msvcrt, msvbvm, mdac) ActiveX kontrollokActiveX kontrollok

A forrásfa meghatározott részére kerül a másik A forrásfa meghatározott részére kerül a másik projekt bináris-fájának egy részeprojekt bináris-fájának egy része

Követelmények az átadott binárisokkal Követelmények az átadott binárisokkal szemben:szemben: Binárisok és teljes debug info (PDB) az összes Binárisok és teljes debug info (PDB) az összes

támogatott platformratámogatott platformra

Page 20: Minőségbiztosítás a fejlesztési folyamat során

DevForrásfa házirendForrásfa házirend Meghatározza, hogy milyen szabályok szerint Meghatározza, hogy milyen szabályok szerint

lehet kódot elhelyezni a forrásfábanlehet kódot elhelyezni a forrásfában Milyen időközönkéntMilyen időközönként Milyen jóváhagyást igényelMilyen jóváhagyást igényel Milyen minőségi feltételeknek kell eleget tegyenMilyen minőségi feltételeknek kell eleget tegyen Beadási szabályok (Checkin policy)Beadási szabályok (Checkin policy)

Adminisztratív eszközökkel betartandóAdminisztratív eszközökkel betartandó A fejlesztők oktatandókA fejlesztők oktatandók

Ha nem lehet betartani, elágaztatásra van Ha nem lehet betartani, elágaztatásra van szükségszükség

Page 21: Minőségbiztosítás a fejlesztési folyamat során

Dev

Mikor ágaztassunk Mikor ágaztassunk el?el?Ha szükség van rá, mertHa szükség van rá, mert

Inkompatibilis házirendInkompatibilis házirend Termék kiadásaTermék kiadása Új funkciók fejlesztéseÚj funkciók fejlesztése

Ne másoljunk, ha elágaztatás a célNe másoljunk, ha elágaztatás a célHa egy ág befagyasztására van szükségHa egy ág befagyasztására van szükség

Tesztelési okokTesztelési okok Termék kiadásaTermék kiadása

Page 22: Minőségbiztosítás a fejlesztési folyamat során

DevElágaztatás - alapokElágaztatás - alapok Promóciós modellPromóciós modell Hátrányai:Hátrányai:

Az adott elágazáshoz tartozó szabályok változnakAz adott elágazáshoz tartozó szabályok változnak A fejlesztőknek munkájukat folytonosan át kell helyezni A fejlesztőknek munkájukat folytonosan át kell helyezni

más ágakbamás ágakba

V2.0

V1.0

Új technológia próbaág

Page 23: Minőségbiztosítás a fejlesztési folyamat során

DevElágaztatás – alapokElágaztatás – alapok Főág (mainline) modellFőág (mainline) modell A fejlesztők a főágban vagy egy adott funkció A fejlesztők a főágban vagy egy adott funkció

fejlesztési ágában tevékenykednekfejlesztési ágában tevékenykednek A kiadott termékverziók ágában csak kritikus A kiadott termékverziók ágában csak kritikus

hibajavítások történnekhibajavítások történnek

főág

V1.0

Új technológia próbaág

Page 24: Minőségbiztosítás a fejlesztési folyamat során

DevVáltozások propagálásaVáltozások propagálása

A változtatásokat lehetőleg az elágaztatás A változtatásokat lehetőleg az elágaztatás óta legkevesebbet módosult ágban óta legkevesebbet módosult ágban tegyük megtegyük meg

Propagáljunk sűrűn és a lehető Propagáljunk sűrűn és a lehető legkorábbanlegkorábban

Az összefésülést mindig a megfelelő Az összefésülést mindig a megfelelő tudással bíró ember végezze (vezető vagy tudással bíró ember végezze (vezető vagy senior fejlesztő)senior fejlesztő)

Page 25: Minőségbiztosítás a fejlesztési folyamat során

Elágaztatás és az ágak Elágaztatás és az ágak összefésüléseösszefésülése

Page 26: Minőségbiztosítás a fejlesztési folyamat során

Dev

A jó forráskódkövető A jó forráskódkövető rendszerrendszerTámogatja az elágaztatást (branching)Támogatja az elágaztatást (branching)Támogatja a háromutas összefésülést Támogatja a háromutas összefésülést

(three way merge)(three way merge)Integrálható a fejlesztők által használt Integrálható a fejlesztők által használt

környezetbekörnyezetbeNincs „útban”Nincs „útban”

Page 27: Minőségbiztosítás a fejlesztési folyamat során

DevHa nem így tesszük...Ha nem így tesszük...

„„Hol van a legfrissebb forrás?”Hol van a legfrissebb forrás?”„„Ki írta felül az új ablakkezelő Ki írta felül az új ablakkezelő

függvényem?”függvényem?”„„Miért nem fordul le a főprogram?”Miért nem fordul le a főprogram?”„„Sajnos elhagytuk a DLL forrását, így Sajnos elhagytuk a DLL forrását, így

nem tudjuk megcsinálni a javítást.”nem tudjuk megcsinálni a javítást.”

Page 28: Minőségbiztosítás a fejlesztési folyamat során

Az elkészült kód beadásaAz elkészült kód beadásaCheck-inCheck-in

Az elkészült Az elkészült munkadarabok munkadarabok kódjának elhelyezése kódjának elhelyezése a forráskód kezelő a forráskód kezelő rendszerberendszerbe Csak a forrásfa Csak a forrásfa

házirend feltételeinek házirend feltételeinek megfelelő kódmegfelelő kód

A forráskód-kezelő nem A forráskód-kezelő nem biztonsági mentésre biztonsági mentésre való!való!

Build(elkészítés)

Develop(fejlesztés)

Check-in(beadás)

Test(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,vissza-jelzésekmódosított

és új kód

módosított és újkövetelmények

Page 29: Minőségbiztosítás a fejlesztési folyamat során

CheckinA beadás lépéseiA beadás lépései

Mások változásainak szinkronizálásaMások változásainak szinkronizálásaBuild a fejlesztő gépénBuild a fejlesztő gépénFejlesztői regressziótesztFejlesztői regressziótesztKódellenőrzés (code review)Kódellenőrzés (code review)BeadásBeadásTárs-build (buddy-build)Társ-build (buddy-build)Hibanyilvántartás frissítéseHibanyilvántartás frissítéseBeadási levélBeadási levél

Page 30: Minőségbiztosítás a fejlesztési folyamat során

CheckinHa nem így tesszük...Ha nem így tesszük...

„„Nálam pedig lefordul.”Nálam pedig lefordul.”„„Ki tette be ezt az idétlen üzenetet a Ki tette be ezt az idétlen üzenetet a

főképernyő közepére?”főképernyő közepére?”„„Kijavította már valaki ezt a hibát?”Kijavította már valaki ezt a hibát?”„„Milyen komponenseket kell átírni Józsi Milyen komponenseket kell átírni Józsi

változtatásai miatt?”változtatásai miatt?”

Page 31: Minőségbiztosítás a fejlesztési folyamat során

A termék megépítéseA termék megépítéseBuildBuild

A megépítés során a A megépítés során a forráskód futtatható forráskód futtatható bináris állományokká bináris állományokká alakulalakul

Build(elkészítés)

aktuálisállapot

hibák,vissza-jelzésekmódosított

és új kód

módosított és újkövetelmények

Develop(fejlesztés)

Test(tesztelés)

Specify(specifikálás)

napibuild

Check-in(beadás)

Page 32: Minőségbiztosítás a fejlesztési folyamat során

Build

Mi a build környezet?Mi a build környezet?

Azok az eszközök, amelyek a forrásból Azok az eszközök, amelyek a forrásból előállítják a terméketelőállítják a terméket Forráskód + eszközök = termékForráskód + eszközök = termék

Szintén a forráskódkövető rendszerben Szintén a forráskódkövető rendszerben vannakvannak

Page 33: Minőségbiztosítás a fejlesztési folyamat során

BuildMiért kell build Miért kell build környezet?környezet? Konzisztens fordítási beállítások az egész Konzisztens fordítási beállítások az egész

forrásfáraforrásfára Bármikor byte-helyesen reprodukálható Bármikor byte-helyesen reprodukálható

eredményeredmény A forrásfa tetszőleges al-fájának megépítéseA forrásfa tetszőleges al-fájának megépítése A fejlesztők saját gépén megépíthető legyen a A fejlesztők saját gépén megépíthető legyen a

terméktermék Teljesen automatizált (telepítőkészletet Teljesen automatizált (telepítőkészletet

produkál) – utólagos telepítőkészletprodukál) – utólagos telepítőkészlet

Page 34: Minőségbiztosítás a fejlesztési folyamat során

Build

A build fő fázisaiA build fő fázisai BuildBuild

A forráskódból a bináris állományok elkészítéseA forráskódból a bináris állományok elkészítése Eredménye a bináris-faEredménye a bináris-fa

Utó-build (postbuild)Utó-build (postbuild) A bináris állományok utófeldolgozása a bináris-fábólA bináris állományok utófeldolgozása a bináris-fából Telepítőkészlet készítéseTelepítőkészlet készítése

Build Verification Test (BVT)Build Verification Test (BVT) Az elkészült termék alapfunkcióinak ellenőrzéseAz elkészült termék alapfunkcióinak ellenőrzése

Page 35: Minőségbiztosítás a fejlesztési folyamat során

Build

A build típusaiA build típusaiMinden egyes build több platformra Minden egyes build több platformra

készülhetkészülhet Pl. x86, ia64, amd64, armPl. x86, ia64, amd64, arm

Az egyes platformokon belül kétfélét Az egyes platformokon belül kétfélét készítünk:készítünk: Checked (debug) : teljes debug-infoChecked (debug) : teljes debug-info Free (release) : a debug info csak a globálisokat Free (release) : a debug info csak a globálisokat

és a függvénydefiníciókat tartalmazzaés a függvénydefiníciókat tartalmazza

Page 36: Minőségbiztosítás a fejlesztési folyamat során

Build

A legfőbenjáróbb bűnA legfőbenjáróbb bűn A build breakA build break

A fejlesztő nem ellenőrizte, hogy minden fájlt betett-e a A fejlesztő nem ellenőrizte, hogy minden fájlt betett-e a forráskód-követő rendszerbeforráskód-követő rendszerbe

Mások munkájával inkompatibilis változtatást hajtott Mások munkájával inkompatibilis változtatást hajtott végrevégre

„„Jutalma” a Buildmeister cím elnyeréseJutalma” a Buildmeister cím elnyerése Az ő feladata a napi build-ek elkészítése, a build scriptek Az ő feladata a napi build-ek elkészítése, a build scriptek

karbantartásakarbantartása A build szabályainak betartatásáraA build szabályainak betartatására

A fejlesztői kézikönyvA fejlesztői kézikönyv Illetve korbács használhatóIlletve korbács használható

Page 37: Minőségbiztosítás a fejlesztési folyamat során

Build

Utó-buildUtó-build Parancsfájlok végrehajtásából állParancsfájlok végrehajtásából áll

Batch, perl, stb.Batch, perl, stb. Ezeket szintén a forráskód-követő rendszerben tároljukEzeket szintén a forráskód-követő rendszerben tároljuk

Minden egyes termékre egyediMinden egyes termékre egyedi Eredménye mindaz, ami a termék telepítéséhez Eredménye mindaz, ami a termék telepítéséhez

és használatához kellés használatához kell Ideális esetben a telepítő CDIdeális esetben a telepítő CD

A postbuild lefutása után következik a termék A postbuild lefutása után következik a termék kiadásakiadása

Page 38: Minőségbiztosítás a fejlesztési folyamat során

BuildA termék kiadása A termék kiadása (release)(release) Egy olyan megosztásra kerül át a teljes termék, Egy olyan megosztásra kerül át a teljes termék,

ahonnan azt a tesztelők és a többi felhasználója ahonnan azt a tesztelők és a többi felhasználója elérhetielérheti

Visszamenőleg sokáig megmaradVisszamenőleg sokáig megmarad Fontosabb mérföldköveknél a régieket archiválni kellFontosabb mérföldköveknél a régieket archiválni kell

A release megosztás struktúrája:A release megosztás struktúrája:Foo\Foo\

main\main\1018\1018\

x86fre\x86fre\x86chk\x86chk\

featuredev\featuredev\1019\1019\

Page 39: Minőségbiztosítás a fejlesztési folyamat során

Build

A kiadások verzióiA kiadások verziói A termék verziószáma mindig tartalmazza a A termék verziószáma mindig tartalmazza a

build-számot:build-számot: Major.minor.build.serialMajor.minor.build.serial Pl. 2.5.1018.1Pl. 2.5.1018.1 A build-szám minden nap másA build-szám minden nap más A serial az egy napon belüli build-eket különbözteti megA serial az egy napon belüli build-eket különbözteti meg

A napi build ideális szinkronizálási pont a A napi build ideális szinkronizálási pont a másnapi munka elkezdéséhezmásnapi munka elkezdéséhez

Ne feledjük: ha egyszer kiadtunk valamit, az Ne feledjük: ha egyszer kiadtunk valamit, az örökké élörökké él

Page 40: Minőségbiztosítás a fejlesztési folyamat során

Build

Ha nem így tesszük...Ha nem így tesszük...

„„Nem működik a programom, ami a Józsi Nem működik a programom, ami a Józsi új DLL-jét használja.”új DLL-jét használja.”

„„Szükség van a modulok közötti Szükség van a modulok közötti integrációs tesztre.”integrációs tesztre.”

„„Holnap elkészülünk, de még két hét kell Holnap elkészülünk, de még két hét kell a telepítő megírására.”a telepítő megírására.”

„„Látta már valaki egyben az egészet?”Látta már valaki egyben az egészet?”„„Melyik DLL fut kint az ügyfélnél?”Melyik DLL fut kint az ügyfélnél?”

Page 41: Minőségbiztosítás a fejlesztési folyamat során

TesztelésTesztelés Minőséget nem lehet Minőséget nem lehet

„beletesztelni” a „beletesztelni” a szoftverbeszoftverbe

A teszt célja: ellenőriz és A teszt célja: ellenőriz és visszajelez, hogy a visszajelez, hogy a szoftver megfelel-e a szoftver megfelel-e a kitűzött kitűzött követelményeknekkövetelményeknek specifikált működésspecifikált működés elvárt teljesítményelvárt teljesítmény üzembiztonságüzembiztonság egyéb „általános elvárások”egyéb „általános elvárások”

Build(elkészítés)

aktuálisállapot

hibák,vissza-jelzésekmódosított

és új kód

módosított és újkövetelmények

Develop(fejlesztés)

Test(tesztelés)

Specify(specifikálás)

napibuild

Check-in(beadás)

Page 42: Minőségbiztosítás a fejlesztési folyamat során

TestTesztek a napi ciklusbanTesztek a napi ciklusbanKiadható-e tesztelésre?Kiadható-e tesztelésre?

Fejlesztői regressziótesztFejlesztői regresszióteszt a fejlesztő végzi, még beadás előtta fejlesztő végzi, még beadás előtt kibírja-e a termék a változást? kibírja-e a termék a változást? white box, automatizáltwhite box, automatizált

Telepítési tesztTelepítési teszt telepíthető-e? telepíthető-e?

Build Verification TestBuild Verification Test megvannak-e az alapvető működésekmegvannak-e az alapvető működések ki lehet-e adni a build-et további tesztelésre?ki lehet-e adni a build-et további tesztelésre? automatizáltautomatizált kieshet belőle a DRT (ha nem túl hosszú)kieshet belőle a DRT (ha nem túl hosszú)

Page 43: Minőségbiztosítás a fejlesztési folyamat során

TestTesztek a napi ciklusbanTesztek a napi ciklusbanRészletesRészletes

Unit TestUnit Test az egyes modulok, funkciócsoportok részletes az egyes modulok, funkciócsoportok részletes

tesztjetesztje

Regression TestRegression Test visszajöttek-e egyszer már kijavított hibák?visszajöttek-e egyszer már kijavított hibák? ““bugs tend to cluster”bugs tend to cluster” – a baj nem jár egyedül – a baj nem jár egyedül változások átvezetése a forrásfa egyes ágai változások átvezetése a forrásfa egyes ágai

közöttközött

Page 44: Minőségbiztosítás a fejlesztési folyamat során

TestTesztek a napi ciklusbanTesztek a napi ciklusbana funkcionális követelményeken túlmutatóa funkcionális követelményeken túlmutató

Stress test Stress test Megpróbáljuk szétverni a szoftvertMegpróbáljuk szétverni a szoftvert Érvénytelen input, óriási adatkészlet, erőforrások Érvénytelen input, óriási adatkészlet, erőforrások

mesterséges korlátozásamesterséges korlátozása Általában éjszaka fut, reggel debugoljuk a Általában éjszaka fut, reggel debugoljuk a

döglött példányokat. döglött példányokat. Komoly tervezést és infrastruktúrát igényel!Komoly tervezést és infrastruktúrát igényel!

Terhelési tesztTerhelési teszt ha van teljesítmény-kritériumha van teljesítmény-kritérium gondos tervezést igényelgondos tervezést igényel

Page 45: Minőségbiztosítás a fejlesztési folyamat során

TestTesztek a napi ciklusbanTesztek a napi ciklusban„hagyományos”„hagyományos”

Ad-hoc tesztAd-hoc teszt játszunk a szoftverrel, és figyeljük, mit csinál játszunk a szoftverrel, és figyeljük, mit csinál

(szimuláljuk az egyszerű felhasználót)(szimuláljuk az egyszerű felhasználót) nem determinisztikusnem determinisztikus nagyon kell figyelni, hogy reprodukálható legyennagyon kell figyelni, hogy reprodukálható legyen legtöbbször kiinduló pont az automatizált legtöbbször kiinduló pont az automatizált

tesztekheztesztekhez

Page 46: Minőségbiztosítás a fejlesztési folyamat során

TestA megtalált hibák kezeléseA megtalált hibák kezelése

Minden hiba, ami valamilyen szempontból Minden hiba, ami valamilyen szempontból nem felel megnem felel meg a követelményekneka követelményeknek az elvárásoknakaz elvárásoknak

Jelentjük. Az összeset.Jelentjük. Az összeset.Adatbázisban rögzítjükAdatbázisban rögzítjük

statisztikákstatisztikák hibák életciklusának követésehibák életciklusának követése

Page 47: Minőségbiztosítás a fejlesztési folyamat során

TestEgy hiba adataiEgy hiba adatai RögzítendőRögzítendő

azonosító (automatikusan generált egyedi kulcs)azonosító (automatikusan generált egyedi kulcs) tárgy (rövid leírás)tárgy (rövid leírás) szoftver verziószámaszoftver verziószáma konfigurációkonfiguráció

– oprendszer, hardver, egyéb szoftverkörnyezetoprendszer, hardver, egyéb szoftverkörnyezet a hiba részletes leírásaa hiba részletes leírása reprodukciós lépésekreprodukciós lépések a szükséges csatolt állományoka szükséges csatolt állományok fontossági / súlyossági besorolás (severity/priority)fontossági / súlyossági besorolás (severity/priority) terület / alterületterület / alterület

Page 48: Minőségbiztosítás a fejlesztési folyamat során

TestFontosságFontosságFontosság (priority): milyen fontos Fontosság (priority): milyen fontos

megjavítanimegjavítani Pri 4: majd…Pri 4: majd… Pri 3: amikor időnk engediPri 3: amikor időnk engedi

– még a termék kiadása előttmég a termék kiadása előtt Pri 2: még ebben a szakaszbanPri 2: még ebben a szakaszban Pri 1: mostPri 1: most Pri 0: azonnalPri 0: azonnal Pri 0 HOT: már kész kéne, hogy legyenPri 0 HOT: már kész kéne, hogy legyen

– áll a vezér gépeáll a vezér gépe

Page 49: Minőségbiztosítás a fejlesztési folyamat során

TestSúlyosságSúlyosság

Mekkora galibát okoz?Mekkora galibát okoz? Sev 4: nem szépSev 4: nem szép Sev 3: kicsit zavar a működésben, elkerülhetőSev 3: kicsit zavar a működésben, elkerülhető Sev 2: komolyabb hiba, hiányosságSev 2: komolyabb hiba, hiányosság Sev 1: adatvesztés, összeomlás, súlyos hibaSev 1: adatvesztés, összeomlás, súlyos hiba

– valamilyen szempontból használhatatlanná teszi a valamilyen szempontból használhatatlanná teszi a terméketterméket

Page 50: Minőségbiztosítás a fejlesztési folyamat során

TestKategóriákKategóriák

Súlyosság Súlyosság ⇒⇒ fontosság fontosság de nem automatikusande nem automatikusan

Pri 1, Sev 4:Pri 1, Sev 4: „„Micorosoft Office XP”Micorosoft Office XP”

Pri 4, Sev 1:Pri 4, Sev 1: a teszter otthoni XT-jén letörli a FAT-táblát, ha a a teszter otthoni XT-jén letörli a FAT-táblát, ha a

program indításával egyidejűen dugja be a program indításával egyidejűen dugja be a mentéshez használt VHS-videomagnót.mentéshez használt VHS-videomagnót.

Page 51: Minőségbiztosítás a fejlesztési folyamat során

TestA hiba életciklusaA hiba életciklusa

AktívAktív

A hiba gazdájaA hiba gazdája aki az adott hibával aki az adott hibával

foglalkozikfoglalkozik az életciklus minden az életciklus minden

stádiumában létezikstádiumában létezik egyéni vagy csoportegyéni vagy csoport

Page 52: Minőségbiztosítás a fejlesztési folyamat során

TestA hiba életciklusaA hiba életciklusa A megoldás A megoldás

visszaküldi a hibát visszaküldi a hibát ahhoz, aki ahhoz, aki megnyitottamegnyitotta

Feladat: ellenőrizni a Feladat: ellenőrizni a megoldástmegoldást

AktívAktív

MegoldottMegoldott

megoldásmegoldás

Page 53: Minőségbiztosítás a fejlesztési folyamat során

Megoldási módokMegoldási módokMegoldásMegoldás Ki tehetiKi teheti További teendőTovábbi teendő

JavítvaJavítva FejlesztőFejlesztő ellenőrizniellenőrizni

ElhalasztvaElhalasztva(kockázatkezelés)(kockázatkezelés)

Program-menedzserProgram-menedzserTriageTriage

dokumentálnidokumentálnikésőbbi követelménykésőbbi követelmény

Nem javítjukNem javítjuk(alapvető probléma, (alapvető probléma, erőforráshiány)erőforráshiány)

Program-menedzserProgram-menedzser TriageTriage

dokumentálnidokumentálni

Így terveztükÍgy terveztük““It’s not a bug, it’s a feature”It’s not a bug, it’s a feature”

Program-menedzserProgram-menedzser TriageTriage

végfelhasználói végfelhasználói dokumentáció,dokumentáció,ha szükségesha szükséges

Már létező hibaMár létező hiba(duplikált)(duplikált)

FejlesztőFejlesztőTesztelőTesztelő

megadni az eredeti megadni az eredeti hiba azonosítójáthiba azonosítóját

Nem reprodukálhatóNem reprodukálható ált. fejlesztőált. fejlesztő

Page 54: Minőségbiztosítás a fejlesztési folyamat során

TestA hiba életciklusaA hiba életciklusa

AktívAktív

MegoldottMegoldott

LezártLezárt

lezáráslezárás

LezárásLezárás ha a hiba gazdája ha a hiba gazdája

elégedett a javítássalelégedett a javítással

Page 55: Minőségbiztosítás a fejlesztési folyamat során

TestA hiba életciklusaA hiba életciklusa LezárásLezárás

ha a hiba gazdája ha a hiba gazdája elégedett a javítássalelégedett a javítással

ReaktiválásReaktiválás ha elégedetlenha elégedetlen

AktívAktív

MegoldottMegoldott

LezártLezárt

reaktiválásreaktiválás

Page 56: Minőségbiztosítás a fejlesztési folyamat során

TestA hiba életciklusaA hiba életciklusa

AktívAktív

MegoldottMegoldott

LezártLezárt

reaktiválásreaktiválás

LezárásLezárás ha a hiba gazdája ha a hiba gazdája

elégedett a javítássalelégedett a javítással

ReaktiválásReaktiválás ha elégedetlenha elégedetlen

Lezárt hiba is Lezárt hiba is reaktiválhatóreaktiválható regressziós tesztregressziós teszt további ellenőrzés további ellenőrzés

soránsorán

Page 57: Minőségbiztosítás a fejlesztési folyamat során

TestMire használjuk az Mire használjuk az adatbázist?adatbázist?Aktív hibák: megoldjukAktív hibák: megoldjukMegoldott hibák: megnyitóik ellenőrzikMegoldott hibák: megnyitóik ellenőrzikLezárt hibák:Lezárt hibák:

elhalasztott, nem javítandóelhalasztott, nem javítandó: : dokumentáljukdokumentáljuk javított: bevesszük a tesztekbejavított: bevesszük a tesztekbe

– regressziós tesztregressziós teszt– unit tesztunit teszt

Összességében: statisztikákÖsszességében: statisztikák

Page 58: Minőségbiztosítás a fejlesztési folyamat során

TestStatisztikákStatisztikák Új hibák beérkezési sebességeÚj hibák beérkezési sebessége Hibamegoldási sebességHibamegoldási sebesség

javítási sebesség: tervezhető,javítási sebesség: tervezhető,kb. 2/fejlesztő/napkb. 2/fejlesztő/nap

KonvergenciaKonvergencia amikor többet oldunk meg,amikor többet oldunk meg,

mint ahányat találunkmint ahányat találunk a stabilizáció kezdetea stabilizáció kezdete

Page 59: Minőségbiztosítás a fejlesztési folyamat során

StatisztikákStatisztikákJóslásJóslás

Mikor lesz „kész” a szoftver?Mikor lesz „kész” a szoftver? aktív hibák számának csökkenő trendje adja aktív hibák számának csökkenő trendje adja

megmeg

Kiadási stádiumokKiadási stádiumok konvergenciakonvergencia Nulla aktív hibaNulla aktív hiba

– ZBB: zero bug bounceZBB: zero bug bounce

RCRC GoldGold

KiadásKiadás

Page 60: Minőségbiztosítás a fejlesztési folyamat során

Példa: egy MCS projektPélda: egy MCS projekt

konvergenciakonvergencia

ZBBZBB

Page 61: Minőségbiztosítás a fejlesztési folyamat során

Átadáshoz közeledveÁtadáshoz közeledveElágazásElágazás a forr a forrásfábanásfában

ha megy tovább a fejlesztésha megy tovább a fejlesztésSzigorodik a változáskezelésSzigorodik a változáskezelésFokozott figyelem a változás kockázatairaFokozott figyelem a változás kockázataira

minden javítás egy újabb hiba esélyét is minden javítás egy újabb hiba esélyét is hordozzahordozza

War TeamWar Team minden lényeges szereplő képviseletévelminden lényeges szereplő képviseletével ““triagetriage””

Page 62: Minőségbiztosítás a fejlesztési folyamat során

KiadásKiadás

A csapatmodell minden szereplőjének A csapatmodell minden szereplőjének egyetértésévelegyetértésével

““Gold master” – a végleges termékállapot Gold master” – a végleges termékállapot hitelesítésehitelesítése pl. aláírt CD-példánypl. aláírt CD-példány ez a további sokszorosítás alapjaez a további sokszorosítás alapja

A teljes projekt-állapot archiválásaA teljes projekt-állapot archiválásaShip party Ship party

Page 63: Minőségbiztosítás a fejlesztési folyamat során

TestÁtadás-átvételi tesztÁtadás-átvételi teszt

Pozitív működést bemutató tesztPozitív működést bemutató tesztMegfelel-e a specifikációnak?Megfelel-e a specifikációnak?Felhasználó részvételével zajlikFelhasználó részvételével zajlik

Vagy dobozos termék esetén: képviselője, a PMVagy dobozos termék esetén: képviselője, a PM

Page 64: Minőségbiztosítás a fejlesztési folyamat során

ÖsszefoglalóÖsszefoglaló ÁllapotkezelésÁllapotkezelés VáltozáskezelésVáltozáskezelés Már a projekt Már a projekt

kezdetétőlkezdetétől Így lesz Így lesz

kézbentarthatókézbentartható Felismert és Felismert és

kezelhető kockázatokkezelhető kockázatok

Build(elkészítés)

Develop(fejlesztés)

Check-in(beadás)

Test(tesztelés)

Specify(specifikálás)

aktuálisállapot

napibuild

hibák,vissza-jelzésekmódosított

és új kód

módosított és újkövetelmények

Page 65: Minőségbiztosítás a fejlesztési folyamat során

További információTovábbi információ Microsoft Microsoft SolutionSolutionss FrameworkFramework

http://www.microsoft.com/mspress/developerhttp://www.microsoft.com/mspress/developer/bestpractices//bestpractices/

Karl E. Wiegers: Software RequirementsKarl E. Wiegers: Software Requirements

Steve McConnell: Steve McConnell: Rapid DevelopmentRapid Development Steve McConnellSteve McConnell: Software Project Survival Guide: Software Project Survival Guide Ed Sullivan: Ed Sullivan: Under Pressure and On TimeUnder Pressure and On Time Steve Maguire: Debugging the Development ProcessSteve Maguire: Debugging the Development Process

Michael Howard, David LeBlanc: Michael Howard, David LeBlanc: Writing Secure CodeWriting Secure Code Steve McConnell: Steve McConnell: Code CompleteCode Complete Steve MSteve Maaguire: guire: Writing Solid CodeWriting Solid Code

Frederick P. Brooks: The Mythical Man-monthFrederick P. Brooks: The Mythical Man-month Addison-WesleyAddison-Wesley