testiranje programske opreme na osnovi orodij …
Post on 11-Jan-2022
2 Views
Preview:
TRANSCRIPT
UNIVERZA V MARIBORU
FAKULTETA ZA ELEKTROTEHNIKO,
RAČUNALNIŠTVO IN INFORMATIKO
David Herman
TESTIRANJE PROGRAMSKE OPREME NA
OSNOVI ORODIJ MICROSOFT
Diplomsko delo
Maribor, avgust 2016
TESTIRANJE PROGRAMSKE OPREME NA OSNOVI
ORODIJ MICROSOFT
Diplomsko delo
Študent(ka): David Herman
Študijski program: Visokošolski študijski program
Informatika in tehnologije komuniciranja
Smer: Sistemska podpora informatiki in tehnologijam komuniciranja
Mentor(ica): doc. dr. Boštjan Šumak, univ. dipl. inž. rač. in inf.
Lektor(ica): Vlasta Povše
i
ZAHVALA
Iskreno se zahvaljujem mentorju doc. dr. Boštjanu
Šumaku za pomoč in vodenje pri opravljanju
diplomskega dela.
Posebna zahvala velja staršem, ki so mi omogočili
študij.
ii
Testiranje programske opreme na osnovi orodij microsoft
Ključne besede: testiranje programske opreme, faze in življenjski cikel testiranja, V-model
testiranja, orodja za testiranje, Visual Studio 2013.
UDK: 004.4.052: 004.4'2(043.2)
Povzetek
Predstavili smo pomen testiranja programske opreme ter prikazali, kako uspešno testirati
programsko opremo skozi njen razvojni življenjski cikel in kaj dosežemo z uspešnim
testiranjem. V drugem delu diplomske naloge smo predstavili orodja in tipe testiranja ki so na
voljo v Visual Studio 2013. Na kratko smo opisali delo s testnimi rezultati in zaključek
testiranja. V zadnjem delu smo prikazali praktično uporabnost orodij za testiranje Visual
Studia 2013 po tehniki V-modela, ki je zasnovan tako, da se proces testiranja začne v
zgodnjem razvoju programske opreme, in zapisali ugotovitve. Končni rezultat je strnjen opis
in predstavitev orodij ter tipov za testiranje programske opreme, ki jih nudi Visual Studio
2013, ter praktična uporaba pri testiranju.
iii
Testing Software based on Microsoft tools
Ključne besede: software testing, phase and life cycle testing, V-model technique, testing
tools, Visual Studio 2013.
UDK: 004.4.052: 004.4'2(043.2)
Abstract
We presented the meaning of software testing, we showed how successfully test software
throughout its development life cycle and what is achieved with the successful testing. In the
second part of the diploma thesis we presented testing tools and types that are available in
Visual Studio 2013.We briefly described the work with testing results and the completion of
testing. In the last part, we showed the practical usefulness of the testing tools of Visual
Studio 2013 using V-model technique, which is designed on such a way that the testing
process begins early in the software development and then we wrote down the findings. The
end result is a compact description and presentation of tools and types of software testing
provided by Visual Studio 2013 and also the practical application use in testing.
iv
VSEBINA
1 Uvod ................................................................................................................................... 1
2 Pomen testiranja programske opreme ................................................................................ 3
2.1 Definicija testiranja .................................................................................................... 3
2.2 Definicija: Pomote (Error), izpada (falut), odpoved i(failure) in napake ................... 4
2.3 Pomen testiranja programske opreme ........................................................................ 5
2.4 Zgodovina testiranja ................................................................................................... 8
2.5 Razlogi za napake v programski opremi .................................................................... 9
2.6 Vloge in osebe pri testiranju ..................................................................................... 11
2.7 Pristopi učinkovitega testiranja ................................................................................ 13
2.8 Testno okolje ............................................................................................................ 15
2.9 Začetek testiranja ...................................................................................................... 16
2.10 Zaključek testiranja .................................................................................................. 16
3 Faze in življenjski cikel testiranja .................................................................................... 17
3.1 V-model testiranja .................................................................................................... 17
3.1.1 Faze verifikacije ................................................................................................. 20
3.1.2 Faze validacije .................................................................................................... 21
3.1.2.1 Testiranje komponente/enote ...................................................................... 21
3.1.2.2 Integracijsko testiranje ................................................................................ 22
3.1.2.3 Sistemsko testiranje .................................................................................... 23
3.1.2.4 Testiranje sprejemljivosti ............................................................................ 24
3.1.3 Iterativni življenjski cikli ................................................................................... 26
3.1.4 Prednosti in slabosti V-modela........................................................................... 27
3.1.5 Dodatne faze V-modela ...................................................................................... 27
4 Testiranje programske opreme v orodju Visual Studio 2013 ........................................... 29
4.1 Upravljanje življenjskega cikla aplikacije (ALM) ................................................... 29
4.2 Orodja za Testiranje programske opreme v orodju Visual Studio 2013 ................... 31
v
4.3 Postavitev testnega okolja ........................................................................................ 33
4.4 Skupina projektov v orodju TFS .............................................................................. 36
4.4.1 Logična definicija skupine projektov ................................................................. 36
4.4.2 Fizična definicija skupine projektov .................................................................. 37
4.5 Testiranje po testnem načrtu ..................................................................................... 40
5 Tipi testiranja v orodju Visual Studio 2013 ...................................................................... 45
5.1 Avtomatsko testiranje ............................................................................................... 48
5.1.1 Spletno testiranje ................................................................................................ 49
5.1.2 Zmogljivostni test ............................................................................................... 51
5.1.2.1 Cloud-based load testiranje ......................................................................... 52
5.1.3 Kodirano testiranje UI ........................................................................................ 52
5.1.3.1 Kodiran UI test za Windows Store aplikacijo ............................................. 53
5.1.4 Sekvenčno testiranje ........................................................................................... 54
5.1.5 Generično testiranje ............................................................................................ 54
5.1.6 Testiranje enote ................................................................................................... 54
5.1.6.1 Testiranje enote z orodjem Visual Studio .................................................... 55
5.1.6.2 Pisanje učinkovitih testov ........................................................................... 56
5.1.6.3 Testiranje enote za Windows Store aplikacije ............................................. 56
5.2 Ročno testiranje ........................................................................................................ 57
5.2.1 Microsoft Test Manager ..................................................................................... 58
5.2.1.1 Načrtovanje testa ......................................................................................... 58
5.2.1.2 Integracija gradnikov .................................................................................. 59
5.2.2 Team Web Access ............................................................................................... 60
5.2.3 Razlika med Microsoft Test Manager in Team Web Access .............................. 61
5.2.4 Test Runner......................................................................................................... 61
5.2.5 Testiranje Windows Store aplikacij .................................................................... 62
5.2.6 Raziskovalno testiranje ...................................................................................... 62
5.3 Dodatki za diagnostiko podatkov ............................................................................. 64
vi
6 Uporaba testnih orodij Visual Studio 2013 v praksi ......................................................... 66
6.1 Testiranje v okviru življenjskega cikla programske opreme .................................... 66
6.2 Testiranje z orodji Visual Studio 2013 po V-modelu ............................................... 66
6.2.1 Infrastruktura testnega okolja ............................................................................. 66
6.2.2 Strojna oprema pri postavitvi infrastrukture ...................................................... 68
6.2.2.1 Komponente infrastrukture ......................................................................... 69
6.2.2.2 Lab Manager in virtualizacija ..................................................................... 71
6.2.2.3 Ekonomična postavitev virtualizacije ......................................................... 73
6.2.3 Kreiranje in nastavitev skupine projektov .......................................................... 75
6.3 Priprava testne dokumentacije ................................................................................. 79
6.3.1 Uporaba testnih načrtov in garnitur .................................................................... 85
6.4 Testiranje aplikacije .................................................................................................. 86
6.5 Osebe in vloge pri testiranju ..................................................................................... 87
6.6 Prednosti testiranja po tem postopku ....................................................................... 89
7 Sklep ................................................................................................................................. 90
8 Viri in literatura ................................................................................................................ 92
KAZALO SLIK
Slika 1: Stroški testiranja [2] ...................................................................................................... 7
Slika 2: Waterfall model [6] ..................................................................................................... 18
Slika 3: V-model [11] ............................................................................................................... 20
Slika 4: Iterativni razvojni model [11] ..................................................................................... 26
Slika 5: Izdelava nove skupine projekta z uporabo orodja Team Explorer .............................. 37
Slika 6: Izbira predloge procesa ............................................................................................... 38
Slika 7: Vozlišča skupine projekta ............................................................................................ 39
Slika 8: Testni načrt .................................................................................................................. 43
Slika 9: Struktura testnega načrta v orodju MTM [42] ............................................................ 44
Slika 10: Dodajanje testnega tipa ............................................................................................. 48
Slika 11: Prikaz scenarija z več uporabniki, ki dostopajo do spletne strani z uporabo različnih
omrežij, brskalnikov in lokacij [13] ......................................................................................... 51
vii
Slika 12: Shema ročnega testiranja [12] ................................................................................... 57
Slika 13: Raziskovalno testiranje v orodju MTM 2013 [13] ................................................... 63
Slika 14: Komponente infrastrukture ....................................................................................... 69
Slika 15: Ekonomična postavitev virtualizacije ....................................................................... 73
Slika 16: Določitev imena in opisa zbirke skupine projekta, ................................................... 75
Slika 17: Določitev podatkovnega sloja ................................................................................... 76
Slika 18: Preverjanje ustreznosti zbirke skupine projekta pred njeno izdelavo ....................... 76
Slika 19: Proces izdelave zbirke skupine projekta ................................................................... 77
Slika 20: Začetna faza izdelave skupine projekta .................................................................... 77
Slika 21: Določitev imena in opisa skupine projekta ............................................................... 78
Slika 22: Izbira predloge procesa ............................................................................................. 78
Slika 23: Določitev sistema za nadzor nad verzijami .............................................................. 79
Slika 24: Skupina projekta v Team Explorer ............................................................................ 79
Slika 25: Osnovna zgradba V-modela ...................................................................................... 81
Slika 26: Dodajanje testnega načrta v orodju MTM ................................................................ 82
Slika 27: Konfiguracija testnega načrta ................................................................................... 82
Slika 28: Dodajanje testnega primera v privzeto testno garnituro ........................................... 83
Slika 29: Dodajanje zahtev testnemu načrtu ............................................................................ 83
Slika 30: Testni koraki testnega primera .................................................................................. 84
Slika 31: Povezava med privzetimi konfiguracijami in testnimi primeri ................................. 84
Slika 32: Izvajanje testnih korakov z orodjem Test Runner ..................................................... 85
Slika 33: Uporaba testnih tipov skozi faze testiranja ............................................................... 86
KAZALO TABEL
Tabela 1: Prednosti in slabosti V-modela [31] ......................................................................... 27
Tabela 2: ALM programske garniture [36] ............................................................................... 30
Tabela 3: Naštete lastnosti po izdajah orodja Visual Studio 2013 [13] .................................... 47
Tabela 4: Podprti testni tipi v Visual Studio 2013 [12] ............................................................ 48
Tabela 5: Uporabljena in primerna orodja za postavitev infrastrukture ................................... 67
viii
UPORABLJENE KRATICE
ISTQB - International Software Testing Qualifications Board
IEEE - Institute of Electrical and Electronics Engineers
V & V – Verifikacija in Validacija
QA - Quality Assurance
Y2K – Year 2000
RAD - Rapid Application Development
ISO - International Organization for Standardization
IT – Information Technology
dll - dynamic link library
ALM – Application Lifecycle Management
TDD – Test Driven Development
IDE - Integrated Development Environment
UI – User Interface
TFS – Team Faundation Server
MSF - Microsoft Solutions Framework
CMMI - Capability Maturity Model Integration
MTM – Microsoft Test Manager
API – Application programming interface
UI – User Interface
TWA – Team Web Access
LLD – Low Level Design
XP – Extreme Programming
TDD - Test-Driven Development
SRS - Software Requirements Specification
COTS - Commercial Off The Shelf
CPU - Central Processing Unit
RAM -Random Access Memory
VMs – Visrtual Machines
SCVMM - System Center Virtual Machine Manager
URI - Uniform Resource Identifier
PBIs – Product Backlog Items
SDET - Software Development Environment Throughput (SDET)
1
1 Uvod
V zadnjem desetletju so se v revijah pojavile številne spektakularne zgodbe o odpovedi
računalniške programske opreme. Kljub vidnim lekcijam o posledicah slabe programske
opreme so se napake še vedno pojavljale na prvih straneh časopisov. Ti neuspehi stanejo
ameriško gospodarstvo približno 59,5 biljona evra na leto. [1] Z ustreznim vodenim
testiranjem po fazah razvoja programske opreme bi lahko prihranili približno 22,2 biljona
evra letnih izgub. Skozi čas je nastala knjiga »Software Testing: Testing Across the Entire
Software Development Life Cycle«, ki predstavlja prvo celovito obravnavanje vseh testnih
dejavnosti v 21. stoletju, vse od načrtovanja testiranja in do zaključka vsake faze programske
opreme v okviru razvoja in revizije.
Testiranje programske opreme je ena najpomembnejših faz v razvoju programske opreme.
Kvaliteta programske opreme se meri z validacijo in verifikacijo programske opreme glede na
določene funkcije, ki jih programska oprema mora ali ne sme zajemati. Kvalitetno testiranje
lahko znatno zmanjša stroške pri razvoju programske opreme in celo izboljša njeno
zmogljivost.
Na trgu obstajajo različna orodja, ki pokrivajo večino opravil, ki se nanašajo na testiranje
programske opreme. Napredna orodja za testiranje programske opreme lahko povečajo
vrednost programske opreme na različne načine: zmanjšajo stroške pri razvoju in testiranju
programske opreme, zmanjšajo zahtevan čas za razvoj nove programske opreme, izboljšajo
učinkovitost in skladnost programske opreme.
Vendar učinkovito in moderno orodje za testiranje ni edini faktor pri zagotavljanju kvalitetne
in dobro testirane programske opreme. Največja odgovornost leži na načrtovanju testiranja.
Testiranje ne sme biti več ločena aktivnost. Testiranje je proces, ki se mora začeti takoj, ko so
določene zahteve programske opreme, in se mora nadaljevati vzporedno z razvojem
programske opreme. Raziskave so pokazale, da se v večini primerov uspešno in pravočasno
zagotovi kvaliteto programske opreme, če se v fazi zajemanja zahtev programske opreme
opravi 40 % delež celotnega testiranja, ki zajema podrobno dokumentacijo načrtovanja
testiranja in načrtovanja testnih primerov. [46] Vendar se ta tehnika testiranja v praksi še
2
vedno zelo redko uporablja, ker zahteva čas in znanje za načrtovanje testiranja. Še vedno je
praksa, da se programska oprema testira v fazi testiranja, po končanem kodiranju, kar je
razlog, da se programska oprema ne konča v roku in z zagotovljeno kvaliteto.
Cilj diplomske naloge je predstaviti pomen testiranja programske opreme, kako uspešno
testiramo programsko opremo skozi njen razvojni življenjski cikel in kaj dosežemo z
uspešnim testiranjem. V drugem delu bomo predstavili orodja in tipe testiranja, ki so na voljo
v orodju Visual Studio 2013. Podrobno bomo predstavili orodja in njihov namen ter tipe
testiranja in kaj lahko s posameznim tipom testiranja v programski opremi testiramo. Na
kratko bomo opisali delo s testnimi rezultati in zaključek testiranja. V zadnjem delu bomo
prikazali praktično uporabnost orodij za testiranje v Visual Studio 2013 na primeru testiranja
po tehniki V-modela, ki je zasnovan tako, da se proces testiranja začne v zgodnjem razvoju
programske opreme, in zapisali ugotovitve. Končni rezultat je strnjen opis in predstavitev
orodij ter tipov za testiranje programske opreme, ki jih nudi Visual Studio 2013.
3
2 Pomen testiranja programske opreme
2.1 Definicija testiranja
Ideja testiranja je v iskanju napak, vendar je pojem testiranja zelo razširjen, zato je testiranje
natančneje razloženo s standardi. V nadaljevanju bomo bolj nazorno predstavili definicijo
testiranja s standardi [54]:
• Testiranje je proces operacijskega sistema ali komponente z določenimi omejitvami,
pri katerem z opazovanjem in snemanjem rezultatov ocenimo vidik sistema oz.
komponente (Standard IEEE 610 [Programsko inženirska terminologija]).
• Testiranje je proces, ki z analizo programske opreme odkrije razliko med obstoječimi
in zahtevanimi pogoji (napake), s katerimi ovrednotimo značilnosti programske
opreme (Standard IEEE 829 [Testna dokumentacija]).
• Testiranje je proces, ki s preverjanjem programske opreme ugotavlja skladnost z
zahtevami (Standard BS 7925-1 [Testiranje programske opreme – slovar]).
• Testiranje je proces, sestavljen iz vseh dejavnosti življenjskega cikla, tako statičnega
in dinamičnega, ki se ukvarja z načrtovanjem, pripravo in vrednotenjem programske
opreme ter z drugimi podobnimi izdelki, ki ugotavljajo skladnost programske opreme
z zahtevami in s tem dokažejo, da so primerni za iskanje napak (Standard ISTQB).
Zgoraj opisane definicije procesa testiranja imajo skupen izraz »proces«, kar pomeni, da je
testiranje proces. Torej, kaj naj bi beseda proces pomenila? Standarda IEEE 610 in BS 7925
omenjata »upravljanje« in »preverjanje« programske opreme, kar pomeni, da testiranje
zahteva programsko opremo, ki teče na računalniku – temu pristopu pravimo dinamično
testiranje. Ideja standarda IEEE 829 omenja »analizo« in »statično testiranje« programske
opreme, prav tako standard ISTQB omenja izraz statičnega in dinamičnega testiranja. Pojavi
se vprašanje, kdaj nastopi dinamično in statično testiranje. [55]
Po definiciji se objekt testiranja giblje od sistema ali komponente, postavke programske
opreme in programske opreme do produkta programske opreme in podobnim produkov v
delu. Vzporedno s testiranjem, tako dinamičnim kot statičnim, moramo zaključiti sledeče:
Testiranje se lahko izvaja na kateremkoli produktu v izvedbi ali produktu (kjer razlika med
njima pomeni, da produkt v izvedbi še ni dostavljen do naročnika). [1] In nenazadnje si
postavimo še vprašanje: »Zakaj?« Podani razlogi vključujejo opazovanje, ovrednotenje,
4
zaznavanje hroščev/napak, potrditev/določitev zadovoljstva, demonstriranje ali služenje
svojemu namenu. Iz tega lahko zaključimo, da testiranje zbira informacije o kvaliteti objekta,
ki ga testiramo. Kvaliteta je skupek izpolnjenih pričakovanj. Na eni strani imamo določena
pričakovanja in na drugi strani imamo produkt, ki mora zadovoljiti tem pričakovanjem.
Vprašanje je: Ali izpolnjuje naša pričakovanja? Testiramo zato, da lahko odgovorimo na to
vprašanje [1].
2.2 Definicija: Pomote (Error), izpada (falut), odpoved i(failure) in napake
Ključ do izdelave kakovostne programske opreme je zamisel oziroma koncept pomote,
izpada, odpovedi in napake. Termin napaka se nanaša na določen problem, ki je lahko zunanja
ali notranja lastnost programske opreme. Definicija terminov, ki se navezujejo na pojem
napaka [53]:
• Odpoved: pomeni nezmožnost sistema, da opravi zahtevane funkcije, navedene znotraj
zmogljivostnih zahtev.
• Izpad: je nepravilen korak, proces oziroma nepravilna definicija podatkov programske
opreme.
• Pomota: je človeško dejanje, ki povzroči napačen rezultat.
Termin odpoved se torej nanaša na vedenja, ki odstopajo od zahtev uporabnika ali
specifikacij. Termin izpad temelji na osnovnem stanju znotraj programske opreme, ki
povzroči določeno napako, medtem ko pomota vsebuje manjkajoča ali napačna človeška
dejanja, ki povzročajo napake, ki so integrirane v programsko opremo. Napako lahko
razširimo glede na njen izvor ali glede na nepravilne ali manjkajoče akcije zaradi človeških
napačnih predstav oziroma nerazumevanj. Odpoved, izpad in pomota se navezujejo na pojem
napaka, ta pa se navezuje na pojem hrošč (bug), ki pa ni natančno definiran, kot so nekateri
vidiki napake (odpoved, izpad, pomota). Nekateri ljudje so razvili moralni ali filozofski očitek
do pomena napake in so si ga razlagali kot izmikanje odgovornosti nekaterih ljudi. Obstaja
tudi termin razhroščevati, ki dejansko pomeni »znebiti se hroščev«. Razhroščevanje vsebuje
tudi dejavnike, kot so iskanje in rokovanje s hrošči (napakami). [2]
5
2.3 Pomen testiranja programske opreme
Vsak dan se srečujemo z različnimi novicami o izgredih in varnostnih luknjah programske
opreme, kot so: banka izdela nepravilna poročila knjigovodskih stanj, vesoljska kupola, ki je
potovala na Mars, se je izgubila, nepravilno delovanje optičnega čitalnika v trgovini z živili,
potem heker, ki pridobiva dostop do številnih številk kreditnih kartic. Zakaj se vse to dogaja?
Ali si programerji ne morejo izmisliti način, ki bi omogočal večjo varnost programske opreme
pred vdori z nepooblaščenimi dostopi? Na žalost ne. Ko začne postajati programska oprema
vse bolj kompleksna jo je zelo težko implementirati brez napake. Ne glede na to, kako je
programer sposoben in koliko je vložil v program, se bo še vedno našla napaka v programu,
zato pa v takšnih primerih prevzame vlogo testiranje programske opreme. [3]
Testiranje programske opreme je zelo pomembno področje; v tej fazi vedno odkrijemo najbolj
nevarne napake, saj v fazi vzdrževanja postane popravilo teh zelo drago. Pri večjih in
donosnejših razvojnih projektih se testiranje pogosto izvaja v ločenem projektu, v takšnem
primeru se projekt razdeli na dva dela, neodvisno verifikacijo in validacijo (V & V). V & V
imata zelo veliko vlogo pri odkrivanju napak v fazah življenjskega cikla razvoja, ki pa se
odpravijo takoj po odkritju. Z ločitvijo testiranja v ločen projekt izboljšamo zanesljivost
programske opreme. [4]
Nekateri izzivi testiranja programske opreme vsebujejo številne napake, ki pa povečajo pritisk
na testerje, kar posledično povzroči luknje v testni strategiji, v testnem načrtu itd. Testiranje
programske opreme je skozi leta postajalo pomembno, saj stranke oz. uporabniki pričakujejo,
da bo njihov program čim bolj kakovostno izdelan. [4]
Najpogosteje se napake pojavijo znotraj zahtev, pri načrtovanju programa in kodiranja
programske opreme, zato je namen testiranja poiskati in odpraviti te napake. Sistem
programske opreme lahko vsebuje številne napake, ki jih je zelo težko odkriti in odpraviti.
Četudi bi imeli večjo skupino testerjev, bi za ta podvig potrebovali precej časa, da bi odkrili in
odpravili delež prisotnih napak v sistemu. Takšen pristop testiranja ni dovolj uporaben, saj
ima ekipa prodaje določen rok za izdajo izdelka na trg. Tudi v primeru, če izdelujemo
programsko opremo za organizacijo, moramo program pravočasno testirati, saj ga bo kmalu
rabila. Poleg tega bodo stroški pri večjem časovnem naporu testiranja postali preobsežni, kar
pa ni sprejemljivo. [4]
Najbolj učinkovit pristop testiranja je učinkovito testiranje, kjer ima vsaka aktivnost rok
izvedbe in raven kakovosti, ki je sprejemljiva za kupce, zato mora biti med kakovostjo in
6
časovno omejitvijo uravnovešenost. Npr.: imamo vnaprej določen urnik, ki traja 15 dni za
testiranje stopnje kakovosti programske opreme, a smo ugotovili, da ima program čez 100
napak, ki jih je potrebno popraviti preden gre v živo. [4]
Prioriteta testiranja je določena glede na potrebe projekta. Nekatere zahteve so vrednotene z
visoko prioriteto, nekatere pa z nižjo. Zahteve z visoko prioriteto so najprej testirane, tako da
so napake odpravljene, preden se nam izteče določen čas testiranja. V tem primeru zahteve z
nizko prioriteto po vsej verjetnosti ne bodo prišle do testiranja, vendar bo vpliv na projekt
veliko manjši, kot pa če ne bi bile testirane zahteve z visoko prioriteto. Zelo podobno je pri
testiranju sistema, v tej fazi mora testna ekipa dobro poznati zasnovo in arhitekturo programa,
da bo lahko učinkovito testirala. Testna ekipa bo učinkovito testirala le v primeru, če se bo
pravočasno vključila v življenjski cikel razvoja programske opreme. [4]
Testiranje mora zagotoviti brezhibno delovanje programske opreme, ki jo bodo uporabljali
končni uporabniki ali stranke. Namen testiranja je zagotovitev delovanja programa brez
napake. Z izvajanjem programske opreme ali komponente dokažemo delovanje programa v
skladu s pričakovanji. Zato prikaz pravilnega delovanja programa je glavni namen testiranja,
saj s tem dokažemo kakovost oziroma zadane cilje kakovosti programa. Sčasoma je prioriteta
testiranja postala odkrivanje in odpravljanje napak, s tem sta dejavnika zatrla kakovost
programa, ki pa je različnim organizacijam in ljudem primarni namen. Testiranje izpolnjuje
dva glavna namena [2]:
• Odkriti in odpraviti napake.
• Predstavitev kvalitete oziroma pravilnega delovanja programa.
Napaka, prisotna v programski opremi, lahko organizaciji povzroči škodo v višini več
milijonov evrov, če pa je napaka manjša in se jo da rešiti v času življenjskega cikla
programske opreme, je strošek občutno manjši in vodi v nekaj tisoč evrov. [5]
Recimo: vsako četrtletje izdamo programsko opremo, ki vsebuje 500 napak, ki jih je potrebno
odpraviti. Strošek za popravilo vsake napake v fazi razvoja je 100 €, v fazi testiranja 500 € in
v fazi predaje končnemu uporabniku 2500 €. Analize v podjetju prikazujejo, da 25 % napak
odkrije programer, 50 % napak odkrije povprečno izobražen tester, ostalih 25 % pa končni
uporabnik. Predpostavimo, da organizacija, ki je razvijala programsko opremo, ni imela testne
skupine, potem 75 % napak odkrije končni uporabnik, ostalih 25 % pa odkrije in odpravi
razvijalec. V takšnem položaju stroški odpravljanja napak narastejo na 887,500 € (12,500 € +
875,000 €). Recimo, da zaposlimo tri testerje, ki jim na uro plačamo 50 €, kar pomeni, da nam
7
zavzamejo 495,500 € (12,500 € + €108,000 € + €375,000 €) predvidenih stroškov na
četrtletje. [5]
Stroški odkrivanja in odpravljanja napak precej narastejo skozi življenjski cikel razvoja
programske opreme. Če je napaka storjena in je odkrita v fazi izdelave zahtev, potem je
napako odkriti in odpraviti relativno poceni. Spodnja slika prikazuje (Slika 1), kako stroški
naraščajo v odvisnosti od časa, kdaj je bila napaka odkrita in odpravljena. [2]
Slika 1: Stroški testiranja [2]
Testiranje je eden izmed najpomembnejših delov Quality Assurance (QA) in pogosto izvaja
QA. Kakovostna programska oprema je običajno brez napake in je pravočasno končana v
meji proračuna, izpolnjuje vse zahteve, izpolnjuje pričakovanja in jo je enostavno vzdrževati.
Kakovost programske opreme je odvisna od stranke in njenega sodelovanja skozi celoten
projekt, saj jo bodo uporabljali številni uporabniki v njeni organizaciji. Vsaka stranka ima
svoj kriterij določanja in merjenja kakovosti programske opreme; npr.: računovodska
organizacija določi kakovost v smislu donosnosti naložbe, medtem ko lahko uporabnik vidi
8
kakovost v drugačni smeri in mu je pomembna brezhibnost ter uporabniška prijaznost
programa. [5]
Programska oprema mora biti testirana tako, da bo brezhibno in z zaupanjem delovala na
predvidenem okolju. Kadar izvajamo večje število testov moramo testirati učinkovito, hitro,
uspešno ter čim bolj ugodno. [6]
Zelo pogoste so napake odkrite v zaključni fazi projekta, a zaradi prevelikih stroškov v večini
primerov niso odpravljene. Velikokrat se zgodi, da potrebe zadostujejo opredeljenim
specifikacijam, vendar pa so te velikokrat nepravilno zasnovane, kar povzroči nezadovoljstvo
končnega uporabnika s programsko opremo. V nekaterih primerih je napaka tako velika, da je
potrebno programsko opremo popolnoma prenoviti. [11]
2.4 Zgodovina testiranja
Kvaliteta programske opreme v letih od 1950 do 1960 je bila zelo slaba, saj ni obstajal noben
formalni razvojni in testni proces. V tem času je obstajalo le testiranje z razhroščevalnikom, ki
so ga uporabljali razvijalci v primeru zaustavitve programa in odpravljanju napak na licu
mesta. Med letoma 1960 in 1970 se je začelo graditi vse več aplikacij. Podaljšala se je
življenjska doba aplikacije s številnimi popravki in izboljšavami, ki so omogočili njeno
stabilnost ter zanesljivost. Na podlagi teh dveh dogodkov so se začeli uveljavljati testerji.
Stranke so skozi čas želele imeti zanesljivo in trdno programsko opremo. Pričakovanja strank
za kakovostno programsko opremo je začelo naraščati, zato so razvijalci začeli preiskovati in
izboljševati razvojne procese, tako da se čas razvojne dobe programske opreme zmanjšali in s
tem dosegli stabilnost in zanesljivost sistema.[7]
Med letoma 1970 in 1980 so razvijalci usvojili uspešno razvojno prakso, ki naj bi zagotovila
ponovljivo stopnjo zanesljivosti in stabilnosti programske opreme. Vendar ta razvojna praksa
ni ustrezala potrebam strank, nakar so prišli do spoznanja, da je manjkajoči del prakse
testiranje programske opreme. Ta proces se je uveljavil kot nova panoga v večjih
organizacijah z večjim številom zaposlenih. Proces testiranja se je začel uveljavljati šele po
letu 1990, ko je leta 2000 Damoklejev meč ogrozil preživetje računalniške panoge. Po tem
dogodku je testiranje v 21. stoletju postalo ključen dejavnik za testiranje odbitih programskih
oprem. Na stotine milijard evrov je bilo porabljenih, da bi zmanjšali morebitne poslovne
9
katastrofe, ki so jih povzročile kratice datumov. Vendar kratice programom niso omogočile,
da so lahko pravilno procesirali datum po prvemu januarju leta 2000 ali »Y2K« v domačem
jeziku. Avtorji menijo, da si vse zasluge za odkritje napake zasluži strokovna skupnost
testiranja za datum, 1 januar 2000. Kaj bi se zgodilo če intervencije ne bi bilo? Na prehod
tisočletja so opominjala tudi podjetja, nakar je vodstvo nekako priredilo stroške testiranja in
dalo na znanje, da je bil produkt »Y2K« dobro testiran. Kasneje je vodstvo spoznalo, da za
učinkovito poslovanje v 21. stoletju potrebujejo dobre testerje in testne procese. [7]
Pred razcvetom interneta so se leta 1990 razmnožila številna podjetja s programsko opremo,
kar je načelo veliko konkurenco med njimi. Posledica vsega tega je bilo zvišanje cen,
programske opreme so postajale vse bolj učinkovite in kakovostne itd. Zaradi vseh teh
sprememb, ki so se zgodile, je prevzelo glavno vlogo v programski opremi testiranje.
Arhitektura programskih sistemov, aplikacij, ki temeljijo na podlagi, interneta se razlikujejo
od starih glavnih ogrodjih oziroma strežniških aplikacij klienta, prav tako se je spremenila
metodologija za razvoj programske opreme. Novi razvojni model programske opreme se
imenuje agilno razvijanje ali ekstremno programiranje. Spremenil je vidik vodenja projektov
programske opreme in vplival tudi na testiranje. Tovrstna testiranja zahtevajo ponavljajoče in
postopne pristope testiranja. Pri testiranju testna ekipa ne uporablja samo metode črne skrinje
in druge pristope testiranja, ampak pri večini svojih dejavnosti uporabijo regresijsko
testiranje, ki se uporabi takrat ko dodamo novo funkcionalnost že obstoječi programski
opremi. Številni ponudniki testnih orodij so olajšali delo testnim inženirjem, tako da jim ni
potrebno izdelovati opravila ročno, ampak jih lahko izdelajo avtomatsko. [5]
2.5 Razlogi za napake v programski opremi
V tem poglavju bomo predstavili seznam vzrokov, zaradi katerih se pojavljajo napake v
programski opremi:
• Napačna komunikacija ali ne-komunikacija - specifikacije ali zahteve programske
opreme pogosto niso razumljive projektni skupini zaradi napačne komunikacije ali
ne-komunikacije med njimi. [5]
• Pomanjkanje znanja članov tima ali sposobnost prilagajanja – situacijo, v kateri
nimajo člani tima potrebnih znanj za projekt, preprečimo tako, da uporabimo
mentorski pristop za manj izkušene zaposlene. Pristop aktivno usposobi osebo preko
10
notranjih in zunanjih poti. Dobrega rezultata ne pridobimo brez dovolj usposobljenih
ljudi. [33]
• Kompleksnost programske opreme – ker postajajo zahteve za razvoj programske
opreme vse bolj zapletene, postaja tudi programska oprema vse bolj kompleksna.
Širitev različnih vrst programskih oprem z različnimi ter preizkušenimi
tehnologijami lahko vodi do kompleksne aplikacije. Večnamenske aplikacije,
porazdeljene aplikacije, podatkovne komunikacije, ogromne relacijske baze in druge
večje aplikacije so prispevale k eksponentni rasti kompleksnosti sistema. [5]
• Programiranje napak – če programerji niso razumeli namen specifikacije ali pa so
naredili napako pri implementaciji, potem bo napaka definitivno nastala v
programski opremi. [5]
• Spreminjanje zahtev – v tej fazi pride največkrat do napake. Spreminjanje zahtev
pogosto zruši plan celotnega projekta od zasnove do izgradnje, testiranja ter razvoja.
V ekstremnih situacijah lahko celotno dokumentacijo ter izdelek zavržemo oziroma
opustimo. Po navadi se v zahtevah spremeni kakšen modul programske opreme, ki
pa je lahko pomemben in se navezuje na druge module. Ti dejavniki so posledica
nenamernih napak v programski opremi. [5]
• Preobremenitev virov – za nedotakljivo ter abstraktno programsko opremo težko
planiramo načrt projekta. Zaradi slabega planiranja velikokrat prihaja do
preobremenitve, ki je posledica napak programske opreme. Strokovnjaki za
načrtovanje programske opreme težko določijo skrajne roke; zaradi površnega dela
prihaja do številnih napak v programski opremi. [5]
• Pomanjkanje testiranja kakovosti – v večini projektov je v ospredju kodiranje in ne
testiranje. Zato se testiranje zavzema za večjo integriteto in vlogo v celotnem
razvoju programske opreme življenjskega cikla. [34]
• Nezanesljivi viri – za razvoj programske opreme potrebujemo usposobljene in
izkušene strokovnjake. Zaradi pomanjkanja znanja zaposlenih na trgu pogosto
prihaja do napak v programski opremi. [5]
• Neprofesionalni odnos – zelo pogosto se zgodi, da imajo strokovnjaki v skupini
projekta težave z odnosom do ostalih. Njihovi neprofesionalni odnosi se kažejo tako,
da pogosto vzamejo svojo nalogo kot enostavno, igrajo svojo pisarniško politiko,
pogosto se izognejo dodeljeni nalogi in jo preložijo na druge člane ekipe. Ta dejanja
11
ne povzročijo le problemov pri doseganju končnih rokov, ampak s takšnim odnosom
povzročijo še več napak v programski opremi. [5]
• Slabo definirana dokumentacija – je druga največja napaka programske opreme. Pri
majhnih projektih uporabljajo pristop ekstremnega ali agilnega programiranja, saj je
pri teh metodah manj dokumentacije, razvijajo se manjši projekti, ki so manj
kompleksni. V primeru večjih projektov mora ekipa obravnavati več funkcionalnosti
programa hkrati, kjer je program tudi kompleksnejši in obširen, zato je pri razvoju
obširnih oziroma kompleksnih sistemov pomembna dobro definirana
dokumentacija. Pri pomanjkljivi dokumentaciji lahko pride do napake v programski
opremi. Problemi se pojavijo tudi pri vzdrževanju celotnega sistema, ko ga predamo
v produkcijo. [5]
• Pomanjkljivo sodelovanje s končnim uporabnikom – če se med razvijanjem
programske opreme ne upošteva vidik uporabnika, potem definitivno iščemo težave.
Težava nastane pri iskanju napak in vključevanje uporabnikov k sodelovanju v
proces razvoja programske opreme. [34]
• Razvojna orodja – zaradi hitrega razvoja v poslovnem okolju projektne skupine
uporabljajo raznolika orodja, ki jim omogočajo povečati produktivnost v
organizaciji. Orodja, ki jih uporabljajo, so vizualna orodja, razne knjižnice,
prevajalniki, orodja za izdelavo skript, Rapid Application Development (RAD),
integrirana orodja itd. Vsako orodje ima svoje slabe lastnosti, ki zaradi slabe
dokumentacije še pripomore k napaki programa. [5]
2.6 Vloge in osebe pri testiranju
Testiranje je stroka, ki zahteva določene spretnosti in sposobnosti posameznih testnih
praktikov, prav tako vključuje ljudi z določenimi človeškimi lastnostmi oziroma tipi
osebnosti. Ljudje imamo osebnosti, ki jih je zelo težko spremeniti; rojeni smo s številnimi
karakteristikami, ki se oblikujejo od rojstva naprej. [8]
Številni poklici za izdelavo programske opreme zahtevajo napredne tehnične veščine, kot so
razvijalci programske opreme, razvijalci podatkovnih baz, razvijalci omrežja ter sistemski
administratorji. Najboljši testerji programske opreme morajo imeti vsa napredna znanja
poklicev, ki smo jih našteli. Testiranje in arhitektura programske opreme zahtevata veliko
12
strokovnega znanja. Testerji, ki nimajo tehničnega in naprednejšega znanja, bodo na višji
ravni zelo težko načrtovali, še težje pa izvajali kompleksne testne plane na končanem sistemu.
Kako izurjen tester pravilno uporabi široko tehnično znanje? Edinstvena in najpomembnejša
vloga testerja je preveriti programsko opremo. Tester ima objektiven pogled na programsko
opremo, je neodvisen od avtorjev razvojnih dokumentov in programske kode, kjer z
večkratnim testiranjem ugotovi skladnost programske opreme s specifikacijami in zahtevami.
Razvojna ekipa od testerja pričakuje poročilo, v katerega zapiše izpolnjene in manjkajoče
zahteve oziroma specifikacije. Testni rezultati morajo biti dovolj razumljivi, da razvijalci
hitreje izsledijo napako; ne pozabimo, da je za diagnozo in popravilo napake še vedno
odgovoren razvijalec. [7]
Katere vloge, poleg validacije programske opreme še ima tester? Strokovni odgovor je
načrtovanje, načrtovanje in načrtovanje. Testiranju vedno primanjkuje časa, osebja in opreme,
običajno tudi vse troje, zato mora glavni tester identificirati kritične točke programske
opreme, ki morajo biti testirane na učinkovit način. Kot pri večini projektov moramo te
odločitve opredeliti v načrtu in urniku testiranja, nato mora tester upravljati z načrtom in
urnikom do konca testiranja. [7]
V večjih (30 in več razvijalcev) podjetjih je v testiranje vključeno večje število ljudi. V
manjših podjetjih se lahko vloge prekrivajo. Naštete so vloge, ki se v večini primerov
najpogosteje uporabljajo [8]:
• Osebje stranke so ljudje, ki bodo uporabljali sistem. Pogosto nimajo stikov z razvijalci
zahvaljujoč združenim prizadevanjem uprave na strani stranke in uprave na strani
razvijalcev. In to zaradi tega, ker lahko stik s strankinim osebjem, razvijalcem razkrije,
kako malo uprava na strani stranke ve o tem, kaj osebje zares počne in celo postavi
pod vprašaj razlog za sistem. Uprava na strani razvijalcev ne želi, da razvijalci
razburjajo strankino upravo z obsodbenimi vprašanji, ki se začnejo s frazami, kot so:
»Kaj je smisel tega,...?« ali »Zakaj enostavno ne bi ...?« Osebje stranke je ključno tako
pri pisanju specifikacije zahtev kot pri preverjanju, da so deli sistema, ki izvajajo
interakcijo med človekom in računalnikom (uporabniški vmesnik) realistični in
delujoči.
• Stranka je oseba, ki financira projekt. Upoštevati moramo, da stranka dejansko nikoli
ne bo uporabljala produkta, zato morajo razvijalci in testerji imeti stik z osebjem
stranke.
13
• Razvijalci so uslužbenci, ki pišejo kodo in modele na nizki ravni. Pogosto razvijajo in
izvajajo teste enote za kodo, ki jo programirajo, če to drži, jih še vedno mora preveriti
tester. Razvijalec mora teste izdelati tako, da se še po odkritju napake lahko ponovno
izvedejo. Nadzorovati je potrebno odnose med testerji in razvijalci ter zagotoviti, da si
niso preveč blizu (kar bi lahko omajalo kriterije testiranja, še posebej, če napake ne
spadajo pod pravo klasifikacijo). Prav tako morajo nadomeščati podporo za
programsko opremo, če je ne more nihče drug.
• Vodja projekta je odgovoren za vidike projekta. Projektni vodja načrtuje projektni
načrt in načrt kakovosti, prav tako je odgovoren za kakovost in varnost projekta.
Pogosto je nadrejeni nad vodjo testerjev in ima določeno finančno avtoriteto pod
prisotnostjo vodje oddelka. Pri svojem delu mora biti zelo pozoren, da njegovo osebje
ne uporablja bližnjic do lažjih rešitev, vendar je pogosto pod pritiskom vodje oddelka
in se velikokrat uporabijo. Projektni vodja odobri sistem za uporabo.
• Vodja testerjev je odgovoren za izdelavo testne strategije in testnih načrtov oziroma
testnih delov načrta kakovosti. Pogosto je pod vodstvom vodje projekta in vodje
oddelka in njima poroča o vseh podrobnosti sistema. Vodja testerjev mora voditi testno
skupino tako, da sproti pregleduje testne rezultate projekta. Ima moč zavrniti odobritve
sistema.
• Testerji so odgovorni za kakovost rezultatov z navedbo, načrtovanjem, izvajanjem in
analiziranjem testov. Testerji so lahko tudi razvijalci, vendar niso odgovorni za razvoj
sistema oziroma komponent, ki se testirajo. Potrebujejo testne specifikacije, verzije in
pregledujejo pravilnost specifikacij. So pod vodstvom vodje testerjev in mu poročajo o
napredkih, lahko pa neposredno poročajo projektni vodji.
Odnos med razvijalci in testerji je neizogibno kontradiktoren, kar pomeni, da to ni slaba stvar,
saj razvijalci želijo sprogramirati delujoč sistem, na katerega testerji želijo prikazati
nepravilnosti sistema. Ključ do uspeha je potrpežljivost, smisel za humor, jasne opredelitve
odgovornosti, načrt in dobro osebje. [8]
2.7 Pristopi učinkovitega testiranja
Ta načela so zmes strokovnega testiranja iz izkušenj med letoma 1980 in 1990 ter Y2K
izkušnje. Na podlagi teh so nastala spodaj navedena načela testiranja programske opreme [7]:
14
• Poslovno tveganje je mogoče zmanjšati z iskanjem napak.
Vprašanje, ki ga bomo zastavili, pogosto nima odgovora. »Kakšni bodo stroški če programska
oprema ne bo delovala tako kot je bilo predvideno?« Zato moramo zgodaj v procesu
zagotoviti močno povezavo med iskanjem napak in odpravljanjem tveganj.
• Pozitivno in negativno testiranje prispeva k zmanjševanju tveganja.
Pozitivno testiranje preveri, ali programska oprema deluje tako, kot je načrtovana. Pri
negativnem testiranju je podobno, s tem da stranka ne more onemogočiti delovanje
programske opreme pod normalnimi poslovnimi okoliščinami. Tak pristop testiranja je
pogosto ločen od razvoja programske opreme, zato ker je bolj zamudno kot pozitivno
testiranje; zahteva več testerjev kot pri pozitivnem testiranju in ni očitno usmerjenih tveganj.
• Statično in zmogljivostno testiranje prispevata k zmanjšanju tveganja.
Prevladujoče testiranje programske opreme, ki se uporablja danes, vključuje izvedbo
programske kode znotraj razvoja. Funkcionalno, strukturno (nefunkcionalno) in
zmogljivostno testiranje mora izvesti programska koda, da je testiranje dokončano. Številne
testne skupine in organizacije so prišle do spoznanja, da nastane zelo veliko dokumentov v
času razvoja programske opreme, v katerih se lahko nahajajo napake. Če bi napake
pravočasno odkrili in odpravili, bi lahko zmanjšali število napak še pred kodiranjem
programske opreme. Logična ugotovitev je, da niti najboljši programerji organizacije ne
morejo ugnati slabih zahtev ali slabih specifikacij pri programiranju programa
• Avtomatski testi lahko prispevajo k zmanjšanju tveganja.
Sčasoma so postala naročila programske opreme kompleksnejša od starejših sistemov, zato so
nastala nova poslovna tveganja. Ta nova tveganja pogosto najdemo v območju delovanja, kjer
sta odzivni čas sistema in velika prostornina prepustnosti ključna za poslovni uspeh, zato ju je
nemogoče testirati ročno. Zmogljivostna testna orodja so precej draga. Zaradi slabo
izvedenega zmogljivostnega testa je lahko potencialni riziko presežen strošek orodja.
• Največja nevarnost ima primarno prioriteto testiranja.
Kadar imamo omejeno število testnega osebja, omejena testna orodja in omejen čas za
testiranje (večina projektov ga ima) je pomembno zagotoviti, da vsa omenjena sredstva
zajamejo najbolj kritična poslovna tveganja. Če testna sredstva ne morejo zajeti vseh kritičnih
poslovnih tveganj in nadaljujemo s testiranjem, bo stranka dobila napačne rezultate testiranja.
• Testiranje programske opreme v vlogi kupca oziroma uporabnika.
To načelo se zdi zelo intuitivno, ampak izkušnje kažejo na vsakoletne številne primere, da
aplikacija enostavno ni testirana z vidika stranke.
15
• Predpostavimo, da so napake posledica procesa in ne osebnosti.
Dobri razvijalci programske opreme pogostokrat občutijo lastništvo nad produktom, ki ga
razvijajo. Številni vidiki lastništva so lahko pozitivni in lahko motivirajo razvijalce k dobremu
delu oz. razvijanju. Obstaja vidik, ki prikazuje lastništvo kot negativno lastnost. Razvijalec
dobro pozna program in ga bo testiral po bližnjicah, medtem ko tester ne pozna programa in
se osredotoči samo na napake programske opreme.
• Iskanje napak je naložba in tudi strošek.
Vodstvo, direktorji in menedžerji so naravnani k temu, da je testiranje velik strošek, ter
pogosto postavljajo vprašanja kot so: »Koliko ljudi je potrebnih? Koliko tednov je še do
prekoračitve roka? Kakšna orodja potrebujemo ter koliko?« Strošek dejavnikov predstavlja
legitimni del celotne poslovne slike, vendar obstajajo prednosti, ki lahko nadomestijo stroške
testiranja in zmanjšajo poslovna tveganja. Nekatere prednosti so lahko uresničene med
potekom testnega projekta z inteligentno uporabo avtomatskih testnih orodij. Z
avtomatiziranim testnim orodjem zmanjšamo strošek v primerjavi z ročnim testiranjem.
Učinkovito testiranje lahko vpeljemo glede na prihodnje testne projekte s ponovno uporabo
testnih scenarijev in odkrivanjem napačnih vzorcev. Napisani, validirani in izvedeni testni
scenariji predstavljajo uporabne podatke za sistem. To konzervativno znanje lahko uporabimo
v starejših ali posodobljenih sistemih s podobnimi funkcionalnostmi. Ponovna uporaba testnih
skript na poznejših verzijah programa se imenuje regresijsko testiranje.
2.8 Testno okolje
Testno okolje je sestavljeno iz programske in strojne opreme, na katerem testna ekipa izvaja
teste na novo zgrajeni programski opremi. Ta konfiguracija je sestavljena iz logične
konfiguracije, ki vključuje strojno opremo, in fizične konfiguracije, ki vključuje strežniški
operacijski sistem, odjemalski operacijski sistem, podatkovni strežnik, končno okolje, ki teče
v ospredju, brskalnik ali katerokoli drugo programsko opremo, potrebno za funkcioniranje
izdelka oz. programske opreme. To testno konfiguracijo je potrebno graditi na obeh straneh –
torej na strežniški in odjemalčevi strani. [35]
16
2.9 Začetek testiranja
Vse pogosteje se testiranje obravnava kot zelo preprosta dejavnost, ki jo lahko vsakdo
opravlja brez načrtovanja, razporejanja in drugih virov. Testiranje predstavlja visoko
kvalificirano testno osebje, združeno v testno skupino, ki imajo dovoljenje do vodstva,
sredstev ter razporedov, ki so potrebna za načrtovanje in dokončanje testiranja. Testna ekipa
lahko kot katerakoli druga poslovna ekipa priskrbi testne rezultate pravočasno in v okviru
proračuna, to je samo v primeru, če se držijo pravil standardnih praks projektnega vodenja.
Prednost te ugotovitve je, da pri testiranju ni potrebno zadeti in ne zgrešiti, ampak lahko
testiranje načrtujemo in zaključimo z zaupanjem, da bomo dosegli cilje projekta. Iz teh
ugotovitev smo spoznali, da so testerji omejena sredstva, to pomeni, če so vsi testerji že
razporejeni na enem ali več projektih, potem ne moremo načrtovati nadaljnjih projektov,
dokler ne zaposlimo dodatno silo kvalificiranih testerjev. [7]
2.10 Zaključek testiranja
Velikokrat zmanjka časa za dokončanje testiranja. Kaj storiti v tej situaciji, da lahko
dokončamo testiranje? Ko se približujemo koncu testiranja, najprej v ospredje postavimo
problematične napake, ki predstavljajo največjo možno poslovno tveganje, nato se lotimo
testiranja in odprave teh napak. Potem sledi pregled nedokončanega testnega plana ter
ocenitev neuspelega testiranja. Vodja razvoja mora v primeru predčasne zaustavitve testiranja
predstaviti oceno tveganja. Naloga vodje razvoja je pravilna razsodba o zaustavitvi testiranja,
če ne poteka po urniku projekta, ali poiskati dodaten čas in sredstva za dokončanje testiranja
po načrtu oziroma urniku. [7]
Zelo težko je testirati vse funkcionalnosti programske opreme v določenem času, zato
pregledamo testne rezultate in jih primerjamo s funkcionalnosti sistema, ki jih je stranka
postavila za najbolj pomembne. Cilj pregleda je določiti funkcionalnosti, ki jih bomo lahko
testirali v omejenem času z omejenimi sredstvi. [7]
Ne smemo pozabiti na skupino napak, ki jih lahko odkrijemo na istem območju. Če obstajajo,
zahtevamo pregled kode tega območja, nakar razvojna ekipa ugotovi, ali lahko skrite napake
odpravi brez večjega napora. Problematične napake morajo testerji in razvijalci obravnavati,
preden izgubijo preostala testna sredstva. [7]
17
3 Faze in življenjski cikel testiranja
Namen načrtovanja testiranja je preverjanje testiranja, ki opredeljuje testne cilje in pripomore
k nujnim odločitvam za preoblikovanje testne strategije v operativnem načrtu, ki predstavlja
plan izvedbe testiranja. [8]
V današnjih časih postaja velikost in kompleksnost programske opreme vse večja, zato
postaja neformalno testiranje brez priprave in načrtovanja neustrezno. Testiranje na formalen
način lahko hitro spregleda pomembne funkcije, lastnosti in povezane komponente
programske opreme ter določene podrobnosti implementacije. Zato je nujna potreba po
načrtovanju, spremljanju, upravljanju in optimiziranju testnih strategij.[2]
Če želimo, da testiranje postane učinkovito in uspešno, potem ne smemo testirati na določeni
točki razvojnega procesa programske opreme. Razvojni proces ni statičen, zato se morajo
testne tehnike prilagoditi statusu programa v okviru razvoja. Razvoj in testiranje programske
opreme bi morala slediti pristopu »kodiranja in odpravljanja napak«, v tem primeru se
testiranje izvaja po fazah. Za te faze ni nobene sheme, ki bi prikazovala njuno uporabo,
vendar obstaja model osnovne postavitve faz, s katerim se usmerjamo. Za primer si bomo
podrobneje ogledali V-model testiranja.
3.1 V-model testiranja
Pred obravnavanjem V-modela si bomo najprej pogledali model, ki je nastal pred njim.
Waterfall model je eden izmed prvih modelov, ki ima naravno časovnico, kjer se opravila
izvajajo v zaporedju. Waterfall model se začne na vrhu s študijo izvedljivosti in nadaljuje pot
navzdol z različnimi projektnimi opravili ter se zaključi z implementacijo izdelka v
produkcijo, kot je prikazano na spodnji sliki (Slika 2). Zasnova gre najprej skozi razvoj,
implementacijo in na koncu skozi testiranje. V tem primeru se izdelek testira na koncu
življenjskega cikla projekta, kjer se napake in pomanjkljivosti odkrijejo tik pred predajo. Ta
model težko prenese povratne informacije nazaj na vrh modela in ima težave pri izvajanju
številnih iteracij za določeno fazo. [11]
18
Slika 2: Waterfall model [6]
V-model je odpravil pomanjkljivosti Waterfall modela, kjer se je testiranje začelo na koncu
modela in so bile zaradi tega napake odkrite prepozno. Testiranje je posledično podaljšalo rok
projekta in dejansko predajo izdelka. V V-modelu se testiranje začne zgodaj v življenjskem
ciklu, ki je po načelu strukturiranega testiranja. Model vsebuje različne aktivnosti, ki se
izvedejo pred koncem faze kodiranja. Aktivnosti se izvajajo vzporedno z razvojem, kjer
morajo testerji sodelovati z razvijalci in analitiki, da lahko izvedejo opravila in pripravijo
testne rezultate. Proizvod, izdelan s strani razvijalcev in analitikov, je osnova za testiranje
skozi eno ali več ravni. Testiranje v zgodnji fazi pogosto odkrije napake v osnovnih
dokumentih, vendar nam dobra praksa narekuje, da testerje vključimo že pri pregledu osnutka
dokumenta. V-model ponazarja ujemanje testnih aktivnosti (verifikacije in validacije) z vsako
fazo življenjskega cikla. Testiranje validacije poteka predvsem v zgodnjih fazah
(pregledovanje zahtev uporabnika) in pozno v življenjskem ciklu (med testom
sprejemljivosti). [65]
19
Obstaja veliko različic V-modela, vendar je zelo pogost V-model s štirimi fazami testiranja.
Predstavili bomo cilje vseh štirih faz, ki so [11]:
• Testiranje enote/komponente: išče napake in preverja delovanje komponent
programske opreme (npr. kot so moduli, programi, objekti, razredi), ki jih posamezno
preverimo.
• Integracijsko testiranje: preverja vmesnike komponent, interakcije različnih delov
sistema, kot je operacijski sistem, datotečni sistem in strojna oprema.
• Sistemsko testiranje: preverja odzivanje celotnega sistema/izdelka, definiranega v
okviru razvojnega projekta ali izdelka. Glavni cilj testiranja sistema je preverjanje
pred predpisanimi zahtevami.
• Test sprejemljivosti: testiranje validacije glede na potrebe uporabnika, zahtev in
poslovnih procesov, ki na podlagi teh določi sprejemljivost sistema.
V-model prikazuje, v kateri fazi razvoja programske opreme bi morale potekati testne
aktivnosti. Vsaka razvojna aktivnost ima testno aktivnost in obratno. Vsa ta načela veljajo
povsod, ne glede na to, kateri model življenjskega cikla programske opreme se uporablja.
Najpomembnejši dejavnik za uspešno uporabo V-modela je določitev roka izdelave testnih
primerov. V fazi načrtovanja testov se vedno pojavijo napake ne glede na namen testov. Na
kratko bomo predstavili načrt testiranja v V-modelu: v fazi sprejemljivostnega testiranja testni
primeri odkrijejo napake v zahtevah, v fazi sistemskega testiranja testni primeri odkrijejo
napake v specifikacijah funkcionalnosti, v fazi integracijskega testiranja testni primeri
odkrijejo napake v zasnovi in v fazi testiranja enote/komponente testni primeri odkrijejo
napake v kodi. Načrt testiranja se mora sprožiti že v začetku, če se izvede proti koncu modela
postanejo popravila zelo draga. Z izdelavo testnega načrta ne čakamo do izvedbe testiranja,
ampak ga začnemo snovati takoj, ko pridobimo informacije za potek. Potem je učinek pri
iskanju napak uspešen in ne destruktiven, saj se napake odpravijo preden se razmnožijo.
Seveda testov ne moremo izvajati, dokler ni v celoti razvita enota/komponenta ali modul
programske opreme, vendar jih lahko pripravimo vnaprej. Testi se dejansko izvajajo v
obratnem vrstnem redu kot so zapisani, npr. testiranje enote/komponente je na zadnjem mestu,
vendar se izvaja prvo. [6]
V praksi ima V-model pogosto manj ali več različnih faz pri razvoju in testiranju, odvisno od
projekta in programske opreme. Faze modela se lahko kombinirajo in reorganizirajo glede na
20
naravo projekta ali arhitekture sistema. V primeru, če se izdelek razvija za komercialni trg
Commercial Off The Shelf (COTS), lahko kupec izvede samo integracijsko testiranje na ravni
sistema (npr., integracija infrastrukture in drugih sistemov) in v kasnejši fazi testa
sprejemljivosti. [11] Slika 3 prikazuje faze verifikacije in validacije ter kateri testi se
pripravijo v fazah verifikacije.
Slika 3: V-model [11]
3.1.1 Faze verifikacije
Faze verifikacije v V-modelu [31]:
• Analiziranje poslovnih zahtev: je začetna faza razvojnega cikla, kjer se z vidika
stranke opredelijo zahteve izdelka. Faza vključuje podrobno komunikacijo s stranko,
ki nam razloži pričakovanja in zahteve. Ta aktivnost je zelo pomembna in jo moramo
opraviti čim bolj uspešno, saj večina strank ne zna razložiti namena aplikacije. V tej
fazi se načrtuje in izvaja test sprejemljivosti, kjer se testirajo poslovne zahteve.
• Načrtovanje sistema: po zbranih zahtevah izdelka začnemo načrtovati celoten sistem.
Načrtovanje sistema obsega razumevanje strojne opreme in nastavitve komunikacije
izdelka. Načrt sistemskega testiranja je razvit na osnovi načrta sistema.
21
• Načrtovanje arhitekture: v tej fazi moramo najprej razumeti specifikacije
arhitekture, nato jo načrtujemo. Tehnični pristop izberemo na podlagi tehnične in
finančne izvedljivosti. Sistem je razčlenjen na module z različnimi funkcijami in se
imenuje High Level Design (HLD). Opredelimo tudi prenos podatkov in komunikacijo
med moduli in drugimi zunanji sistemi. V tej fazi z danimi informacijami načrtujemo
in dokumentiramo integracijsko testiranje.
• Načrtovanje modulov: načrtovanje notranjih modulov sistema se imenuje Low Level
Design (LLD). Konstrukcija mora biti združljiva z drugimi moduli strukture sistema in
z zunanjimi sistemi. Testiranje enote je ključni del vsakega razvojnega procesa, ki
odpravi največje napake v zelo zgodnji fazi. Teste načrtujemo in izvajamo v fazi
načrtovanja notranjih modulov.
• Faza kodiranja: v fazi kodiranja kodiramo sistemske module in se na podlagi sistema
ter zahtev arhitekture odločimo za primeren programski jezik. Kodiranje izvajamo na
osnovi smernic in standardov. Koda gre skozi številne recenzije, saj mora biti dobro
optimizirana, preden izdelamo verzijo.
3.1.2 Faze validacije
V-model ima štiri faze testiranja, ki so:
• testiranje komponente/enote
• integracijsko testiranje
• sistemsko testiranje
• test sprejemljivosti
3.1.2.1 Testiranje komponente/enote
Testiranje komponente je znano kot testiranje enote, modula, in programa, v katerih iščemo
napake in preverjamo delovanje ločenih delov programske opreme (npr. moduli, programi,
objekti, razredi, itd.). Pri testiranju preverjamo notranji najmanjši del sistema programske
opreme in njeno delovanje z ostalimi deli sistema. Modul, ki ga testiramo, je izključen iz
preostale kode in ga preverjamo, dokler ne deluje pravilno. [11]
V preverjanje je vključeno testiranje funkcionalne in nefunkcionalne karakteristike, kot je
spremljanje virov (npr. izgube pomnilnika), testiranje zmogljivosti in testiranje strukture (npr.
pokritost kode). Testni primeri izvirajo iz načrtovanja programske opreme ali podatkovnega
modela. Testiranje komponente prav tako preverja kodo s pomočjo razvojnega okolja, kot je
22
testno ogrodje enote ali razhroščevalno orodje, s katerim upravlja razvijalec, ki je napisal
kodo. Včasih, odvisno od ravni tveganja, izvaja testiranje zunanji razvijalec in s tem uvaja
neodvisnost. Odkrite napake razvijalci odpravijo hitro brez formalnega evidentiranja
ugotovljenih incidentov. Obstaja pristop, s katerim pred kodiranjem pripravimo in
avtomatiziramo testne primere, ki se uporablja v Extreme Programming (XP). Ta pristop
imenujemo Test-Driven Development (TDD) in je iterativen, temelji pa na ciklih razvoja
testnih primerov, izgradnji in integraciji manjših delov kode ter testiranju komponent. [13]
Prednost komponentnega testiranja je posamično testiranje enote sistema in hitro iskanje
napak. V integriranem sistemu je problem poiskati lokacijo napake, saj je težko ugotoviti, v
kateri enoti se nahaja, zato vedno testiramo enote pred integracijo sistema. Testiranje
nedokončanih modulov razvijalci nadomestijo z nadomestki in gonilniki, ki simulirajo klicano
(nadomestek) enoto in klicatelja (gonilnik) enote. Enota za testiranje potrebuje nadomestek in
gonilnik, kjer nadomestek simulira klicano enoto in gonilnik simulira klicatelja enote.
Podrobneje bomo predstavili uporabo gonilnikov in nadomestkov [32]:
• Nadomestki: imamo tri module A, B in C. Modul A je dokončan in ga je potrebno
testirati. Modul A kliče funkcije iz modula B in C, ki pa nista dokončana, zato
razvijalec izdela umeten modul, ki simulira vračanje vrednosti modula B in C k
modulu A. Ta umeten modul se predstavlja kot nadomestek.
• Gonilniki: V tem primeru imamo dokončana modula B in C, vendar modul A ni
dokončan in kliče funkcije iz modula B in C. Razvijalec napiše umetno kodo za modul
A, ki bo vračal vrednosti moduloma B in C. Delček umetne kode imenujemo gonilnik.
3.1.2.2 Integracijsko testiranje
Integracijsko testiranje preverja vmesnike med komponentami in interakcije z različnimi deli
sistema, kot so operacijski sistem, datotečni sistem in strojna oprema ali vmesnik med
sistemom. [57]
Večje ko je področje integracije, težje je izločiti napako določenega vmesnika. Integracijo
testiramo z različnimi pristopi, eden izmed njih je »big-bang«, ki preverja integrirane sisteme
ali komponente kot celoto. Prednost »big-bang« testiranja je, da razvijalcem za simulacijo ni
potrebno izdelovati umetnih komponent ali modulov, saj ta pristop testira dokončan sistem.
Glavni problem je pomanjkanje časa, saj je zelo zamudno in težko odkriti napako, zato »big-
bang« integracijo uporabimo takrat, ko smo optimistični in prepričani, da sistem ne bo
23
vseboval nobenih napak. Drugi ekstremni pristop najprej integrira module enega po enega,
nato izvede preizkus po vsakem koraku. [56]
Inkrementalni pristop zgodaj odkrije pomanjkljivosti, saj išče napake v manjšem sklopu
sistema, zato je vzrok odkrit relativno hitro. Vendar je ta pristop zamuden, saj moramo pri
testiranju razviti in uporabiti nadomestke ter gonilnike. Inkrementalna integracija ima vrsto
obstoječih možnosti, ki so deloma odvisne od arhitekture sistema [56]:
• Pristop top-down: testiranje poteka od zgoraj navzdol po arhitekturi sistema (npr.
začne iz uporabniškega vmesnika ali glavnega menija). Komponente so nadomeščene
z nadomestki.
• Pristop bottom-up: testiranje poteka od dna in se povzpenja po arhitekturi sistema
navzgor. Komponente so nadomeščene s strani gonilnikov.
• Inkrementacija funkcionalnosti: integracija in testiranje potekata na podlagi funkcij
oziroma funkcionalnosti, kot je dokumentirano v specifikacijah.
Preferenčno zaporedje in število korakov integracije je odvisno od lokacije v arhitekturi
vmesnikov z visokim tveganjem. Integracijo najprej začnemo z najbolj problematičnimi
vmesniki, s tem preprečimo nastanek večjih napak ob koncu faze integracijskega testiranja.
Inkrementalni pristop je bolj učinkovit od »big-bang« pristopa, saj zmanjša možnost odkritja
napake v pozni fazi testiranja. Idealno bi bilo, če bi tester popolnoma razumel arhitekturo in
vplive integracije. Dobra praksa za učinkovito testiranje priporoča, da najprej izdelamo teste
integracije, potem začnemo z razvijanjem komponent v zaporedju. [11]
Testerji se na vsaki stopnji integracije osredotočijo izključno na integracijo. Kar pomeni, da
pri integraciji s komponentama A in B testirajo izključno njuno medsebojno komunikacijo in
ne funkcionalnosti. V integracijsko testiranje je vključeno tudi preverjanje nefunkcionalnih
karakteristik (npr. testiranje zmogljivosti). V tej fazi se po navadi uporabijo tudi funkcionalni
in strukturni pristopi. [11]
3.1.2.3 Sistemsko testiranje
Sistemsko testiranje preverja obnašanje celotne programske opreme/sistema po opredeljenih
Software Requirements Specifications (SRS). Glavni cilj testiranja je preveriti skladnost
sistema z uporabniškimi zahtevami. [58]
Pogosto je to zadnje testiranje v razvoju, ki preveri ustrezanje sistema s specifikacijami in
poišče čim več možnih napak v sistemu. [59]
24
Testiranje pogosto nadzorujejo specializirani testerji, ki tvorijo posebne in samostojne testne
ekipe znotraj razvoja ter poročajo spremembe razvojni ali projektni vodji. V nekaterih
organizacijah sistemsko testiranje izvajajo zunanji testerji ali poslovni analitiki. Zahtevana
raven neodvisnosti temelji na primerni stopnji tveganja in s tem vpliva na način testiranja
sistema. [11]
Sistemsko testiranje preverja funkcionalne in nefunkcionalne zahteve sistema. Pod
nefunkcionalne zahteve spada preverjanje zmogljivosti in zanesljivosti, ki so včasih
nepopolne ali nedokumentirane. Pri testiranju funkcionalnih zahtev uporabimo tehnike, ki
temeljijo na specifikacijah (metode črne škatle). [60] Na kratko bomo predstavili primer ene
tehnike: izdelamo tabelo in na njeni podlagi kombiniramo učinke, navedene v poslovnem
pravilniku. Tehnike na podlagi strukture (metode bele škatle) vrednotijo temeljitost testiranja
elementov, kot je struktura menija ali navigacija spletne strani (za več informacij o različnih
tipih testiranja glej 5. poglavje). [11]
V tej fazi moramo v testnem okolju strogo nadzorovati: različice programske opreme, testno
opremo in testne podatke (za več informacij o upravljanju konfiguracije glej 6. poglavje).
Testiranje izvaja testna organizacija v ustrezno nadzorovanem okolju, ki se mora čim bolj
ujemati s produkcijskim, da zmanjša tveganja in napake v okolju.
3.1.2.4 Testiranje sprejemljivosti
Večino neodkritih pomanjkljivosti bo odkril uporabnik ali naročnik pri testiranju
sprejemljivosti. V tej fazi si moramo zastaviti vprašanja in na njih odgovoriti, to so: »Ali je
sistem pripravljen za izročitev? », »Ali obstajajo neporavnana poslovna tveganja?« in »Ali je
razvoj izpolnil svoje obveznosti?« Testiranje sprejemljivosti je odvisno od uporabnika
oziroma naročnika in drugih zainteresiranih oseb. Izvedba testne aktivnosti zahteva enako
testno okolje, kot je produkcijsko.
Glavni cilj testiranja je vzpostaviti zaupanje v sistem, v del sistema ali v določeno
nefunkcionalno karakteristiko, npr. uporabnost sistema. [61] Testiranje je pogosto
osredotočeno na vrsto testnega tipa, s katerim skušamo ugotoviti, ali sistem izpolnjuje svoj
namen. Glavni namen testiranja sprejemljivosti ni pri iskanju napak, ampak pri ocenjevanju
pripravljenosti sistema za uvajanje in uporabo, ki pa ni končna raven testiranja, na primer, pri
obsežnejšem sistemu lahko integracijsko testiranje izvedemo po sprejetju sistema. [11]
Testiranje sprejemljivosti se lahko pojavi na več ravneh, na primer [61]:
25
• Za izdelek, namenjen za COTS, mora organizacija pred instalacijo oziroma integracijo
izvesti test sprejemljivosti.
• Testiranje uporabnosti komponent se lahko opravi med testiranjem komponent.
• Testiranje sprejemljivosti nove izboljšane funkcionalnosti lahko opravimo pred
testiranjem sistema.
Testiranje sprejemljivosti sistemov za poslovno podporo razlikuje dva glavna testna tipa, ki
sta posebne narave in sta pripravljena ter izvedena ločeno. [11] Uporabniški test
sprejemljivosti se osredotoča predvsem na funkcionalnost, ki preveri uporabnost sistema s
strani uporabnika podjetja, medtem ko operativni test sprejemljivosti (imenovan tudi
produkcijski test sprejemljivosti) preverja skladnost sistema z zahtevami. Uporabniški test
sprejemljivosti je izveden s strani uporabnikov in upravljavcev aplikacije. V smislu
načrtovanja je to testiranje tesno povezano s sistemom in se v številnih primerih deloma
pokriva s časom. Testiranje sprejemljivosti neodvisnih podsistemov sistema mora biti v skladu
z izhodnimi kriteriji sistemskega testa in lahko pričnemo z izvedbo preverjanja tudi v primeru,
če je podsistem v fazi testiranja sistema. [61] V številnih organizacijah administracijo sistema
opravlja operativni test sprejemljivosti pred sprostitvijo sistema. Operativni test
sprejemljivosti vključuje preverjanje varnostnih kopij, ponesrečenih dogodkov, vzdrževalnih
opravil in varnostnih lukenj. [11]
Obstajata še dva tipa testiranja sprejemljivosti, ki preverjata pogodbe po naročilu izdelanega
sistema in predpise. Testiranje po naročilu izdelanega sistema se izvaja zoper kriterije, v
katerih je določen potek izdelave. Pri dogovorjeni pogodbi moramo formalno opredeliti
testiranje sprejemljivosti. Testiranje skladnosti ali predpisov se izvaja zoper predpise, ki jih
moramo upoštevati prav tako kot vladne, pravne ali varnostne predpise. [63]
Izdelek, razvit za množični trg, npr. za komercialni/poslovni trg, je za testiranje posameznega
uporabnika ali stranke nepraktičen. Zato nujno potrebujemo povratne informacije potencialnih
uporabnikov, preden predamo proizvod v prodajo. Zelo pogosto se takšen tip sistema testira v
dveh fazah testiranja sprejemljivosti. Prvi se imenuje alfa testiranje in ga izvede razvijalec.
Izbrana je peščica potencialnih uporabnikov in članov organizacije za testiranje sistema. Med
testiranjem razvijalci sodelujejo z uporabniki tako, da si beležijo odkrite napake in popravke.
Alfa testiranje lahko izvajajo neodvisne testne ekipe. Po koncu te faze nastopi beta testiranje
ali testiranje na terenu, kjer se pošlje sistem nekaterim uporabnikom, ki si ga namestijo in ga
uporabijo v realnih delovnih razmerah. Nato skozi določen čas uporabniki pošljejo evidenco
incidentov skupaj s sistemom k organizaciji, ki odpravi odkrite napake. [62]
26
Upoštevati je potrebno, da lahko vsaka organizacija po svoje imenuje fazo testiranja, kot sta
npr. tovarniško testiranje sprejemljivosti in test sprejemljivosti lokacije za sisteme, ki so bili
testirani pred in po prevzetju.
3.1.3 Iterativni življenjski cikli
Nekateri življenjski cikli nimajo zaporednega vrstnega reda. Obstajajo iterativni oziroma
inkrementalni življenjski cikli, kjer se na glavni razvojni časovni premici ponovi več manjših
samodejnih življenjskih ciklov za enak projekt (Slika 4). Zelo podobno kot pri V-modelu, ki
uporablja veliko različic iterativnih življenjskih ciklov.
Slika 4: Iterativni razvojni model [11]
Skupna značilnost iterativnih pristopov je njihova inkrementalna razdelitev, kjer se pri vsaki
iteraciji doda in preveri nova funkcionalnost. Začetni inkrement vsebuje infrastrukturo,
potrebno za podporo funkcionalnosti gradnika. Iterativni inkrement je lahko preverjen na
številnih ravneh kot del razvoja. Zaporedni inkrementi testirajo nove funkcionalnosti in
morajo izvesti regresijsko testiranje za obstoječo funkcionalnost ter integracijsko testiranje za
nove in obstoječe dele sistema. [64] Regresijsko testiranje je zelo pomembno pri vseh
iteracijah razen prve, to pomeni več testiranja za vsako naslednjo fazo, ki mora biti odobrena
v načrtih projekta. S tem življenjskim ciklom je lahko izdelek s kritično funkcionalnostjo zelo
kmalu na trgu, saj ga je zaradi razdeljenega obsega dela na manjše koščke enostavno
upravljati, s tem se posledično zmanjša začetna investicija, čeprav se lahko stroški na dolgi
rok povečajo. Zaradi hitre navzočnosti izdelka na trgu moramo pri vsakem inkrementu izvesti
validacijo, da dobimo povratne informacije o poslovni vrednosti in uporabnosti izdelka. [11]
27
3.1.4 Prednosti in slabosti V-modela
Prednost V-modela je vidna v enostavnem razumevanju in uporabi ter njegovi preprostosti za
lažje upravljanje z njim. Težava modela je pri prilagajanju sprememb, ki se pojavijo pri
spreminjanju zahtev, to je v današnjem dinamičnem življenju zelo pogosto in nas lahko
finančno veliko stane.
Tabela 1 prikazuje slabosti in prednosti V-modela [31]:
Tabela 1: Prednosti in slabosti V-modela [31]
Prednosti Slabosti
Je zelo discipliniran model, kjer se faze
zaključujejo po vrstnem redu.
Visoka tveganja in negotovosti.
Zelo dobro se izkaže v manjših projektih, v
katerih so dobro definirane in razumljive
zahteve.
Ni primeren za kompleksno in objektno
usmerjene projekte.
Preprost in enostaven za razumevanje in
uporabo.
Ni primeren za tekoče in dolge projekte.
Enostavno upravljanje z njim zaradi njegove
togosti. Vsaka faza ima posebne končne
rezultate in postopke pregleda.
Ni primeren za projekte, kjer se zahteve
pogosto spreminjajo.
V fazi testiranja je težko spreminjati
funkcionalnosti za nazaj.
Programska oprema začne delovat šele v
poznem življenjskem ciklu.
3.1.5 Dodatne faze V-modela
Spodaj naštete faze lahko dodatno vpeljemo k že znanim osnovnim štirim fazam V-modela.
Te lahko uresničijo le dovolj velika podjetja, kajti manjša podjetja nimajo profesionalnih
testerjev, niti rezerviranega sistema za testiranje ter imajo manj prefinjen načrt testiranja. V
tem primeru zasnova modela postane enostavnejša, temelji samo na komponentnem,
integracijskem, sistemskem in sprejemljivostnem testiranju. V nasprotni smeri večja podjetja
preuredijo organizacijo modela in zasnujejo svoje podfaze. [10]
• Centralno testiranje komponente
28
V tej fazi test ni izveden z razvojnega okolja, ampak so komponente testirane na
končnemu sistemu.
• Zmogljivostni test
Zmogljivostni test se izvede takoj po testiranju sistema. Namen tega testa je pridobiti
predstavo o učinkovitosti sistema ter iskanju ozkega grla zmogljivosti.
• Zmogljivostni test sistema
Ko so vse glavne komponente integrirane, je potrebno pregledati druge vpeljane
funkcionalnosti, ki niso storjene s strani razvijalcev. Prvi zmogljivostni test preveri
možne algoritmične omejitve in napačna prepričanja. S pridobljenimi podatki
preverjanja ocenimo zmogljivost programa pod realnimi pogoji.
• Pilotski test.
Pilotski test je izveden s prisotnostjo notranjega oddelka ali končnega uporabnika
oziroma stranke. Pri tem testiranju se polizdelek namesti na več sistemov, ki se po
testiranju lahko uporabijo v produkciji. Koncept pilotskega testiranja uporablja beta
teste in veliko število testerjev. Izvedejo jih v produkcijskem ali javnem okolju.
• Produktivna uporaba
Programska oprema obratuje pri končnem uporabniku ali stranki.
• Vzdrževanje
Običajno se program vzdržuje, še posebej takrat če se objavljajo nove različice.
29
4 Testiranje programske opreme v orodju Visual Studio 2013
Orodja v Visual Studio 2013 in Team Foundation Server 2013 nam omogočajo izboljšati cilje
testiranja. [12]
Glavni cilj testiranja je odkriti napake v zgodnji fazi razvoja programske opreme. Da bi
napako odkrili čim prej, moramo s testiranjem začeti v fazi načrtovanja zahtev življenjskega
cikla programske opreme, ki se nadaljuje vse do konca tega cikla. Testna ekipa mora pripraviti
testne primere, ki temeljijo na zahtevah. [13]
V tem poglavju bomo predstavili način upravljanja aplikacij skozi njihov življenjski cikel in
aplikacijsko podporo, ki jo za podporo temu upravljanju nudi Microsoft v izvedbah Visual
Studio 2013.
4.1 Upravljanje življenjskega cikla aplikacije (ALM)
Izraz ALM (Application Lifecycle Management) je postal zelo pomemben v industriji za
razvoj aplikacij, saj predstavlja način upravljanja vse od njenega rojstva ter izdelave,
namestitve, postavitve in do njene upokojitve.
ALM upravlja življenjski cikel (upravljanje, razvoj in vzdrževanje) programske opreme.
Zajema upravljanje zahtev, programsko arhitekturo, programiranje, testiranje programske
opreme, upravljanje programske opreme, upravljanje sprememb, kontinuirano integracijo,
projektno vodenje in upravljanje objave programske opreme. [36]
Uveljavila se je praksa ALM integracije, kjer se orodja in orodja uporabnikov sinhronizirajo
med seboj preko faz razvoja aplikacij. V tej integraciji mora vsak član ekipe spremljati
spremembe, ki so se zgodile v procesu razvoja, in ne dopuščati presenečanja v zadnjem
trenutku, ki bi zakasnil predajo izdelka. [36]
Pristop ALM je zelo celovit koncept, ki je spoznal, da se zahteve razvijajo na podlagi
poslovnih potreb, idej in strank, ki se štejejo kot del razvojne ekipe in igrajo vlogo skozi
razvoj aplikacije, s tem da pomagajo pri izboljšavi in aktivno sodelujejo pri implementaciji
aplikacije. Delo razvojne ekipe se ne konča s predajo aplikacije, ampak po predaji izdelka še
vedno odpravljajo težave, nastale v produkcijskem okolju, ali pa izdelajo številne različice
aplikacije, ki bodo ustrezale glede na odziv uporabnikov in analitikov. Visual Studio je
sčasoma opustil orodje, ki je podpiralo programerski koncept razvoja programske opreme
30
skozi življenjski cikel, in tako začel iskati rešitve, ki so bližje konceptu upravljanja
življenjskega cikla aplikacije. [14]
Tabela 2 prikazuje specializirane programske garniture za ALM:
Tabela 2: ALM programske garniture [36] Izdelek Izdelalo podjetje
Endevor CA Technologies
Enterprise Architect Sparx Systems
FogBugz Fog Creek Software
FusionForge FusionForge
GeneXus GeneXus - Artech
HP Application Lifecycle Management HP Software Division
IBM Rational Team Concert IBM
JIRA Atlassian
Mylyn Eclipse Foundation
Parasoft Concerto, Parasoft Development
Testing Platform
Parasoft
Protecode System 4 Protecode
Pulse Genuitec
PTC Integrity PTC
Rational solution for Collaborative
Lifecycle Management
IBM
SAP Solution Manager SAP
StarTeam Borland
TeamForge CollabNet
Team Foundation Server Microsoft
TestTrack Seapine Software
Visual Studio Application Lifecycle
Management
Microsoft
31
4.2 Orodja za Testiranje programske opreme v orodju Visual Studio 2013
Upravljanje življenjskega cikla aplikacije v orodju Visual Studio predstavlja nabor
integriranih razvojnih orodij, izdelanih s strani organizacije Microsoft. Orodja vključujejo
Integrated development environment (IDE), nadzor izvorne kode, razna opravila,
kolaboracije, meritve ter orodja za poročanje. Visual Studio ALM je sestavljen iz štirih
produktov:
• Visual Studio zagotavlja IDE za razvijanje in izdelavo uporabniških vmesnikov.
Obstajajo štiri izvedbe: Visual Studio Professional, Visual Studio Ultimate, Visual
Studio Premium in Visual Studio Test Professional. [37]
• Visual Studio Test Professional zagotavlja IDE za testerje programske opreme, da
lahko izdelajo in izvajajo teste, ki so izvedba iz Visual Studio 2013 in so primerni za
testerje, poslovne analitike, vodje produktov in za druge poslovne osebe, ki
potrebujejo kolaboracijsko orodje, vendar ne uporabljajo celotnega integriranega
razvojnega okolja. Test Professional 2013 nudi orodja za integrirano testiranje in
vodenje izdelka, ki zagotovijo kvaliteto v procesu razvoja. Podpira agilno upravljanje
portfelja, enostavnejše definicije zahtev in neprekinjene odzive strank ter zagotavlja
sledljivost preko teh procesov. [20]
• Team Foundation Server (TFS) zagotavlja kolaboracijo z izvorno kodo in
skladiščenje podatkov. Je orodje za spremljanje in poročanje o napredku projekta,
lahko ga uporabimo kot strežnik, na katerega razvijalci shranjujejo izvorno kodo
izdelka. Vzporedno lahko z njim razvijamo in testiramo programsko opremo ter
izdelamo poročila in namizja, ki prikazujejo napredek projekta. Vsebuje poročila
glede na opravljeno delo in testiranje, skladno z zahtevami.
TFS je ločen strežniški produkt orodja Visual Studio in je sestavljen iz dveh slojev, ki
ju lahko fizično naložimo na enega ali več računalnikov. Sloja, ki sestavljata TFS sta
[14]:
o Aplikacijski sloj je sestavljen iz številnih spletnih storitev, kjer računalnik
odjemalca komunicira s pomočjo visoko optimiziranega protokola spletne
storitve.
o Podatkovni sloj sestavlja SQL podatkovna baza, ki uporablja logiko
aplikacijskega sloja skupaj s podatki za našo instanco orodja TFS. Vsi podatki,
32
ki so shranjeni v orodju TFS so shranjeni v SQL strežniški bazi podatkov, kar
nam olajša delo pri izdelavi varnostnih kopij.
TFS je bil zasnovan z miselno razteznostjo. Obstajajo obsežni vmesniki za
programiranje aplikacij (API) v .NET in Javi, ki jih lahko integriramo z orodjem TFS
ter nabor dogodkov, ki omogočajo integracijo zunanjih orodij. Enake vmesnike in
dogodke uporablja Microsoft v zvezi z orodjem TFS, podobno kot integracija
odjemalca z orodji Visual Studio, Microsoft Office in Eclipse. TFS obdaja zelo veliko
konkurentov, vključno z drugimi poslovnimi življenjskimi cikli, ki upravljajo
programsko opremo in rešitve za posamezne namene (kot so nadzor nad viri, sistem za
sledenje dela itd.). Glavna prednost vseh teh zmožnosti je popolna integracija, da
lahko Microsoft upravlja z orodji za razvoj programske opreme in z orodji za
komunikacijo ekipe in stranke. [14]
• Visual Studio Lab Management je razvojno programsko orodje, ki ga je razvil
Microsoft in omogočil testerjem programske opreme izdelavo in upravljanje virtualnih
okolij [15]. Lab Managment razširja Visual Studio Application Lifecycle Management
platformo, ki omogoči celosten Hyper-V testni laboratorij. Visual Studio Lab
Management je integriran s System Center Virtual Machine Manager (SCVMM), ki
omogoča upravljanje več fizičnih računalnikov (ki gostijo virtualne naprave), shrambo
virtualnih naprav, predloge virtualnih naprav in druge konfiguracije datotek v
SCVMM strežniških knjižnicah. Uporabnikom omogoči naslednje [38]:
o Reproducira natančno stanje napake ali drugi problem pri razvijanju.
o Samodejna izgradnja, samodejno razvijanje in testiranje programske opreme v
čistem okolju.
o Zmanjšuje čas, ki je na voljo za izdelavo in konfiguracijo naprav za testiranje
programske opreme.
o Izvaja številne kopije pri testiranju ali razvoju hkrati.
o Izdelavo in upravljanje virtualnih okolij brez privilegija administratorja
sistema.
33
4.3 Postavitev testnega okolja
Preden začnemo pisati teste, moramo najprej analizirati zahteve, ki so ključnega pomena pri
testiranju izdelka, zato si postavimo naslednja vprašanja:
• Katere vrste testov se najprej lotimo pisati?
• Kje bomo zasnovali, razvili in izvajali teste?
• Kako posodobiti sistem pod vplivom testiranja in izvajati avtomatske teste?
Te tematike nam pomagajo pri postavitvi testnega okolja, nato se lotimo oblikovanja in
postavitve po zahtevah.
Vzpostavimo testno infrastrukturo, ki podpira naslednje zahteve:
• Razvijalci razvijajo avtomatske teste enot in integracije ter izvajajo teste na svojem
lokalnem okolju.
• Testerji izdelajo in izvajajo ročne teste v nadzornem okolju.
• Izbrane scenarije pretvorimo v avtomatizirane regresijske in zmogljivostne teste.
• Okolja generiramo na zahtevo z uporabo Visual Studio Lab Managment.
• Sistem, pod katerim je test objavljen na zahtevo s strani testerja z uporabo TFS Built
sistema.
Obstaja več poti prilagoditve orodja Visual Studio z življenjskim ciklom ALM, vendar bomo
z naslednjimi koraki prikazali le eno pot [21]:
• Uporaba le orodja Visual Studio – Visual Studio se uporablja za razvijanje in
testiranje, kjer testerji ugotavljajo pravilno delovanje aplikacije s pritiskom na tipko
F5. Testi enote so napisani s strani razvijalcev za testiranje posameznih razredov in
komponent. Kodirani UI testi so na nek način avtomatski testi celotne aplikacije, ki
testirajo uporabniški vmesnik.
• Osnove orodja Team Foundation Server – TFS je temeljnega pomena za upravljanje
življenjskega cikla programske opreme. Zaradi težav pri razvijanju programske
opreme velikokrat prihaja do propada projekta. Razvijanje programske opreme je
ustvarjalno prizadevanje in ne proizvodni proces, zato je bistven dejavnik uspeha
razvojne ekipe komunikacija med člani skupine in drugimi ljudmi. Microsoft Visual
Studio Team Foundation Server 2013 ponuja osnovne kolaboracijske funkcije,
namenjene razvojni ekipi programske opreme. Funkcionalnosti, ki jih TFS vključuje,
so naslednje:
o načrtovanje in upravljanje projekta
34
o sledenje opravil
o nadzor verzij
o upravljanje testnih primerov
o avtomatska izgradnja kode
o poročanje
o upravljanje virtualnega okolja laboratorija
Pri namestitvi orodja TFS dobimo številne funkcije. Funkcije, ki jih bomo najprej
izkoristili, so:
o Source control prepreči prekrivanja dela med razvijalci, zato uporabimo
sledeča pravila:
� Pravilnik prijave – opomni razvijalce, da najprej opravijo teste in
analize kakovosti na svoji kodi, preden jo dodajo na strežnik.
� Razne spremembe – razvijalec pošlje spremembe k drugemu, ki jih
pregleda in objavi na strežniku.
� Veje – pomagajo pri upravljanju dela v večjih projektih.
o Task Management sledi zahtevam (seznam opravil), napakam, problematikam
in specifikacijam. Opravila so zapisana v zapisniku, ki jih lahko dodelimo
zaposlenim, projektu, iteracijam in različnim delovnim območjem.
Organiziramo jih lahko v hierarhije in jih urejamo v Excelu ter sinhroniziramo
z orodji za upravljanje projektov.
• Project Portal je SharePoint spletna stran, integrirana z orodjem Team Foundation
Server. S tem dobi vsak projekt svojo spletno mesto. Omogoči nam različna namizja z
grafi in grafikoni napredka projekta, ki temeljijo na podlagi zahtev in testnih
rezultatov.
• Build Service je funkcija orodja Team Foundation Server, ki opravlja pomembno
nalogo za razvojno ekipo. Zgradi kodo, ki je bila preverjena s strani razvijalcev. Ekipi
omogoči, da preko e-pošte dobi obvestilo o neuspešnem testu, prav tako jim projektni
portal prikazuje poročila o najnovejših rezultatih. Obveščanje o napakah preko e-
sporočil je zelo učinkovito, saj s tem načinom ohranimo visoko kakovost kode
(prikaže nam vse zaposlene, ki so upravljali s kodo neuspele izgradnje).
• Microsoft Test Manager je zanimiv z vidika strokovnega testerja. MTM izdela teste,
zanesljive in ponovljive ter pospeši testiranje. Uporabimo ga lahko za uporabo:
35
o Pisanje ročnih testov, ki se med testiranjem prikažejo na strani zaslona.
o Snemanje testnih dejanj, ki delno avtomatizira teste, tako da lahko naslednjič
ponovno ponovimo ta dejanja.
o Popolnoma avtomatizirani testi se lahko izvajajo v storitvi za izgradnjo kode,
za ta podvig moramo prilagoditi generirano kodo iz delno avtomatiziranih
testov.
o Poveže teste z uporabniškimi zahtevami. Projektni portal vsebuje grafikone, ki
prikazujejo napredek vsake zahteve uporabnika glede na uspeh testiranja. Teste
organiziramo v garniture in načrte ter jih razdelimo po funkcionalnih področjih
in iteracijah projekta.
o Poročanje o napaki z enim korakom, vključuje posnetke stanja programa.
• Laboratoriji so zbirke testnih naprav, predvsem virtualnih naprav. Brez laboratorija
moramo aplikacijo testirati lokalno na svojem računalniku. Razvoj in razhroščevanje
aplikacije poteka na razvojnem računalniku, pogosto se številne panoge izvajajo na
istem računalniku. Vendar laboratorij lahko:
o Namesti sistem na več računalnikov in zbira testne rezultate od vsakega
računalnika. Npr. spletni odjemalec Microsoft Internet Information Services
(IIS) in podatkovna baza bosta funkcionirala na ločenih računalnikih.
o Hitro ustvari nove virtualne računalnike, tako da ni potrebno odstraniti starih
verzij aplikacije. Dobra lastnost tega je, da nam aplikacija ne more pokvariti
našega fizičnega računalnika. Pri konfiguraciji virtualnega računalnika imamo
možnost izbrati katerokoli platformo.
o Konfigurira okolje virtualnih računalnikov za posamezno testno garnituro in jo
lahko shranimo za ponoven zagon.
o Izdela posnetek stanja virtualnega okolja in ga shranimo skupaj s poročilom o
napakah.
• Avtomatska izgradnja, namestitev in testiranje. Build Service pogosto izvaja teste
enote na enem računalniku. Vendar za spletne in ostale porazdeljene aplikacije to ne
velja, ker na njih ne moremo opraviti realne simulacije pod dejanskimi operativnimi
pogoji. Z avtomatsko namestitvijo lahko izvajamo teste na virtualnem okolju, kot del
stalne ali redne izgradnje. Pri avtomatski izgradnji, sistem instancira ustrezno
virtualno okolje za teste ter postavi vsako komponento na pravi računalnik in pravo
36
okolje, ki izvaja teste, zbira podatke od vsakega virtualnega računalnika in beleži
rezultate na projektnem portalu.
4.4 Skupina projektov v orodju TFS
V orodju TFS je skupina projekta zbirka delovnih predmetov, kode, testov, delovnih izdelkov,
metrik itd., ki jih uporablja določena skupina za sledenje dela. Logični koncept skupine
projekta nam pomaga pri odločitvi, kaj naj vključimo in izključimo iz razvoja programske
opreme. Koncept skupine projekta je implementiran preko fizičnih orodij, skupin in delovnih
tokov orodji Team Explorer in TFS. Konceptualna meja, ki smo jo določili okrog skupine
projekta, vpliva na strukturo projektne skupine in na prehod iz ene skupine v drugo. [17]
4.4.1 Logična definicija skupine projektov
Z logičnega (ali konceptualnega) vidika je skupina projekta ena sama infrastruktura, ki zajema
posamezna orodja in elemente v življenjskem ciklu razvoja programske opreme. Vsaka
programska oprema ali »skupina projekta« je dejansko združena v svoj imenski prostor. Zato
je skupina projekta izoliran zbiralnik, ki vsebuje orodja in predmete, vezane na določeno
programsko opremo, tako da druga skupina projektov nima dostopa do teh orodij ali
predmetov (npr. izvorne kode, delovnih predmetov in dokumentov). [39]
Skupina projekta je osrednji koncept, ki drži skupaj prizadevanja skupine za oblikovanje
določene programske opreme ali izdelka. Skupina projekta je virtualna zbirka predmetov, ki
ustrezajo programski opremi. Za člane projekta, koncept skupine projekta odpravlja problem
dostopa do različnih predmetov, ki niso pomembni za to skupino. Takšen presežek predmetov
povzroča zmedo in upočasnjuje razvoj programske opreme. Skupina projekta mora biti
sestavljena iz orodij in predmetov, lahko vključuje tudi politiko za nadzor izvorne kode,
spletno stran za poročanje in portal. Orodje TFS omogoči skupini projekta predlogo procesa,
ki izbere ustrezna orodja in jih doda v zbiralnik skupine projekta. [39]
Koncept skupine projekta izboljšuje poročanje orodij, ki jih uporablja skupina. V preteklosti
je bilo poročanje orodij zahtevno, saj podatki iz različnih orodjih niso bili povezani. Npr.
razvijalec programske opreme želi pridobiti poročilo napak od orodij, zato bi razvijalec moral
ločiti napake iz številnih projektov, dokler te ne bi bile vse shranjene na isto lokacijo. Skupina
projekta je ustvarjena v imenskem prostoru, ki vsebuje le orodja in predmete pomembne za
37
projekt programske opreme; zato obstaja filter, ki se navezuje na različne predmete iz
različnih orodij. [39]
Orodje TFS lahko vsebuje več skupin projektov, ki so kreirane v ločenem imenskem prostoru,
npr. dokument X v imenskem prostoru A in dokument X v imenskem prostoru B nista med
sabo nič povezana, saj sta v različnem imenskem prostoru. Skupina projekta ima v ločenem
imenskem prostoru edinstvene predmete in orodja. Orodja in predmeti, ki jih vsebuje skupina
projekta A, niso dostopna razvijalcu, ki razvija na skupini projekta B. [39]
4.4.2 Fizična definicija skupine projektov
Logična definicija in konceptualna meja skupine projekta je dosežena preko orodja Team
Explorer. Team Explorer je razširljivo orodje v Visual Studio, ki združuje orodja in predmete
skupine projekta. Skupina projekta mora za svoj obstoj vsebovati vsaj orodja in predmete, ki
so določeni takrat, ko skupino projekta ustvarimo s predlogo procesa. Predloga procesa doda
skupini projekta dodatne funkcije, kot so: politiko nadzora nad izvorno kodo, spletno stran
poročanja skupine projekta, portal skupine projekta. [39]
Pri prvi uporabi orodja Team Explorer se moramo povezati z orodjem TFS; če se ne
povežemo, ne moremo izbrati skupine projektov iz orodja TFS. Team Explorer se lahko
poveže le z enim TFS orodjem, zato imamo možnost izbire skupine projektov le iz njega.
Slika 5 prikazuje povezavo z orodjem TFS in izdelavo nove skupine projekta.
Slika 5: Izdelava nove skupine projekta z uporabo orodja Team Explorer
Pred nastankom skupine projekta v orodju TFS moramo najprej izbrati predlogo procesa, ta
predloga definira nabor različnih tipov opravil in poročila, ki jih potrebujemo za načrtovanje
in spremljanje projekta. Predlogo za skupino projekta izberemo glede na potrebe testne
skupine, ki jim omogoči večjo osredotočenost na kvaliteto izdelka in zmanjšuje režijske
38
stroške. Če se potrebe testne ekipe razlikujejo od definiranih predlog, potem izdelamo
prilagojeno predlogo, nato ustvarimo skupino projekta ali najprej izdelamo skupino projekta
na podlagi predloge in nato prilagodimo projekt. [18]
Predloge lahko izbiramo glede na naslednje predpostavke [47]:
• Visual Studio Scrum 2.0 ali novejšo različico uporabimo, če se ekipa vzporedno
ukvarja z napakami in zahtevami izdelka v času načrtovanja cikla.
• MSF za Agile Software Development V6.0 ali novejšo različico uporabimo, če ekipa
loči napake od seznama zahtev izdelka ter reši opravila preden jih zaključi.
• MSF za CMMI Process Improvement v6.0 ali novejšo različico uporabimo, če ekipa
loči napake od seznama zahtev in reši opravila, preden jih zaključi ter formalno sledi
spremembam zahtev.
Pri izbiri predloge procesa imamo na voljo tri privzete predloge, ki se razlikujejo predvsem v
načrtovanju in sledenju dela (Slika 6).
Slika 6: Izbira predloge procesa
Odvisno od predloge procesa, ki se uporablja za izdelavo skupine projekta, imajo člani
skupine z uporabo orodja Team Explorer dostop do: informacije verzije izdelka, izvorne kode,
dodeljenih nalog, vpogleda v status projekta, iskanja dokumentov, pregleda nad poročili in
39
možnost izdelave delovnih predmetov, ki so povezani s skupino projekta. Slika 7 prikazuje
vozlišča skupine projektov.
Slika 7: Vozlišča skupine projekta
Npr. skupina projekta, izdelana s pristopom Microsoft Solutions Framework (MFS) za Agile
Software Development ali MFS za CMMI Process Improvement predloge procesa, imajo
naslednja vozlišča [17]:
• Delovni predmeti: omogočajo dostop za izdelavo in pregled nad poizvedbami zoper
podatkovne baze delovnega predmeta ter izdelavo novih delovnih predmetov.
Poizvedbe projekta implementira predloga procesa ali vodja projekta pri oblikovanju
skupine projekta. Uporabniško določene poizvedbe niso implementirane med
oblikovanjem skupine projekta, ampak so dodane kasneje kot vsebina po meri.
• Dokumenti: omogočajo dostop do delovnih proizvodov, kot so dokumenti,
preglednice, projektni načrti, smernice procesa in drugih nematerialnih proizvodov
razvoja. Dokumenti so shranjeni na edinstveni osrednji lokaciji portala skupine
projekta.
• Poročila: omogočajo dostop do poročil, ki vsebujejo metrike za skupino projekta in
do sredstev, ki zbirajo informacije od različnih orodij znotraj imenskega prostora
skupine projekta. SQL Reporting Services združuje informacije iz različnih orodij v
skupini projekta, ki nato tvori poročilo sestavljeno iz informacij izvoženih iz vsakega
orodja.
• Team Builds: omogoča dostop do gradnikov skupine projekta.
40
• Nadzor nad viri: omogoča dostop do artefaktov, kot sta izvorna koda in besedilo.
Razvijalci uporabijo raziskovalca virov za prijavo in odjavo izvorne kode.
Raziskovalec za nadzor virov je brskalnik izvornih datotek skupine projekta.
Nastavitve in lastnosti skupine projekta se razlikujejo od skupine projekta do skupine
projekta. Lastnosti skupine projekta so določene v Team menu v Visual Studio, ki definirajo
nastavitve za skupine in dovoljenja, ki identificirajo člane skupine projekta in njihove pravice
dostopa. Dodeljevanje skupin ustanavlja številne podskupine v skupini projekta in
učinkoviteje upravlja z zahtevanimi opravili. Nastavitve vsebujejo virtualno hierarhično
grupiranje za artefakte v skupini projekta. Struktura klasifikacije vključuje iteracije
življenjskega cikla, ki dopolnjuje skupino projekta in komponente (značilnosti skupine
projekta). Delovne predmete in druge artefakte, kot so testni primeri, je mogoče uvrstiti zoper
strukture/hierarhije za učinkovitejše sledenje in poročanje. [39]
4.5 Testiranje po testnem načrtu
Testiranje vključuje izdelavo testnega načrta, ki zajema zahteve za določeno obdobje
testiranja.
Načrtovanje testiranja je najpomembnejša dejavnost, ki na začetku v osnovnem načrtu
zagotovi listo opravil in mejnikov za spremljanje napredka projekta [40]. Prav tako določi
velikost testnega napora.
Testni načrt je glavni dokument, ki pogosto imenujemo »master test plan« ali testni načrt
projekta, ki ga običajno razvijemo v zgodnji fazi projekta [40]. Testni načrt vsebuje
informacije o procesu zagotavljanja kakovosti.
Parametri testnega načrta [48]:
• Identifikator testnega načrta: edinstvena identifikacijska referenca.
• Uvod: kratek uvod projekta in dokumenta.
• Testni predmeti: testni predmet je predmet programske opreme.
• Testiranje funkcije: je funkcija, ki jo je potrebno testirati na testni programski opremi.
• Funkcija, ki je ni potrebno testirati: identificiramo razloge, zakaj funkcija ni vključena
v testiranje.
• Pristop: splošne podrobnosti o pristopu testiranja.
41
• Uspešen/neuspešen kriterij predmeta: dokumentiramo uspeh ali neuspeh pri testiranju
predmeta programske opreme.
• Testni rezultati: testne rezultate pridobimo iz testnega procesa, testnih načrtov, testnih
specifikacij in iz testnih zbirnih poročil.
• Testna opravila: opravila za načrtovanje in izvajanje testiranja.
• Potrebe okolja: definiramo zahteve okolja, kot so strojna oprema, programska oprema
operacijskega sistema, konfiguracija omrežja itd.
• Odgovornosti: navedemo seznam vlog in opravil za člane skupine.
• Potrebe po zaposlovanju in usposabljanju: zajamemo dejanske zahteve zaposlenih za
specifično usposabljanje.
• Urnik: navedemo datum izdaje izdelka in ključne mejnike.
• Tveganja in olajšave: visoko nivojska tveganja v projektu, predpostavke in načrt
olajšave za vsako določeno tveganje.
• Dovoljenja: zajamemo naslove in datume poteka dovoljenj, ki se nahajajo v
dokumentu.
Aktivnosti testnega načrta [40]:
• Določimo obseg in tveganja testiranja.
• Dokumentiramo strategijo testiranja.
• Prepričati se moramo, da so vključene vse dejavnosti testiranja.
• Določiti moramo vstopne in izstopne kriterije.
• Ovrednotimo testiranje.
• Načrtujemo, kdaj in kako začeti s testiranjem, in se nato odločimo za način
vrednotenja testov ter določimo izstopni testni kriterij.
• Testni artefakt je del testne izvedbe.
• Definiramo informacije o vodenju, vključno z zahtevanimi meritvami, rešitvami nad
napakami in tveganji.
• Zagotovimo, da testna dokumentacija generira ponovljive teste.
Standard IEEE 829-20081 se uporablja kot referenca za oblikovanje strukture dokumentacije
testnega načrta projekta. Pregled dokumenta mora imeti povezave do podrobnosti, ki ga lahko
izdelamo bodisi v orodju TFS (Team Faundation Server) ali v drugih dokumentih. Testne
specifikacije vsebujejo podrobnosti o tem, katere funkcije testirati, o testnih primerih,
združevanju testov v kategorije, prioritetah testov in tako naprej. Večino del je lahko
42
opravljenih v TFS z uporabo seznama zahtev izdelka (ang. Product Backlog) in testnih
primerov. Da pa bi dobili dober pregled, bi morali delati po testni matriki, saj bi s tem
zmanjšali obseg testnih primerov. V primeru spremembe zahtev lahko z uporabo testne
matrike poiščemo ustrezne teste z določeno prioriteto ali seznam vseh avtomatiziranih testov.
[12]
V orodju Microsoft Test Manager (MTM) ali Team Web Access (TWA) testni načrt definira
način testiranja in rezultate testov. Vsi testi so načrtovani in izvedeni v okviru testnega načrta.
Skupina projektov ima običajno več testnih načrtov, ki so ločeni za vsak cikel (ang. Sprint),
mejnik ali drugo iteracijo. Pri razvoju več funkcionalnih področij hkrati je dobro ločiti testne
načrte za vsako področje. [16]Testni načrt je vključen v skupino projekta, ta pa je vključen v
zbirke projekta, ki gostujejo na strežniku skupine. [16]
Testni načrt vsebuje več testnih garnitur. Pri razvoju programske opreme je testna garnitura
zbirka testnih primerov, ki se uporabijo za testiranje programske opreme. S testnimi primeri
preverimo odzivanje programske opreme. Testna garnitura vsebuje podrobna navodila ali cilje
za vsako zbirko testnih primerov in informacije o uporabljeni konfiguraciji sistema med
testiranjem. Skupina testnih primerov vsebuje predpogoje stanj ali korakov in opise naslednjih
testov. Zbirko testnih primerov po navadi imenujemo testni načrt, testna skripta ali celo testni
scenarij, kar pa seveda ni pravilno. Testne garniture združujejo skupaj sorodne testne primere.
[41]
43
Testni primeri so pogosto imenovani kot testne skripte, in to takrat, ko jih združimo v testne
garniture. Testni primer je niz pogojev s pomočjo katerih tester ugotovi, ali programska
oprema deluje pravilno, kot je bilo zadano v začetku projekta. Pred izdajo programske opreme
v produkcijo moramo s številnimi testnimi primeri preveriti njeno pravilno delovanje. [17]
Slika 8 je izdelana na podlagi naše študije in prikazuje medsebojni odnos skupine projekta,
testnih načrtov, testnih garnitur in testnih primerov v orodju Visual Studio 2013, kot je bilo
opisano zgoraj.
Slika 8: Testni načrt
44
Visual Studio Ultimate, Visual Studio Premium in Test Professional vsebujejo orodje
Microsoft Test Manager, ki z uporabo testnih načrtov definira in upravlja s testnim naporom.
Najprej izdelamo testni načrt, v katerega dodamo testne garniture, testne primere ali določene
konfiguracije, kot je prikazano v spodnji sliki (Slika 9). Konfiguracija določa pristop, ki ga
bomo uporabili pri izvajanju testnih garnitur oziroma testnih primerov. [42]
Slika 9: Struktura testnega načrta v orodju MTM [42]
V MTM obstaja več načinov za izdelavo testnih načrtov in testnih primerov. Eden od načinov
je, da ustvarimo testni načrt, ki vsebuje vse mejnike, testne garniture ter teste v izdelavi. Pri
uporabi tega načina izgubimo vso zgodovino testnih rezultatov predhodnih mejnikov, zato je
bolje, da ustvarimo testne načrte, ki temeljijo na testnih ciljih za določeno iteracijo ali mejnik.
Testni načrt mejnika ima informacije o roku poteka za določen mejnik. Nov testni načrt za
mejnik izdelamo po izteku testiranja trenutnega mejnika, s tem lahko spremljamo napredek za
posamezen testni načrt in kakovosti aplikacije.
45
5 Tipi testiranja v orodju Visual Studio 2013
Visual Studio 2013 ima na voljo številna orodja, namenjena za testerje. Poglavje se prične s
pregledom tipov testiranja, ki so na voljo v programu Microsoft Test Manager in Visual
Studio 2013, omenili bomo tudi ročno in avtomatsko testiranje. Predvsem bomo izpostavili
sposobnost za avtomatizacijo testov User Interface (UI) s pomočjo UI kodirnih testov. Potem
bomo izpostavili zmogljivostne teste za spletne in namizne aplikacije, ki zagotovijo
nezmotljivo delovanje spletnih strani in namiznih aplikacij pod obremenitvijo.
Visual Studio omogoča podporo avtorizacije in izvršitve različnih testnih tipov, od katerih ima
pri testiranju aplikacije vsak drugačen namen. Uspešen testni načrt vsebuje mešanico različnih
testnih tipov, ki so:
• Ročno testiranje potrebuje človeško roko za interakcijo z aplikacijo, ki mora preveriti
pričakovane rezultate ter poročati o uspešnosti testiranja. Je edini tip, ki ga zastopa
Visual Studio Team Foundation Server 2013 kot opravilo (testni primer) in ne kot
datoteko izvorne kode. [17]
• Kodirano testiranje UI zagotavlja avtomatsko interakcijo z uporabniškim
vmesnikom aplikacije, ki preveri nekatere pričakovane rezultate in datoteke, če se v
njih nahajajo napake. Proces tega tipa je avtomatski in ga lahko izvajamo zelo
pogostokrat brez človeške interakcije, vendar ti testi postanejo finančno
nesprejemljivi, ko pride do vzdrževanja. Ročno testiranje je ceneje od UI avtomatskih
testov. [17]
• Testiranje enote so testi nizkega nivoja, ki preverjajo kodo programske opreme po
pričakovanjih razvijalcev. Test enote je koda, ki testira drugo kodo. [17]
• Spletno testiranje preverja funkcionalnost in zmogljivost spletne aplikacije. Primer
testa zmogljivosti je registracija uporabnika na spletni strani in je eden izmed testnih
garnitur, ki preverjajo delovanje spletne strani po naših pričakovanjih. [17]
• Zmogljivostno testiranje preverja odziv aplikacije. Sistem obremenimo z različnimi
testi, kjer si Visual Studio zabeleži podatke odziva sistema in jih pretvori v poročilo.
Zmogljivostni testi izhajajo iz nabora spletnih testov ter testov enot, saj lahko
zmogljivost namizne aplikacije testiramo tudi z njimi. [17]
46
• Generično testiranje omogoča sklic nadomestnega zunanjega testnega sistema. Za
primer imamo testno garnituro, ki vpliva na nek testni paket nekje zunaj. Rezultati
testov se lahko avtomatsko razčlenijo, iz njih pa se določi uspeh. [17]
• Sekvenčno testiranje je zaboj obstoječih testnih tipov, ki so urejeni po določenem
vrstnem redu, in omogoča večkratno izvedbo testov. [17]
• Raziskovalno testiranje je odprt pristop testiranja, ki ne uporablja nobenega procesa
ali testnega primera, ampak uporablja samo uporabniške zgodbe. Cilj testiranja je
preveriti funkcije aplikacije, poiskati napake, pretrgane povezave in morebitne
izboljšave sistema. Ta tip testiranja se uporablja že vrsto let, saj ni bilo nobenega
drugega orodja za testiranje, iskanje in odpravo napak. [10]
• Microsoft Test Manager ima nove funkcionalnosti, ki podpirajo raziskovalno
testiranje, zajemanje posnetkov zaslona, testne postopke, testne primere, komentarje,
priloge itd. [10]
Pri testiranju enega dela aplikacije lahko uporabimo več različnih tipov testiranja. Za
preverjanje funkcionalnosti spletne aplikacije lahko uporabimo kodiran UI test in
zmogljivostni test. Ko bomo postali bolj seznanjeni s kodirnimi UI testi v primerjavi z
zmogljivostnimi testi, bomo ugotovili, da je prvi boljše zasnovan za validacijo funkcionalnosti
in urejenost uporabniškega vmesnika, medtem ko je drugi boljši pri preverjanju zmogljivosti
in razširljivosti. Kdaj in kako izbrati pravilen testni tip bomo podrobneje predstavili v
naslednjih poglavjih. [17]
47
Tabela 3 prikazuje lastnosti, ki jih podpirajo različne izdaje orodja Visual Studio 2013.
Tabela 3: Naštete lastnosti po izdajah orodja Visual Studio 2013 [13]
Tipi testiranja Visual
Studio
Ultimate z
MSDN
Visual
Studio
Premium z
MSDN
Visual
Studio Test
professional
z MSDN
Visual
Studio
professional
z MSDN
Visual
Studio
professional
Testiranje
enote
Da Da Da Da
Kodirano
testiranje UI
Da Da
Testiranje
pokritosti
kode
Da Da
Ročno
testiranje
Da Da Da
Raziskovalno
testiranje
Da Da Da
Upravljanje
testnih
primerov
Da Da Da
Spletno
testiranje
Da
Zmogljivostni
test
Da
Testiranje na
virtualnih
sistemih
Da Da Da
Visual Studio Premium vsebuje vse funkcionalnosti orodji Visual Studio Professional in
Visual Studio Ultimate, ki vsebuje vse funkcionalnosti orodja Visual Studio Premium. Visual
Studio Premium in Ultimate vključujeta funkcionalnosti, ki jih ima Visual Studio Test
Professional. [20]
48
5.1 Avtomatsko testiranje
Skupna zahteva avtomatskih testov je, da se lahko večkrat ponovijo z različnimi parametri.
[12] Uporabijo se tudi pri testiranju nefunkcionalnih zahtev.
Enemu avtomatskemu testu lahko dodamo spletno in zmogljivostno testno sejo, ki validira
smiselnost in uporabnost sistema. Visual Studio 2013 podpira številne testne tipe naštete v
spodnji tabeli (Tabela 4), vse od osnovnih testov enot do avtomatiziranih UI testov ter
zmogljivostnih testov. Slika 10 prikazuje konsistentno dodajanje testnega tipa v orodju Visual
Studio.
Slika 10: Dodajanje testnega tipa
Tabela 4: Podprti testni tipi v Visual Studio 2013 [12]
Tipi testov Namen
Osnovni test enote Test enote brez predloge.
Test enote Ima predlogo in dodatne testne atribute.
Kodiran UI test Kodiran test uporabniškega vmesnika.
Kodiran UI Map Kodirane UI teste razdeli na manjše dele.
Generični test Zavije obstoječo funkcijo v MS test.
Sekvenčni test Krmili izvajanje številnih različnih testnih tipov.
Spletno testiranje Snema testiranje spletne strani s pomočjo brskalnika Internet
Explorer.
Zmogljivostni test S pomočjo čarovnika generiramo konfiguracijo
zmogljivostnega testa.
Vsi testni tipi so shranjeni v orodju Visual Studio kot izvorna koda, razen ročnega testiranja
(ki je predstavljen kot opravilo v orodju TFS). Testi v orodju Visual Studio so shranjeni v
49
predelu, kjer se nadzorujejo viri, podobno kot v orodju TFS, le da so testi v obliki zahtev.
Sčasoma vsebina projekta začne naraščati s številnimi testnimi garniturami, ki pripomorejo k
testiranju funkcionalnosti programske opreme. Testi so ključnega pomena za uspeh projekta,
zato ni nič neobičajnega za projekte, ki vsebujejo na desetine, včasih celo na stotine, testov.
[22]
5.1.1 Spletno testiranje
Spletno testiranje preverja odziv spletne aplikacije, tako da naenkrat izvede serijo
HTTP/HTTPS zahtev zoper spletne aplikacije ter analizira njena pričakovana odzivanja. [22]
Bistvo spletnega testiranje je prikazovanje pravilnih rezultatov spletne strani v pričakovanem
odzivnem času. Problem je potrebno ugotoviti in odpraviti v najkrajšem možnem času, da se
ta ne zgodi v dejanskem produkcijskem okolju. Zmogljivost strojne opreme preverimo s
pošiljanjem zahtev v določenem času ter na podlagi ugotovitev ugotovimo, ali potrebujemo
dodatno strojno opremo, ki bo brezhibno upravljala s prometom in se odzivala na številne
uporabniške zahteve ob pravem času. [13]
Predstavili bomo nekaj glavnih napotkov testiranja, ki izboljšajo zmogljivost in
razpoložljivost spletne aplikacije [13]:
• Validacija in verifikacija preverjata pričakovane vhodne podatke, vnesene po
zahtevah. Npr.: imamo vnosno polje, ki zahteva datum. Sistem mora preveriti pravilen
vnos datuma in ne sme spustiti uporabnika na naslednjo stran, dokler ne vnese
pravilne vrednosti.
• Testiranje uporabnosti spletne strani je metoda testiranja v produkcijskem ali testnem
okolju, kjer se simulira praktična uporabnost aplikacije za uporabnika. Preverijo se
povezave, vsebine strani, izbira menija in pogovorna okna s sporočili.
• S testiranjem varnosti preverimo odziv aplikacije na podlagi različnih končnih
uporabnikov, ki imajo različne varnostne nastavitve lokalnega sistema ali strežnika,
priključenega v omrežje. Primer je pisanje/branje podatkov log datoteke na omrežnem
centru.
• Zmogljivostni test preveri odziv spletne strani glede na pričakovanja, ki temeljijo na
okolju. To vključuje stresno in zmogljivostno testiranje aplikacije z upoštevanjem
številnih uporabniških scenarijev in obsega podatkov.
50
• Kompatibilnost spletne strani preverimo z več različnimi brskalniki glede na zahtevo
uporabnikov. Predstavitev spletne strani je odvisna od uporabljenih komponent in
podpore različnih brskalnikov.
• Testiranje spletne strani na različnih omrežjih je potrebno zaradi različnih lokacij
uporabnika. Učinkovitost in dostopnost aplikacije je neposredno vezana na omrežje, ki
zagotovi spletno stran uporabniku. Npr.: lahko testiramo z lokalnim intranetom ali z
intranetom s počasno hitrostjo omrežja.
Spletno testiranje ima še druge tipe testiranja, kot je uporaba različnih operacijskih sistemov z
uporabo različnih podatkovnih baz ali namestitvijo več različic operacijskega sistema.
Vsi testni tipi s številnimi dodatki so podprti s strani orodja Visual Studio. Dinamične spletne
strani lahko izdelamo z .NET jezikom, ki ga podpira Visual Studio z uporabo ASP.NET
projekta in predloge. Pri izdelavi spletne strani uporabimo komponente, knjižnice in po meri
izdelane storitve, da postane bolj dinamična in funkcionalna. Skriptni jeziki in druge
tehnologije, kot so JavaScript, Silverlight in Flash se uporabljajo za validacijo in boljšo
predstavitev spletne strani na klientovem računalniku. Končano spletno aplikacijo naložimo in
preverimo skladnost funkcionalnosti z zahtevami. Bistvo vsega tega je, da Microsoft Visual
Studio ponuja orodja za testiranje spletnih aplikacij na različne načine. Eden od načinov je
uporaba uporabniškega vmesnika, ki snema in doda spletni strani parametre in pravila za
vrednotenje, da poveča njeno dinamičnost. Drugi način posname zahtevo ter generira kodiran
spletni test na podlagi posnetega spletnega testa, ki ga prilagodi z uporabo generirane kode.
[13]
Testi zmogljivosti so shranjeni v XML datoteki, ki ima pripono ».webtest«. V času izvajanja
testa zmogljivosti Visual Studio generira kodo, ki se zapiše v XML datoteko. Kodirani spletni
testi imajo več funkcij testiranja, kot pa standardni spletni testi in so omejeni le na našo
sposobnost kodiranja. Jezik za generiranje kode je določen v testnem projektu, kjer je
shranjena vsebina spletnih testov. [22]
Za kodiran spletni test obstaja razred v .NET, ki generira zaporedje spletnih zahtev v vrstnem
redu snemanja. Razred je lahko napisan v jeziku C# ali Visual Basic. [13]
Na prvi pogled so morda testi zmogljivosti podobni kodirnim UI testom, vendar se nekatere
zmogljivosti prekrivajo (kot so snemanje, predvajanje in validacija na odziv). Ta dva tipa sta
oblikovana za doseganje različnih ciljev in ju je potrebno ustrezno uporabljati. Spletni testi bi
se morali uporabljati striktno za testiranje zmogljivosti in kot osnova za generiranje testa
zmogljivosti. UI testi zagotovijo pravilen odziv uporabniškega vmesnika in njegove
51
postavitve, vendar jih ne moremo nadomestiti s spletnimi testi. Nasprotno lahko spletne teste
kodiramo, tako da preverijo odzive sistema, vendar so kodirani UI testi veliko bolj primerni
za to nalogo. [22]
5.1.2 Zmogljivostni test
Zmogljivostni test testni ekipi pripomore pri razumevanju delovanja aplikacije pod različnimi
pogoji. Različni pogoji in parametri se uporabljajo za testiranje zmogljivosti aplikacije.
Simulira lahko kombinacije številnih uporabnikov, omrežne pasovne širine, spletne brskalnike
in različne konfiguracije. Spletne aplikacije vedno testiramo z naborom različnih uporabnikov
in brskalnikov, ki simulirajo pošiljanje številnih zahtev na strežnik hkrati. [49]
Slika 11 prikazuje primer scenarija z več uporabniki, ki dostopajo do spletne strani z različnih
omrežij, brskalnikov in lokacij.
Slika 11: Prikaz scenarija z več uporabniki, ki dostopajo do spletne strani z uporabo različnih omrežij, brskalnikov in lokacij [13]
Testi zmogljivosti se lahko uporabijo za preverjanje dostopnosti aplikacije do podatkov,
vendar niso omejeni samo na spletne aplikacije, ampak tudi na druge (namizne aplikacije
itd.). Zmogljivostni test identificira zmogljivost aplikacije pod različnimi obremenitvami, pri
manjših obremenitvah, pri večjih obremenitvah in pri obremenitvah z enako stopnjo bremena,
vendar trajajo različno dolgo.
Zmogljivostni testi uporabljajo kontrolorje (Controllers) in številne zastopnike (Agents), ki
kot skupina predstavlja ogrodje. Zastopniki zastopajo računalnike na različnih lokacijah.
52
Zastopnike nadzira centralni računalnik, ki se imenuje kontrolor. Visual Studio Load Agent v
zastopniških računalnikih ustvari dejansko breme za testiranje, kot je simulacija več prijav in
dostopov do spletnih strani. V tem primeru je naloga zastopnika zbiranje in evidentiranje
podatkov iz testa, medtem ko kontrolor nadzoruje zastopnike. Spletne strani pogosto obiskuje
in dostopa do njih zelo veliko število uporabnikov hkrati iz različnih lokacij, zato je nujno
potrebno simulirati dejansko stanje in delovanje aplikacije pred namestitvijo na glavni
strežnik. [13]
Zmogljivostno testiranje s stresnim testom številnih uporabnikov preveri aplikacijo. Pri
simulaciji lahko nastavimo stopnjo obremenitve in šele nato izvedemo test. Generiramo serijo
zahtev zoper ciljne aplikacije, kjer Visual Studio nadzira sistem, da lahko določi delovanje
aplikacije pod pritiskom testiranja. Zmogljivostno testiranje se najpogosteje uporablja pri
spletnem testiranju. Skozi vsebino smo spoznali, da je zmogljivostno testiranje seznam
kazalcev, ki kažejo na druge teste z različnimi tipi, z izjemo ročnega testiranja. [22]
5.1.2.1 Cloud-based load testiranje
Zmogljivostni test oblaka je na voljo kot del Visual Studia Online in je novost v Visual Studio
2013.
Z virtualnimi napravami generiramo zmogljivostne teste, kjer številni uporabniki dostopajo do
spletne strani ob enakem času. Pri testiranju zmogljivosti spletne strani ni potrebno
vzpostaviti lastnih računalnikov, ampak mora biti spletna stran javno dostopna na internetu za
izvedbo testa zmogljivosti z orodjem Visual Studio Online. [22]
5.1.3 Kodirano testiranje UI
Pri testiranju kode uporabniškega vmesnika se uporabljajo testi enote, vendar to ni dovršen
test nad celotnim uporabniškem vmesniku, saj mora test preveriti vse gumbe, sprejemljivost
okna ter njegovo vsebino. CUITs (Coded UI tests) so avtomatski testi, ki preverjajo
uporabniški vmesnik. [50]
UI teste lahko izdelamo na hiter in enostaven način. Namenjeni so samo za dva namena:
testiranje lažne poslovne logike uporabniškega vmesnika in testiranje sistema celotne
aplikacije. Prednost UI testov je hitra in enostavna izdelava, kar pomeni, da je njihovo
področje malo bolj razširjeno od drugih. Predstavili bomo na kakšen način se pogosto
uporablja kodiran UI test. Recimo, da imamo manjšo namizno aplikacijo, ki dostopa do baze
podatkov. Poslovno logiko neposredno vodi uporabniški vmesnik, zato testerji pogosto na
zelo hiter način izdelajo test za poslovno logiko, tako da posnamejo kodirane UI teste za
53
glavne funkcionalnosti aplikacije, namesto da bi preverili podatkovno bazo s testnimi podatki
in viri. Večina testerjev meni, da je s tem načinom čas bolje uporabljen tako, kot pa pisanje
kode za testiranje poslovne logike. Sčasoma je svetovalce metodologije način testiranja
poslovne logike s pritiskom in klikom na gumbe uporabniškega vmesnika začelo vznemirjati,
saj s tem mešamo uporabniški vmesnik in poslovno logiko skupaj in zanemarjamo vse dobre
lastnosti inženiringa programske opreme, ki ju ločujemo drug od drugega. S spreminjanjem
uporabniškega vmesnika bi izgubili uporabnost obstoječih testov enot za poslovno logiko.
Realistično gledano UI teste izdelamo takrat, ko je aplikacija končana, vendar ta način ne
omogoča progresivnega testiranja, ki glede na ideje in razprave izboljša in bolje definira
namen sistema, preden ga začnemo kodirati. Iz tega razloga se kodirani UI testi ne uporabljajo
za testiranje poslovne logike. [21]
Avtomatski test je posnet iz korakov ročnega testiranja, ki lahko posnetek ponovi, ne da bi
ročno ponovili celoten test. Drugi način je, da napišemo skripte, ki uporabljajo programski
jezik za avtomatizacijo nivoja storitve. Največji izziv je bila avtomatizacija uporabniškega
vmesnika, vendar je z današnjimi orodji to enostavno opraviti, saj nekatera zagotavljajo
snemanje akcij uporabnikov, iz katerih izdelajo skripte. Enostavnejša izdelava kodiranega UI
testa je v orodju Visual Studiu 2013, ki obstoječe ročno izdelane teste, testne primere in
posnete akcije generira v avtomatske teste in kodo, ki jo lahko upravljamo (C# ali VB.NET).
Kodiran UI test je mogoče zagnati neposredno iz orodja Visual Studio ali orodja Microsoft
Test Manager, ki je povezan z zahtevami, ki določijo število avtomatskih testov ter zbirajo
testne rezultate. [13]
5.1.3.1 Kodiran UI test za Windows Store aplikacijo
Windows Store aplikacija je nov tip aplikacije, ki je podprta na Windows 8 platformi in jo je
zelo enostavno namestiti in odstraniti. Kot privzeto so prikazane v enem oknu, ki zapolni
celoten zaslon, in avtomatsko podpirajo vhodne naprave, kot so: dotik na zaslon, risalno
tablico, miško, tipkovnico. Namesto statičnih ikon uporabljajo žive plošče, ki prikazujejo
obvestila. Windows Store aplikacije lahko razvijamo v različnih jezikih, kot so C# in Visual
Basic z XAML, C++ z XAML ali DirectX in JavaScript s HTML/CSS. [23]
Microsoft ponuja dve brezplačni orodji namenjeni za skupno delo, ki pomagata razviti,
preizkusiti in namestiti Windows Store aplikacije. To sta: Microsoft Visual Studio Express
2013 za Windows 8.1 in Blend za Visual Studio. (Ti orodji zahtevata operacijski sistem
Windows 8.1.). [23]
54
5.1.4 Sekvenčno testiranje
Do sedaj smo na kratko omenili test enote ter podrobno pojasnili vloge in uporabnost ročnega
testiranja, spletnega testiranja, kodiranega UI testiranja in zmogljivostnega testiranja. Visual
Studio omogoča dodaten tip testiranja, ki grupira in razvršča testne tipe v določen vrstni red;
takšen način imenujemo sekvenčno testiranje. Prednost sekvenčnega testiranja je, da nam
omogoči izvedbo testov v vrstnem redu glede na njihovo odvisnost. Za primer odvisnosti
imamo spletni test, ki je odvisen od rezultatov testa enote, torej mora biti test enote izveden
pred izvršitvijo spletnega testa. [13]
5.1.5 Generično testiranje
Generični testi so tako kot vsi drugi testi, vendar pri izvedbi uporabljajo zunanje orodje ali
program, ki ga lahko zaženemo preko ukazne vrstice. [51]
Generični testi integrirajo zunanje teste v Visual Studio. To so lahko aplikacije, ki uporabljajo
zunanje komponente ali storitve in jih je potrebno testirati kot del celotnega sistema.
Podrobnosti in notranja logika zunanje komponente je neznana in ni izpostavljena. Generični
testi v Visual Studio delujejo kot ovoji za testiranje zunanjih komponent. Ko so oviti,
izvedemo teste kot vse ostale s pomočjo orodja Visual Studio IDE. [13]
Zunanje komponente morajo upoštevati naslednje pogoje, da jih lahko razvrstimo na podlagi
generičnega testa v Visual Studio [51]:
• Izvršimo jih z ukazne vrstice.
• Vedno ko je komponenta izvršena iz ukazne vrstice, mora vrniti logično vrednost
(True ali False).
• Vrniti mora podrobne rezultate testov komponente.
5.1.6 Testiranje enote
Test enote je sestavljen iz kode in za razliko od drugih testnih tipov preverja sistem na nižjem
in granularnem nivoju. Testi so hitro postali standardna praksa mnogih organizacij. Izdelujejo
in uporabljajo jih programerji v vseh izdajah orodja Visual Studio z vsemi funkcijami
testiranja enot, ki so v celoti vključene v IDE, in drugimi funkcijami (kot so poročanje in
nadzor izvorne kode). Razvijalcem se ni potrebno več zanašati na zunanje storitve (kot je
NUnit) za izvedbo testa enote, vendar so še vedno na voljo in jih lahko integrirajo v Visual
Studio le z uporabo testnega adapterja. Testiranje enote je primer testiranja po beli škatli, kjer
se poznavanje notranje strukture uporabi za opredelitev učinkovitega načina testiranja
55
sistema. Dopolnjuje pristop testiranja po črni škatli, kjer poudarek ni na podrobnosti
implementacije, temveč na ujemanju funkcionalnosti s specifikacijami. Najbolj učinkovito
testiranje aplikacije je uporaba obeh pristopov testiranja. [17]
5.1.6.1 Testiranje enote z orodjem Visual Studio
Visual Studio omogoča izdelavo in avtomatizacijo testov enot, ne glede na tip metode
(privatna ali javna). Test enote je razred, ki je podoben drugim razredom in metodam, vendar
ima ta razred dodatne atribute, ki predstavljajo testne razrede in metode. Razrede in metode
lahko izdelamo ročno ali z generiranjem osnovne kode pod opcijo Create Unit Tests in jo
potem prilagodimo našim potrebam. Generirana koda testov enot vsebuje posebne lastnosti, ki
so dodeljene znotraj razreda in metod. Testni razred je označen z atributom TestClass() in
vsaka testna metoda s TestMethod(). Poleg teh dveh atributov obstajajo še številni, ki se
uporabljajo za testiranje enot. Generirani testni razredi in metode uporabljajo Assert metode
za preverjanje pričakovane vrednosti z dejansko vrednostjo. Vsi testni razredi in metode so
definirani znotraj imenskega prostora Microsoft.VisualStudio.TestTools.UnitTesting, zato
mora vsak izdelan test enote vsebovati ta imenski prostor. Eden izmed glavnih razredov je
TestContext, ki zagotavlja informacije za teste enot. [13] Spodaj naveden primer prikazuje
testni razred z imenom Class1Test in metodo z imenom TestMethod1, ki vsebuje Assert
metodo AreEqual. Na takšen način Visual Studio generira osnovno kodo za testiranje enote, ki
si jo lahko sami prilagodimo.
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
{
[TestClass()] //Testni razred.
public class Class1Test
{
[TestMethod()] //Testna metoda.
public void TestMethod1()
{
Assert.AreEqual(pricakovanaVrednost, dejanskaVrednost); //Atribut
//Assert, ki preverja pričakovano vrednost z dejansko
}
}}
56
5.1.6.2 Pisanje učinkovitih testov
Testiranje enote je samo po sebi kodiranje, pri katerem smo neomejeni pri številnih pristopih
razvijanja testov, vendar moramo upoštevati nekaj splošnih smernic [17]:
• Vedno ločimo skupino testov enot od kode, ki jo testiramo. S tem ločimo teste enot od
inštalacijskega paketa aplikacije, ki nimajo nobenega pomena v produkcijskem okolju.
• Izogibajmo se spreminjanju kode v prid izdelave enostavnih testov enot. Pogosta
napaka je neposreden dostop testov do članov razreda (class members); s tem
zmanjšamo enkapsulacijo in širimo zunanjo interakcijo. To naredi kodo, ki jo bomo
morali v bližnji prihodnosti redno vzdrževati, enostavnejšo za testiranje,.
• Vsak test bi moral preverjati manjši košček funkcionalnosti. Slaba praksa je pisanje
dolgih zaporednih testov enot. Manjše teste je lažje vzdrževati, saj lahko preverimo,
katera funkcionalnost preverja test, in hitro identificiramo ter odpravimo napako.
• Vsi testi bi morali biti samostojni in izolirani. Izogibamo se izdelavi testov, ki se
navezujejo na drugi test. Testi morajo biti izvršljivi v katerikoli kombinaciji in v
kateremkoli vrstnem redu. Z izvajanjem testov preverimo, ali smo teste postavili v
pravilen vrstni red. V primeru nepravilnega izvajanja mu spremenimo vrstni red.
• Testiramo pričakovano obnašanje (običajni delovni postopek) in stanja napak (izjeme
in neveljavne operacije). Za eno metodo je dobro imeti več testov enote, vendar
razvijalci vedno poiščejo lažji način za klicanje objektov, ki pa ni pravilen. Pri
testiranju moramo vedno pričakovati nepričakovano, kodirajmo defenzivno in
zagotovimo, da v različnih razmerah reagira ustrezno.
Ključen pomen učinkovitega testiranja enote je prihraniti čas pri razvoju in vzdrževanju.
Sčasoma spoznamo, kako pomembno je pridobiti čas.
5.1.6.3 Testiranje enote za Windows Store aplikacije
Visual Studio 2013 nam ponuja izdelavo testov enot za Windows Store aplikacije, ki so del
Team Build. Ustvarimo lahko teste enote za Windows Store aplikacije in te teste poženemo z
orodjem Visual Studio in kot del Team Build. [43]
57
5.2 Ročno testiranje
Ročno testiranje v razvojni industriji programske opreme v primerjavi s specializiranimi ali
avtomatskimi testi še vedno predstavlja približno 70 odstotkov testiranja. Namen izdelave
orodja za ročno testiranje je bil postavljen v ozadje, vse dokler ga ni izdelal Visual Studio
2010 in ga namenil za splošne testerje. Splošni tester je oseba, ki ročno testira programsko
opremo in ima neposreden stik z njo. Programsko opremo testiramo kot uporabniki in si
beležimo napake, ko naletimo na luknjo v funkcionalnosti ali na nepričakovana odzivanja.
Microsoft je še naprej izboljševal orodje za ročno testiranje in predstavil nove funkcionalnosti
v Visual Studio 2013. [17]
Slika 12 prikazuje preprosto shemo ročnega testiranja:
Slika 12: Shema ročnega testiranja [12]
Proces ročnega testiranja se prične z načrtovanjem, kjer si pomagamo z zahtevami. V načrtu
je potrebno določiti zahtevnost testiranja za preverjanje skladnosti zahtev z implementacijo.
Nato izdelamo testne primere, vzpostavimo testno okolje in testne konfiguracije. Z dobrimi
testnimi sredstvi bomo izvajali različne vrste testov, kot so raziskovalni testi, skriptni testi in
seveda avtomatizirani testi. Ob odkritju napake zapišemo in izdamo popravek ter spremljamo
njen odziv. Pri preverjanju popravka napake preprosto zaženemo testni primer, ki je odkril
napako. Ta cikel nekajkrat ponovimo in skozi čas poiščemo kandidate za regresijsko
testiranje. Potem se lahko odločimo za avtomatizacijo teh testov, tako bomo hitreje izvajali
testne cikle v prihodnje. Proces ročnega testiranja nas spominja na model slapa, ki je
zaporeden proces testiranja, vendar lahko v njem uporabimo iterativne in inkrementalne
postopke dela. V agilnem projektu vsako iteracijo načrtujemo, oblikujemo in testiramo.
Dejavnosti, kot sta integracijsko in avtomatsko testiranje, pogosto potrebujeta več časa za
izvedbo testiranja. Največ časa porabimo pri prilagajanju in planiranju teh dejavnikov, vendar
morajo biti predpogoji določeni. [12]
58
5.2.1 Microsoft Test Manager
Microsoft Test Manager je orodje, specifično namenjeno za splošne testne skupine. Omogoča
nam izdelavo in manipulacijo testnih načrtov, testnih primerov, izvedbo ročnih testov in
datoteke z napakami. [17]
Na visoki ravni Microsoft Test Manager obravnava [52]:
• načrtovanje testiranja
• oblikovanje testiranja
• izvedba in analiza testiranja
• poročanje o napaki z zbiranjem testnih rezultatov
• spremljanje opravil (prav tako napake)
• upravljanje testnega okolja
To je samostojen izdelek in ni del orodja Visual Studio 2013 Premium, ampak je del orodja
Visual Studio Profesional in Visual Studio Ultimate. MTM je funkcijsko testno orodje, ki
omogoča izdelavo in izvedbo ročnih testov. Je neodvisen od orodja Visual Studio, vendar
zahteva povezavo z orodjem Team Foundation Server in s skupino projekta. [13]
V orodju TFS so shranjeni testni načrti, testni primeri, poročila in rezultati napak izvedenih
testov s pomočjo orodja MTM. MTM spodbuja uporabo Team Foundation Build za gradnjo
programske opreme, čeprav lahko to storimo tudi v njem. [17]
5.2.1.1 Načrtovanje testa
V orodju MTM testni načrt vsebuje podrobnosti o testnem napredku in nizu testov (imenovani
testne garniture).
Priporočen je čim manjši obseg testnega načrta, najbolje je en načrt na cikel. Manjši načrti so
skozi celoten proces razumljivi in vodljivi, to lahko razberemo iz njihovega stanja. Zelo težko
je razumeti in razbrati napredek testnega načrta, če pokriva celoten projekt. Podatke manjših
testnih načrtov združimo v poročila projekta s pomočjo TFS poročil. [12]
Garniture zberejo teste, ki preverjajo funkcionalnosti v specifičnem testnem načrtu. Na voljo
so nam trije tipi testnih garnitur [13]:
• Statična testna garnitura (Static): statična garnitura je mapa, ki vsebuje testne primere
ali garniture.
• Garnitura na osnovi poizvedbe (Query-based): pridobi seznam testnih primerov glede
na rezultat definirane poizvedbe, ki jih nato dodamo v testno garnituro. Poizvedbo
59
lahko spreminjamo po želji, vendar se ob spremembi rezultata poizvedbe spremenijo
tudi testni primeri, ki so bili dodani v testno garnituro.
• Garnitura na podlagi zahteve (Requirements-based): garnitura vsebuje testne
primere, ki se navezujejo na določeno zahtevo.
Testni primer v orodju MTM predstavlja testna navodila za testerje. Implementiran je kot TFS
opravilo, ki ga lahko prilagodimo, tako da poda testerju informacije za dokončanje testiranja.
Testni primer lahko spremljamo in spreminjamo v vsakem TFS odjemalcu, medtem ko v njem
ne moremo spremljati testnih korakov, lahko jih samo v orodju MTM. [12]
Dejavnosti v MTM testerji opazujejo na armaturni plošči, kjer lahko preko nje opravimo
večino testnih opravil, izvajamo in analiziramo izvedbo testov, izvajamo in opazujemo seje
raziskovalnega testiranja ter spremljamo in preverjamo napake. [17]
5.2.1.2 Integracija gradnikov
Problemi se pojavijo, če ne vemo, katero verzijo sistema smo testirali in v kateri del kode smo
integrirali napako.
Rešitev napake je uporaba orodja TFS Build, s katerim ugotovimo, v katerem delu gradnika
testnega načrta se nahja koda, ki jo testiramo. Prav tako lahko v gradniku, ki je v postopku
preverjanja, avtomatsko odkrijemo in označimo napake. Če razvijalec odkrije spremembe
kode, ki se navezuje na določeno opravilo, lahko orodje TFS Build glede na konfiguracijo
opravilo označi kot integracijo gradnika. S povezovanjem testov in gradnikov dobimo veliko
dodatnih možnosti za testiranje. [12]
Assign Build v MTM je uporaben pri iskanju sprememb gradnika, ki smo ga pred časom
uporabljali, saj ugotovi, kateremu testnemu načrtu pripada. Svetuje nam, kdaj moramo
vpeljati nov gradnik ali počakati na več dokončanih funkcij in jih potem vpeljati v produkcijo.
[12]
Testing Center se uporablja za izdelavo testnih načrtov, testnih garnitur in testnih primerov
za določene testne načrte, povezane z zahtevami. Funkcije, ki jih podpira Testing Center so:
izvajanje ročnih testov, zajemanje testnih rezultatov in napak, spremljanje testnih rezultatov z
uporabo obstoječih in po meri izdelanih poizvedb, organizacije in skupnih ukrepov testnih
primerov ter vzdrževanje testne konfiguracije. [13]
Lab Center se uporablja za vzpostavitev in izdelavo laboratorijskih okolij za izvedbo
testiranja. Okolje izdelamo z uporabo fizičnih in virtualnih strojev ter naborom konfiguracij.
[13] Laboratorijska okolja uporabljamo za testiranje spletnih aplikacij, ki se izvajajo na
60
strežnikih. Komponente strežnika zaženemo na laboratorijskih napravah, medtem ko
brskalnik ali aplikacijo na lokalnem računalniku. Omogočijo nam zbiranje diagnostičnih
podatkov strežnika med izvajanjem testov z odjemalčevega računalnika. Če na primer
prijavimo napako v času testiranja, se bo prijava zapisala v poročilo napak in s tem
poenostavila diagnosticiranje. Okolje zagotavlja priročen način dodelitve računalnikov
testerjem. [44]
5.2.2 Team Web Access
Načrtovanje in spremljanje napredka razvoja programske opreme je preprosto, če
uporabljamo TWA. TWA nas poveže z določeno skupino projekta, opredeljeno v Visual
Studio TFS ali Visual Studio Online. Z njim upravljamo izvorno kodo, opravila, gradnike in
testna prizadevanja. [25]
Microsoft je v Visual Studio 2012 TWA uvedel upravljanje testnih primerov in možnost
izvedbe testov. V Visual Studiu 2013 TWA so bile dodane nove funkcije in zmožnosti za
izdelavo in urejanje testnih načrtov. Zaradi novosti ni potrebno uporabiti MTM za pregled in
izdelavo testnih načrtov, testnih garnitur in skupnih korakov izvedbe. Celotno upravljanje
testnih primerov je mogoče storiti iz TWA. [26]
TWA se poveže z Visual Studio TFS za upravljanje izvorne kode, opravil, gradnikov in
testnega prizadevanja. [26] Vsebina in opravila znotraj TWA so odvisna od pravic vsakega
uporabnika oz. uporabniške skupine.
TWA je idealen za uporabnike, saj jim ga ni potrebno namestiti na svoje računalnike.
Funkcionalnosti, ki jih ponuja TWA so [17]:
• planiranje seznam zahtev in iteracij,
• seznam opravil,
• ustvarjanje in urejanje opravil in njenih poizvedb,
• upravljanje področij in iteracij,
• administracija pravil in članstva ekip,
• pregled nad verzijami,
• skladiščenje in upravljanje definicij gradnikov.
Nove funkcije in opravila s prejšnjo verzijo [27]:
• izdelava testnega načrta,
• upravljanje testnih garnitur,
• izdelava testnih primerov vključno s skupnimi koraki in parametri za podporo,
61
• množično urejanje in vnašanje testnih primerov,
• prenos testnih primerov iz Excela,
• izvedba testov,
• urejanje testnih primerov med izvajanjem testov,
• testiranje Windows Store aplikacij na oddaljeni napravi z ročnimi testi.
5.2.3 Razlika med Microsoft Test Manager in Team Web Access
Microsoft Test Manager ima več funkcij kot Team Web Access, zato lahko za manj
kompleksne projekte uporabimo TWA.
Team Web Access omogoča izdelavo testnih primerov, ki jih razporedi v testne načrte in
garniture. Pri testiranju nam TWA prikaže testne korake in omogoča označbo neuspelega
koraka.
MTM ima več funkcij, kot so snemanje akcij, izdelava zaslonskih slik, dnevniki in drugi
diagnostični podatki. Z njim lahko upravljajo laboratorijska okolja. Vse te dodatne funkcije
nam omogoči Microsoft Test Runner.
Pri izbiri orodja se nam ni treba odločiti vnaprej, saj jih je na pretek in lahko še vedno
uporabimo druga orodja za urejanje testnih načrtov in izvajanje testov.
5.2.4 Test Runner
Test Runner omogoča snemanje dejanj, ki jih uporabimo za hitri pregled skozi testne korake v
prihodnjem testiranju. Ta način testiranja imenujemo hitro ročno testiranje, saj predvajanje
akcij pospeši ročno testiranje in s tem dokaže, da lahko na ta način hitreje izvajamo in
predvajamo teste, kot jih lahko izvaja človek. Posnetki olajšajo delo splošnim testerjem in jim
popestrijo delo s preučevanjem aplikacije, namesto opravljanja dolgočasnega dela, kot je
večkratno klikanje in vnašanje testnih podatkov v vnosna polja aplikacije. [17]
MTM v začetku testiranja prikaže Test Runner, ki je drugi del orodja. Pri izdelavi testa se
moramo odločiti, ali bomo akcijo snemali. Snemanje akcij posname vse interakcije
uporabnika z aplikacijo ter na podlagi teh Test Runner generira skripto za samodejno
testiranje v orodju MTM ali orodju Visual Studio. [12]
Funkcije, ki jih omogoča Microsoft Test Runner so [29]:
• Pri opisu napak so samodejno vsebovane naslednje funkcije:
o Slike zaslona akcij.
62
o Posnetek dejanj, ki smo jih izvajali: v posnetku je zajeto vse in ne samo testni
koraki, ki smo jih opravili.
o Informacije sistema, kot so verzija operacijskega sistema in id naprave.
• Ponovi naša storjena dejanja, to nam omogoči hitro in učinkovito izvedbo istega testa.
• Med testiranjem zbira dodatne diagnostične podatke.
5.2.5 Testiranje Windows Store aplikacij
Obstajajo dve možnosti testiranja Windows Store aplikacij, ki se izvajajo na telefonu,
tabličnem računalniku ali drugi napravi [45]:
• S TWA načrtujemo in izvajamo testiranje naprave, ki je povezana z brskalnikom ali
računalnikom. Pri testiranju z TWA Test Runner nima interakcije s programsko
opremo, ampak prevzame vlogo kontrolorja nad seznamom testnih korakov, zato ga ni
potrebno izvajati na napravi, ki jo testiramo. Ta možnost ne zahteva posebnih priprav
na napravi, razen namestitev programske opreme.
• MTM ima možnost do snemanja zaslonskih slik in zbiranja diagnostičnih podatkov
naprave.
5.2.6 Raziskovalno testiranje
S formalnim vodenjem testnih primerov testna ekipa začne s seznamom zahtev, ki jih je
izdelala razvojna ekipa in z izdelavo serij testnih primerov, s katerimi preverijo skladnost
zahtev z implementacijo.
Raziskovalno testiranje je svobodnejša oblika za načrtovanje in izvedbo testiranja. Testerji pri
tem tipu testiranja ne sledijo scenarijem, ampak pri testiranju uporabijo uporabniške zgodbe.
Cilj tega tipa je, da testerji osvojijo delovanje programske opreme in se osredotočijo na
testiranje in ne na dokumentiranje testnega procesa. Poudarek je na odkrivanju napak, ki jih
mreža avtomatskih testov ne more prestreči. Raziskovalno testiranje je v zadnjih letih postalo
zelo popularno, vendar ima tudi svoje slabosti. [12]
Z naslednjimi razlogi bomo predstavili slabosti raziskovalnega testiranja [17]:
• Raziskovalno testiranje lahko ustvari majhne napake, ker tester v določenih trenutkih
ne ve, kaj počne.
• Vodstvo nima nadzora nad testerjem med izvajanjem raziskovalnega testiranja, zato
pogosto nima orientacije o napredku testiranja, razen če je tester pripravil dober
zapisnik.
63
• Kako lahko zagotovimo z raziskovalnim testiranjem, da se napaka v prihodnosti ne bo
pojavila? Nekateri testerji bi to rešili s ponovno sejo raziskovalnega testiranja, vendar
se lahko ponovno znajdemo na starem mestu. Ugotovili smo, da raziskovalno
testiranje pri testiranju ni stoodstotno.
Predstavili smo večino slabosti raziskovalnega testiranja, vendar jih je Microsoft Visual
Studio 2012 odpravil tako, da je izdelal prvovrstno podporo v orodju MTM [17]:
• Testerji lahko zajamejo bogate podatke, ki temeljijo na njihovih testnih nastavitvah in
v primeru napake zagotovijo uporabne informacije o testiranju.
• Rezultati raziskovalnega testiranja se shranijo v TFS. Z analizo ugotovimo kdo je
izvajal testiranje, kateri pristopi so se uporabljali, koliko napak je bilo odkritih itd. S
tem ima vodstvo dostop do meritev, iz katerih razberejo napredek in zaključek
raziskovalnega testiranja aplikacije.
• Pojavljanje napake rešimo tako, da v trenutku izdelamo testni primer, ki ugotovi,ali je
napaka nazadovala v prihodnosti.
Slika 13 prikazuje primer raziskovalnega testiranja, kjer s klikom na izbrano zahtevo
pričnemo s testiranjem.
Slika 13: Raziskovalno testiranje v orodju MTM 2013 [13]
64
5.3 Dodatki za diagnostiko podatkov
Ključni izziv testiranja programske opreme je zagotoviti razvijalcem dovolj informacij o
padlih testih, da lahko potem ustrezno odpravijo napako. Kako pogostokrat se zgodi, da
razvijalec ni reproduciral napake, ki jo je odkril tester? Fraza »Deluje na mojem računalniku«
se pogostokrat pojavlja v razvoju programske opreme.
Microsoft je problem reprodukcije odpravil z dodatki za diagnostiko podatkov, ki zbirajo
informacije ene ali več naprav na podlagi testov. Zbrane informacije dodatkov za diagnostiko
podatkov lahko priložimo napaki in s tem omogočimo razvijalcu bogato količino podatkov, na
podlagi katerih bo diagnosticiral problem. [14]
Visual studio 2013 zajema številne dodatke za diagnostiko podatkov, ki se vključijo med
testiranjem in so naslednji:
• Dnevnik akcij (Action log): adapter se uporablja pri ročnem testiranju in vanj se
zapišejo koraki do odkritja napake. Razvijalcu zelo olajša delo, saj mu ni potrebno
ugotavljati, kako je tester prišel do napake, ampak pogleda v dnevnik akcij in iz njega
razbere testerjeve korake. Testerji za hitrejše ročno testiranje delov aplikacije
pogosteje uporabijo dnevnik akcij kot snemalnik. [21]
• ASP.NET Profiler: se uporablja na oddaljenih računalnikih pri izvajanju testa
zmogljivosti. Zagotavlja profiliranje informacij ASP.NET aplikacij in se uporablja za
natančno diagnozo ozkih grl. Diagnostični dodatek se uporablja samo za ASP.NET
teste zmogljivosti. [14]
• Pokritost kode (Code coverage): s tem dodatkom lahko ugotovimo, kateri predeli
kode se uporabljajo med izvajanjem avtomatskih testov. Kasneje lahko z analizo
določimo neuporabljeno sekcijo kode, ki smo jo odkrili s testiranjem. Dodatek
pokritosti kode je na voljo le za avtomatizirane teste. [21]
• IntelliTrace: intelliTrace zajema informacije o razhroščevanju .NET aplikacije.
Informacije lahko naložimo v Visual Studio 2013 in razvijalcem omogočimo analizo
napake. [14]
• Dnevnik dogodkov (Event log): med testiranjem se informacije zapisujejo v dnevnik
dogodkov. [13]
• Informacije sistema: zbira informacije o sistemu, ki so dodane zraven napake. V teh
informacijah je zapisana različica operacijskega sistema, velikost RAM-a, različica
brskalnika in druge informacije naprave, vključene pri testiranju. [12]
65
• Test učinkovitosti (Test impact): med testiranjem si zabeleži aktivne metode
aplikacije. Iz teh informacij ugotovimo, katere spremembe so nastale s strani
razvijalcev in določimo teste, na katerega so vplivale spremembe razvoja. Analiza
učinkovitosti usmerja splošne testerje k pravilnemu izvajanju pomembnih testov glede
na kritične dele aplikacije. [21]
• Video snemalnik: snemalnik snema aplikacijo med testiranjem in pomaga
razvijalcem pri diagnosticiranju napake vmesnika. Dodatek je bil omogočen že v
Visual Studio 2012 s snemalnikom zvoka in je lahko uporabljen za avtomatske teste
(kot kodiran UI test), vendar se bolj uporablja pri ročnem testiranju, tako da tester med
testiranjem posname tudi komentarje aplikacije. [14]
• Obstaja dodatek za diagnostiko podatkov, ki med testiranjem vpliva na napravo. Ta je
sledeč [14]:
o Emulacija omrežja: dodatek ne zbira podatkov, ampak na silo spreminja
vedenje naprave (npr. zmanjša hitrost internetne povezave, simulira hitrost
modema, recimo v omrežju podjetja, kjer so uporabniki nanj povezani iz
oddaljenih lokacij).
Imamo možnost izdelave lastnega dodatka za diagnostiko podatkov. Z uporabo številnih
dodatkov dramatično zmanjšamo čas diagnoze in odpravimo slabosti neuspelih testov.
66
6 Uporaba testnih orodij Visual Studio 2013 v praksi
6.1 Testiranje v okviru življenjskega cikla programske opreme
Testiranje ni samostojna dejavnost, ampak ima svoje mesto v modelu za razvoj življenjskega
cikla programske opreme, ki določa organiziranost testiranja. Obstajajo številne oblike
testiranja, vendar je zaradi različno vpletenih interesov in disciplin v življenjskem ciklu
pomembno, da definiramo različne ravni in tipe. V procesu razvoja je projekt odvisen od
svojih namenov in ciljev. Obstajajo številni razvojni življenjski cikli z različnimi cilji in
segajo vse od manj zahtevnih in zahtevnih metodologij. Ključen pomen metodologij je, da so
popolnoma nadzorovane in dokumentirane, saj sta pri njih pomembna kvaliteta in
zanesljivost. Vsaka od njih ima svoje mesto v sodobnem razvoju programske opreme in
najustreznejši razvojni proces za vsak projekt. Modeli določijo različni vrstni red in faze
procesa, v katerem se izvajajo.
Model življenjskega cikla ima velik vpliv na testiranje v projektu. Aktivnosti testiranja
opredelijo predmet, prostor in čas izvajanja, vplive regresijskega testiranja ter tehniko
testiranja. Testiranje mora slediti razvoju življenjskega cikla, da bo uspešno opravilo svoje
delo. Pogosto ima izdelek časovni rok predaje, zato mora biti testiranje hitro in učinkovito.
6.2 Testiranje z orodji Visual Studio 2013 po V-modelu
Preden opišemo postopek testiranja po V-modelu, je potrebna postavitev testnega okolja. V
naslednjem podpoglavju bomo predstavili vse potrebne snovi o nastavitvi okolja za
upravljanje življenjskega cikla aplikacij z Visual Studio 2013 (s poudarkom na testnih
orodjih).
6.2.1 Infrastruktura testnega okolja
Lastnosti, o katerih smo razpravljali, lahko kombiniramo s komponentami, ki skupaj tvorijo
infrastrukturo testiranja.
Postavitev infrastrukture, ki smo jo uporabljali, je precej omejena zaradi virov, zato bomo
dodali še orodja primerna pri postavitvi infrastrukture, ki še zadostujejo minimalnim
potrebam (Tabela 5).
67
Tabela 5: Uporabljena in primerna orodja za postavitev infrastrukture
Izdelek Programska
oprema in verzija
Namen
Visual Studio
2013
Visual Studio
Professional
Za testiranje enote, razhroščevanje.
Team Foundation Server UI
Visual Studio
Premium
Vse zgoraj našteto, plus pokritost
kode in kodiran UI test.
Visual Studio
*Ultimate
Našteto vse zgoraj, plus
zmogljivostni test, spletno testiranje in
MTM
Visual Studio Test
Profesional
MTM, Team Foundation Server UI.
Ne vsebuje testiranja enote in
razhroščevanja.
Microsoft Test
Manager (MTM)
Nameščen kot del
orodjaVisual Studio
Ultimate ali Test
Profesional.
Uporabniški vmesnik za upravljanje
laboratorija, testnih načrtov in orodja
Test Runner.
Windows Windows Server
2012 R2 Enterprise
64 bit (vključno z
Microsoftovo Hyper
– V tehnologijo)
Strežniki poganjajo testno
infrastrukturo komponent. Za vsak
virtualni računalnik rabimo licenco,
čeprav je virtualen. (Licence ne
potrebujemo za kratkotrajne testne
inštalacije.)
Windows 7 Potrebujemo za namizne in prenosne
računalnike.
Team
Foundation
Server
Visual Studio 2013
Team Foundation
Server
Sledenje opravil, nadzor nad viri,
storitve gradnikov.
System Center
Virtual Machine
Manager
(SCVMM)
Virtual Machine
Manager 2008 R2
SP1 ali 2012
Virtualne naprave za testna okolja.
68
Microsoft
SharePoint
Server
*SharePoint
Standard
Spletna stran projekta za objavo
osnovnih poročil.
*SharePoint
Enterprise
Za razširjena poročila in armaturne
plošče. Ogljete si namizje na MSDN.
Microsoft SQL
Server
SQL Server Express Podpira SCVMM.
**SQL Server 2012
Standard
Zagotavlja storitve poročanja z
grafikoni, ki predstavljajo napredek
ekipe in kakovost proizvoda.
Key
Management
Service (KMS)
Zagotavlja aktivacijske ključe za
testiranje virtualnih naprav.
*Veliko lahko privarčujemo, če ne uporabimo orodja SharePoint.
**Za podporo orodja Team Foundation Server lahko uporabimo SQL Server Express. Vendar
moramo biti pri tej odločitvi previdni, saj lahko nastane migracija orodja Team Foundation
Server iz enega strežnika SQL v drugo različico, kar pomeni izgubo zgodovinskih podatkov o
opravilih.
6.2.2 Strojna oprema pri postavitvi infrastrukture
Na zelo enostaven način lahko postavimo dva ali več velikih strežnikov, vendar nastane
težava v financah.
Uporabimo en velik strežnik, ki je testni gostitelj. Na njem se izvajajo virtualne naprave, ki
izvajajo teste. V primeru večje količine testov lahko dodamo več testnih strežnikov.
Strežnik služi za druge komponente testne infrastrukture, ki je naslednji: Team Foundation
Server, ki smo ga navedli v zgornji tabeli skupaj z različnimi pomožnimi agenti, storitvami in
konzolami.
V primeru preobsežnega projekta razširimo komponente infrastrukture na več računalnikov. V
nadaljevanju bomo podrobneje pogledali vloge različnih komponent.
69
6.2.2.1 Komponente infrastrukture
Slika 14 prikazuje komponente, nameščene na enem računalniku ali razširjene na številnih
računalnikih, ki imajo enake funkcije in povezave:
Slika 14: Komponente infrastrukture
Prikazana polja v diagramu predstavljajo proizvode programske opreme, razen testnega
gostitelja in fizičnega računalnika.
• Testni gostitelj je fizični računalnik, na katerem se izvaja Hyper-V. Virtualizacija
omogoča skupno rabo virov med virtualnimi napravami in fizičnim računalnikom.
Imamo lahko več testnih gostiteljev, da virtualne naprave delujejo istočasno. Hyper-V
je vloga v Windows Server, ki se nahaja na nadzorni plošči za upravljanje računalnika.
o Testni gostitelj mora imeti prostoren disk, veliko pomnilnika in veliko logičnih
procesorjev. Virtualizacija deli vire med virtualnimi napravami.
o Na testnem gostitelju je nameščen samo Hyper-V in nobenih drugih
pomembnih storitev.
o Teste lahko izvajamo brez Hyper-V virtualizacije, vendar nam orodje Hyper-V
olajša delo pri postavitvi novih testnih okolij.
• Na testnih virtualnih napravah (VMs) testna ekipa izvaja razne teste, kjer se vsaka
naprava odziva enako kot fizični računalnik. Z njimi se lahko prijavimo na omrežje
organizacije, lahko jih izvajamo in ustavimo, odpiramo konzolna okna, se povežemo
na drugi računalnik preko namizja na daljavo itd. Poleg tega imamo možnost shraniti
70
stanje naprave in jo kasneje ponovno nastaviti, s tem lahko izdelamo duplikate stanj
naprave, ki jih shranimo v knjižnico.
o Priporočeno je izvajanje testov na virtualnih napravah, saj je enostavno izdelati
nove virtualne naprave z drugačnimi konfiguracijami strojne opreme,
operacijskih sistemov in drugih programskih oprem. Zelo enostavno jih je
nastaviti na prvotno oziroma čisto stanje.
o Večino testov je mogoče izvesti na virtualnih napravah, vendar obstajajo
izjeme, ki vključujejo posebno strojno opremo in nekatere zmogljivostne teste.
o Uporabimo lahko tudi druga virtualna ogrodja, kot sta Vmware in Citrix Xen
Server, vendar bomo morali uporabiti njihove zmogljivosti za shranjevanje in
obnovitev virtualnih naprav.
o Fizični testni računalnik je uporaben za izvajanje zmogljivostnih testov ali
testov, ki se morajo izvajati na specificirani strojni opremi, vendar z uporabo
virtualnih naprav spoznamo, kako redko se uporabljajo fizične naprave, saj
lahko na virtualnih napravah še vedno izvajamo nekatere tipe zmogljivostnega
testiranja.
• Sistemski center za upravljanje virtualnih naprav (System Center Virtual Machine
Manager-SCVMM) združi Hyper-V gostitelje v en velik vir. Z njim lahko izdelamo
lasten zasebni oblak, prav tako nam omogoča izdelavo knjižnice za predloge
virtualnih naprav, s pomočjo katerih na enostaven način izdelamo nove virtualne
naprave. Po namestitvi orodja SCVMM nam ni potrebno delati s posameznimi Hyper-
V konzolami.
• VMM agent zastopa SCVMM in je nameščen na vsakem testnem gostitelju. VMM
agent omogoči SCVMM nadzor nad Hyper-V.
• VM knjižnica shramba datotek, v kateri so shranjene kopije in predloge virtualnih
naprav. Običajna virtualna naprava je velika nekaj gigabajtov, zato mora biti knjižnica
zelo velika in se mora nahajati na enakem disku, kot virtualna naprava. Primarna
knjižnica mora biti na enakem računalniku kot SCVMM, lahko dodamo še druge
knjižnice, ki se nahajajo na ločenih računalnikih.
• SCVMM SQL Server shranjuje podatke uskladiščenih in izvajajočih virtualnih
naprav.
• SCVMM konzola je uporabniški vmesnik administratorja za SCVMM. Konzola je
nameščena na enakem računalniku kot Team Foundation Server. Konzole lahko
71
namestimo tudi na druge računalnike, iz katerih želimo nadzorovati SCVMM. Poleg
tega namestimo Self-Service Portal za SCVMM, ki vsebuje spletni vmesnik, ki
omogoči navadnim uporabnikom izdelavo virtualnih naprav. Na zgornji sliki ni
prikazan.
• Team Foundation Server skladišči predmete, kot so testni primeri, uporabniške
zgodbe, napake in razvijalčeva opravila.
o Team Foundation Server zagotavlja nadzor nad verzioniranjem izvorne kode in
druge artefakte projekta.
o Pri večjih projektih namestimo instanco orodja TFS na ločene računalnike in
jih združimo v logično gručo, ki ima samo en identifikator enotnega vira (URI)
za uporabniški dostop.
• Z orodjem Lab Manager izdelamo in upravljamo laboratorijska okolja, ki so lahko
gruča virtualnih ali fizičnih naprav, na katerih se izvajajo testi. Lab Manager je del
orodja TFS in zagotavlja funkcije na vrhu orodja SCVMM.
o Build Service opravlja stalne in redne gradnike na strežniku, pri čemer vzame
izvorno kodo iz orodja TFS source control. Komunicira z Build Agent, ki je na
vsaki testni napravi in omogoča naložiti prevedeno kodo na določeno napravo.
• Testni krmilnik izvaja skripto za opravljanje testov. Za zagon in zbiranje testnih
podatkov na testni napravi se sporazumeva s testnim agentom.
• Visual Studio je glavni vmesnik, ki dostopa do TFS predmetov, izvorne kode in
gradnikov.
• Microsoft Test Manager (MTM) je vmesnik, ki dostopa do orodja Lab Manager in
testnega krmilnika.
• TFS Admin je administratorska konzola orodja TFS.
6.2.2.2 Lab Manager in virtualizacija
Pod tem naslovom bomo predstavili povezavo med virtualizacijo in Lab Managerjem.
Lab Manager je element orodja TFS, ki ga usposobimo preko TFS strežniške konzole.
Uporabniki dostopajo do orodja Lab Manager preko namiznih naprav s pomočjo Lab Center,
ki se nahaja v orodju MTM. Z orodjem Lab Manager kreiramo in nadzorujemo laboratorijska
okolja, ki tvorijo skupino naprav, na katere namestimo sistem, potreben za testiranje.
72
Določena laboratorijska okolja so zasnovana za testiranje distribuiranih sistemov, kot so
spletne storitve.
Okolje je sestavljeno iz fizičnih in virtualnih naprav, kjer imajo veliko prednost virtualne
naprave, saj z njimi hitro izdelamo novo okolje ter shranjujemo napake, odkrite s strani
okolja, za kasnejše preiskave. Vse te ugodnosti dobimo z namestitvijo orodja SCVMM, ki
zagotovi mesto virtualnih naprav v knjižnicah.
Lab Manager združi virtualne naprave v virtualnem okolju, kjer kot celoto naprave ustavimo
in zaženemo.
Izdelamo tudi standardna okolja z različnimi virtualnimi in fizičnimi napravami, kjer
virtualnim napravam ni potrebno upravljati z orodjem SCVMM. Standardno okolje ne
vsebuje vseh značilnosti virtualnega okolja, vendar z njim razvijamo in izvajamo teste. V vseh
pogledih je virtualno okolje primerno za vse tipe testiranja, medtem ko so standardna okolja
primerna le za izvajanje zmogljivostnih testov.
Lab Manager lahko instaliramo brez instalacije orodja SCVMM ali brez Hyper-V
virtualizacije. V tem primeru je možno postaviti le standardno okolje. Ta scenarij nam koristi,
če mora ekipa vložiti veliko truda v testno ogrodje, ki temelji na fizičnih napravah ali na
zunanjem ogrodju virtualizacije.
Če pogledamo seznam komponent, jih lahko v zaključen sistem uredimo na različne načine.
Obstaja veliko različic glede na različne dejavnike. Mi bomo omenili samo en primer
ekonomične postavitve.
73
6.2.2.3 Ekonomična postavitev virtualizacije
Pri tej nastavitvi smo postavili vso infrastrukturo na en računalnik ter Hyper-V za testne
virtualne naprave na drug računalnik. Stroške smo zmanjšali tako, da smo izpustili instalacijo
SharePoint-a (ali uporabili standardni SharePoint). Prostor shranjevanja za orodje TFS smo
zagotovili z uporabo SQL Server Expres namesto SQL Server, kot je prikazano v spodnji sliki
(Slika 15). S to izbiro smo izgubili armaturne plošče in spletne grafikone o napredku projekta
zoper testiranja.
Slika 15: Ekonomična postavitev virtualizacije
Omenjena konfiguracija ima naslednje specifikacije:
• Infrastruktura gostitelja:
o 16 učinkovitih centralno procesnih enot (ali več)
o 48GB RAM, 64-bitna arhitektura, zasnovana za Hyper-V (kar pa ne drži v
vseh 64-bitnih strežnikih)
o Windows Server 2012 R2 Enterprise 64 bit
o C: pogon 100GB za Windows-e
o E: pogon 2000GB za virtualne naprave
• Infrastruktura strežnika:
o 4 ali več učinkovitih centralno procesnih enot
o 10GB RAM ali več, 64-bitna arhitektura
74
o Windows Server 2012 R2 Enterprise 64 bit
o C: pogon 200GB za programsko opremo
o E: pogon naj bo čim večji za VM Library
• Programska oprema:
o 2 x Windows Server 2012 Enterprise R2 64 bit
o Team Foundation Server 2013
o System Center Virtual Machine Manager 2012 R2 SP1
o SQL Server Express (ali SQL Server 2012)
o (SharePoint Standard)
• Namizne naprave za razvijalce:
o Windows 7 Professional ali Enterprise
o Visual Studio Professional 2013 (ali Premium ali Ultimate)
• Namizne naprave za testerje:
o Windows 7 Professional ali Enterprise
o Visual Studio Test Professional 2013 (ali Ultimate)
Mi smo uporabili še bolj ekonomično postavitev infrastrukture in zaradi primanjkovanja virov
strnili infrastrukturo strežnika in gostitelja na en računalnik.
Omenjena konfiguracija ima naslednje specifikacije:
• Infrastruktura gostitelja in strežnika na enem računalniku:
o 4 ali več učinkovitih centralno procesnih enot
o 8GB RAM ali več, 64-bitna arhitektura
o Windows Server 2012 R2 Enterprise 64 bit
o C: pogon 200GB za programsko opremo
o E: pogon 1500GB za virtualne naprave
• Programska oprema:
o 2 x Windows Server 2012 Enterprise R2 64 bit
o Team Foundation Server 2013
o System Center Virtual Machine Manager 2012 R2 SP1
o SQL Server Express (ali SQL Server 2012)
o (SharePoint Standard)
• Namizne naprave za razvijalce:
o Windows 7 Professional ali Enterprise
75
o Visual Studio Professional 2013 (ali Premium ali Ultimate)
• Namizne naprave za testerje:
o Windows 7 Professional ali Enterprise
o Visual Studio Test Professional 2013 (ali Ultimate)
6.2.3 Kreiranje in nastavitev skupine projektov
Grupa skupine projektov se imenuje zbirka skupine projekta (team project collection). Ko
namestimo TFS, je že izdelana zbirka pod imenom »default collection«, v katero bomo lahko
dodajali skupine projektov. Pri izdelavi zbirke projekta moramo specificirati logične in fizične
vire, ki jih bo uporabljala skupina projektov. Vsi artefakti in podatki, ki jih uporablja skupina
projektov, so shranjeni v podatkovni bazi zbirke. V naslednjih korakih bomo prikazali
postopek izdelave nove zbirke skupine projektov.
1. Z administrativne konzole odpremo stran Team Project Collections in izberemo
zavihek Create Collection in nato s čarovnikom izdelamo zbirko skupine projekta.
V prvem koraku določimo ime in opis zbirke skupine projekta (Slika 16).
Slika 16: Določitev imena in opisa zbirke skupine projekta,
76
2. Slika 17 prikazuje določitev podatkovnega sloja ali SQL strežnike instance. V
polje SQL Server Instance navedemo TFS strežniški podatkovni sloj. Če želimo
uporabiti obstoječo instanco podatkovne baze za zbirko skupine projekta, moramo
navesti ime in instanco, kot je prikazana v naslednjem primeru: ServerName \
InstanceName.
Slika 17: Določitev podatkovnega sloja
3. Slika 18 prikazuje proces verifikacije. Readiness Checks preveri stanja pregledov.
Slika 18: Preverjanje ustreznosti zbirke skupine projekta pred njeno izdelavo
77
4. Slika 19 prikazuje proces izdelave zbirke skupine projekta.
Slika 19: Proces izdelave zbirke skupine projekta
Nato v orodju TFS izdelamo skupino projekta, s katero vzpostavimo repozitorij za izvorno
kodo in prostor za načrtovanje, spremljanje napredka ter kolaboracije. V naslednjih korakih
bomo prikazali postopek izdelave nove skupine projekta.
1. V orodju Team Explorer izberemo povezavo »Create Team Project«, kjer s
pomočjo čarovnika izdelamo novo skupino projekta (Slika 20).
Slika 20: Začetna faza izdelave skupine projekta
78
2. Slika 21 prikazuje okno New Team Project, v katerem določimo ime in opis
skupine projekta. Upoštevati moramo, da ko enkrat določimo ime skupine
projekta, ga ne moremo več spremeniti.
Slika 21: Določitev imena in opisa skupine projekta
3. Slika 22 v naslednjem oknu prikazuje izbiro predloge procesa, ki določa potek
dela skupine. Na voljo imamo tri predloge, mi smo uporabili predlogo Scrum, ker
bomo uporabljali predmete seznama zahtev izdelka in tipe delovnega predmeta.
Slika 22: Izbira predloge procesa
79
4. Potem je potrebno določiti sistem za nadzor nad verzijami (Slika 23). Na voljo
imamo dva sistema: Team Foundation Version Control (TFVC) ali Git. V isti
zbirki skupine projekta lahko uporabimo TFVC in Git sistema. Razlika med njima
je, da TFVC uporablja centraliziran strežniški repozitorij za sledenje in izdelavo
verzij datotek, medtem ko Git uporablja lokalni repozitorij, nima strežniškega
koncepta, ampak ima enega ali več skupnih repozitorijev.
Slika 23: Določitev sistema za nadzor nad verzijami
5. Slika 24 prikazuje skupino projekta v orodju Team Explorer po končani
konfiguraciji. Orodje Team Explorer ima povezavo do orodja Web Access.
Slika 24: Skupina projekta v Team Explorer
6.3 Priprava testne dokumentacije
Testiranje pričnemo v fazi analiziranja zahtev in izdelavi testnih kriterijev, ki usmerijo testno
ekipo.
Pred začetkom dejanskega testiranja se testna ekipa ukvarja z različnimi dejavnostmi, kot so
priprava testne strategije, načrtovanje testiranja, oblikovanje testnih primerov in testnih
80
skript, ki se izvajajo vzporedno z razvojem izdelka in nam omogočijo pridobiti testne
rezultate ob pravem času.
Na podlagi zahtev dokumenta razvojna ekipa začne delati na oblikovanju, potem pa se lotijo
dejanske implementacije, medtem ko testna ekipa začne delati na izdelavi testnega načrta,
testnih primerov in skript. Obe dejavnosti potekata vzporedno.
Življenjski cikel razvoja programske opreme v V-modelu lahko ima različne faze, vendar
bomo mi vzeli najosnovnejšo konstrukcijo V-modela s štirimi fazami. Glede na pridobljeno
študijo bomo sami določili in opisali potek dogajanja za posamezno fazo, ki velja za manjše
organizacije:
1. Testiranje sprejemljivosti: v tej fazi moramo razumeti pričakovanja stranke. Veliko
časa posvetimo stranki in razvijalcem. Skupaj z njimi zapišemo vrednote in poslovne
cilje, izdelamo diaproekcijo iz uporabniških scenarijev, zapišemo uporabniške zgodbe,
poslovne diagrame aktivnosti, poslovne modele entitet, relacij in diagrame interakcij
med glavnimi akterji. Na podlagi teh aktivnosti pripravimo osnutek načrta. Zahteve
izdelka vsebujejo seznam uporabniških zgodb, razvrščenih v vrstnem redu, po katerem
se bodo implementirale. Vsak element je zahteva, za katerega se izdela testna
garnitura. Na začetku projekta imamo obširno in dokaj urejeno zbirko zahtev, ki
rafinirajo potek projekta. Elemente zahtev izdelka (PBIs) poimenujemo in opišemo
tako, da so razumljivi stranki projekta. Vsakemu elementu podamo grobo oceno
stroškov glede na čas in druge vire. Pri tem opomnimo testno ekipo, da je v
ocenjevanje stroškov prav tako vključen čas, ki ga potrebujejo za pisanje in izvajanje
enotnih in sistemskih testov.
2. Sistemsko testiranje: v tej fazi pripravimo testne primere sistema. Načrt testiranja
sistema je izdelan na podlagi strojne opreme in komunikacije med njimi ter
predvidene načrtovane arhitekture, ki bo uporabljena pri implementaciji aplikacije. V
tem delu na podlagi znanih zahtev konfiguriramo ustrezno testno okolje.
3. Integracijsko testiranje: v tej fazi pripravimo testne primere za integracijsko testiranje.
Izdelamo načrt integracijskega testiranja in preverimo sposobnost komponent sistema
ter njihovo skupno delovanje z zmogljivostnim testom. Za čim bolj učinkovito
testiranje izdelamo testne primere, testne korake za testiranje sistema. Za boljšo
predstavo uporabniških zgodb izdelamo diaprojekcijo s koraki, ki opisujejo poteke
zgodb. Pisanje korakov vnaprej ima zelo veliko prednost, saj se izognemo
pristranskosti dejanskega delovanja sistema. Avtomatiziramo in razširimo pomembne
81
ročne teste iz prejšnjih ciklov. Pri tem moramo zagotoviti, da testi vsebujejo vse
lastnosti, ki so jih vsebovali pred avtomatizacijo in posegom v kodo. Testi se dodajo
dnevnim gradnikom.
4. Testiranje enote: pripravimo testne primere za teste enote. V tej fazi testiramo
komponente, kot so razredni diagrami z vsemi metodami in relacijami med razredi.
Slika 25, izdelana na podlagi naše študije, prikazuje faze leve in desne strani V-modela ter
vmesne faze za pripravo testne dokumentacije, ki je potrebna pri vsaki fazi testiranja. Pri
izdelavi testne dokumentacije imamo navedene tudi osebe, ki jo pripravijo.
Slika 25: Osnovna zgradba V-modela
82
Pripravljeno testno dokumentacijo je potrebno ustrezno vnesti v TFS z uporabo Microsoftovih
orodij, kot sta npr. Team Web Access ali MTM. Spodaj je prikazan primer kako vnesti tetstni
načrt z uporabo orodja MTM.
1. Najprej izberemo obstoječo testno skupino, ki lahko ima že izdelan testni načrt ali
pa ga dodamo na novo. Pri dodajanju novega testnega načrta ga ustrezno
poimenujemo in izberemo (Slika 26).
Slika 26: Dodajanje testnega načrta v orodju MTM
2. Na novo izdelanemu testnemu načrtu lahko dodelimo različne lastnosti. Slika 27
prikazuje lastnosti testnega načrta, ki ga lahko posodabljamo, mu spremenimo
ime, dodamo opis načrta, določimo drugo iteracijo skupine projekta ter čas
trajanja iteracije. Konfiguracije so del načrtovanja, ki nas obvestijo o potrebnih
zahtevah. Med izvajanjem testov ni zagotovljeno, ali se testi dejansko izvajajo na
določeni konfiguraciji.
Slika 27: Konfiguracija testnega načrta
83
3. Testne primere lahko dodamo v privzeto testno garnituro, ki ima enako ime kot
testni načrt. Slika 28 ima privzeto testno garnituro z imenom »Spletna trgovina«,
enako kot je ime testnega načrta.
Slika 28: Dodajanje testnega primera v privzeto testno garnituro
4. Slika 29 prikazuje dodane zahteve testnemu načrtu, zahtevam pa dodamo testne
primere. Testnemu načrtu lahko dodamo že obstoječo zahtevo. Testni primer,
izdelan za testno garnituro, ki temelji na zahtevi, se bo avtomatsko povezal z
zahtevo.
Slika 29: Dodajanje zahtev testnemu načrtu
84
5. Ročnim testnim primerom za vsak testni korak dodamo akcije in pričakovan
rezultat. Med izvajanjem testa lahko vsak testni korak označimo za uspelega in
neuspelega. Testni koraki s pričakovanim rezultatom so označeni kot koraki
validacije. Slika 30 prikazuje testni primer dodajanje izdelka v nakupovalno
košarico in njegove testne korake z opisanimi dejanji in pričakovanimi rezultati.
Slika 30: Testni koraki testnega primera
6. Povezavo med privzetimi konfiguracijami in testnimi primeri testnega načrta je
razvidna pod zavihkom »Test« (Slika 31). Izberemo lahko teste, ki jih želimo
izvajati z orodjem Test Runner.
Slika 31: Povezava med privzetimi konfiguracijami in testnimi primeri
85
7. Zaženemo testne korake pod zavihkom »Test«. Med izvajanjem označimo testne
korake bodisi za uspele ali neuspele; dodajamo komentarje, datoteke ali posnetke
zaslona; lahko izdelujemo napake. Slika 32 prikazuje orodje Test Runner, s
katerim smo izdelali posnetek neuspešnega koraka testnega primera.
Slika 32: Izvajanje testnih korakov z orodjem Test Runner
6.3.1 Uporaba testnih načrtov in garnitur
Testni načrt predstavlja kombinacijo testnih primerov, testnih okolij in testnih konfiguracij. Za
vsako iteracijo izdelamo nov testni načrt, s tem si olajšamo delo tako, da kopiramo testne
garniture iz podobnega testnega načrta v našega.
Izvajanje testov pri različnih konfiguracijah, kot je uporaba drugačnega spletnega brskalnika,
je izvedljiva, vendar je potrebno za vsako drugačno konfiguracijo izdelati testni načrt. Testni
načrti si lahko med seboj delijo testne garniture, saj jih lahko ponovno kopiramo v druge
testne načrte, s tem da spremenimo konfiguracijo testnega okolja v lastnostih testnega načrta.
Pri razpravljanju o scenarijih, uporabniških zgodbah in drugih zahtevah moramo vedno
razmišljati o načinu izvedbe testiranja. Zato se s stranko pogovorimo o testnih primerih, saj
nam ona najbolj pojasni delovanje zahtev.
• Pri testiranju moramo imeti v mislih validacijo in ne samo sistem, temveč poslovni
proces okoli njega. Z verifikacijo moramo ugotoviti usklajenost zahtev in
uporabniških zgodb s sistemom. Pridobljene povratne informacije stranke nam zelo
koristijo pri razvoju in testiranju programske opreme.
86
• Projekt vsebuje zahteve in testne primere, kjer nekaterim ključnim primerom dodamo
potek izvajanja. To zagotavlja jasen cilj za razvoj. Razvoj aplikacije načrtujemo kot
iterativen proces, tako zelo hitro končamo funkcionalnost izdelka od začetka do konca.
S tem procesom zmanjšamo tveganja v razvoju, kot je razvijanje neuporabne
funkcionalnosti in nepravilna zasnova arhitekture projekta.
• Vzpostavimo virtualne laboratorije za izvedbo sistemskih testov.
6.4 Testiranje aplikacije
Skozi življenjski cikel aplikacije se glede na različne faze po V-modelu uporabljajo določeni
tipi testiranja, ki so na voljo v Microsoftovih orodjih. Slika 33 prikazuje uporabo testnih tipov
skozi faze testiranja. Tipe za testiranje uporabimo glede na območje oz. zahteve posamezne
faze v V-modelu. Vsaka faza zahteva določen tip testiranja in določeno znanje testerja.
Povezave od testnih tipov do faz testiranja prikazujejo osebe, ki naj bi bile udeležene pri
testiranju.
Slika 33: Uporaba testnih tipov skozi faze testiranja
87
Predstavili bomo nekaj koristnih napotkov za uspešno testiranje:
• Pri izdelavi testov enot moramo najprej poskrbeti za pokritost kode, ki mora biti vsaj
70-80 %. Z izdelavo testov vedno začnemo pred implementacijo aplikacije. Testi
pogosto razčlenjujejo delovanje kode.
• Izdelamo nadomestke in gonilnike, da lahko testiramo komponente, ki so odvisne od
drugih nedokončanih ali pomanjkljivih komponent.
• V najkrajšem možnem času poskusimo zagnati testni primer. Vsakič, ko izdamo novo
izgradnjo izdelka, opravimo raziskovalno testiranje, da poiščemo napake in
definiramo dodatne testne primere.
• Pri izvajanju ročnih testnih primerov posnamemo svoja dejanja. Tako lahko hitreje
ponovimo določen test in hitreje izvajamo regresijsko testiranje.
• Uporabimo funkcijo v orodju MTM poročilo napak s klikom, ki vsebuje posnetke
okolja, tako lahko lažje odpravimo pomanjkljivost izdelka.
• Avtomatiziramo ključne ročne teste, ki jih vključimo v avtomatizacijo gradnikov. S
tem postane integriteta sistema bolj samozavestna.
• Ekipa mora ločevati vloge testerjev in razvijalcev, zato moramo poiskati osebje, ki je
dobro pri iskanju napak in jih že v začetku osredotočiti k uporabi in izvajanju
raziskovalnega testiranja. Vnaprej morajo razmišljati o načrtovanju testov.
• V skupino testerjev dodamo nekaj razvijalcev in obratno, tako da so skupine
pomešane in sčasoma postanejo učinkovitejše od osnovno razvrščenih skupin. V
postopek zahtev vključimo uvajanje v testiranje, kjer razvijalci pokažejo testerjem
postopke za avtomatizacijo testov.
6.5 Osebe in vloge pri testiranju
Razprava o tem ima dve plati: ali naj testirajo celoten sistem razvijalci ali pa se naj lotijo
testiranje sistema ločene skupine testerjev. Kot po navadi se odgovor nahaja med skrajnostmi
in je odvisen od naših okoliščin.
Projekt mora nujno imeti hiter splošen cikel, zato ločevanje skupin med razvijalce in testerje
ni priljubljeno in zaradi tega nastane zakasnitev Handoff (zakasnitev med vozlišči). Testerji in
razvijalci so ločeni v skupine zaradi raznolikosti, ki se pojavijo v znanju in odnosih. Med
razvijanjem izdelka si razvijalci vedno postavijo vprašanje »Kako čim bolj izdelati koristen in
88
uporaben izdelek za uporabnika?«, medtem ko testerji želijo zlomiti sistem in poiskati
njegove pomanjkljivosti. Razvijalci testiranja ne vzamejo resno, sistem preverjajo preveč
»nežno«, saj velikokrat izberejo lažjo in srečno pot, medtem ko usposobljeni testerji iščejo
pomanjkljivosti, izpostavljajo stanja in izvajajo zaporedje akcij na sistemu. Večini razvijalcev
takšen pristop ni všeč in menijo, da jih testerji postavljajo v slabo luč, ko želijo izpostaviti
luknjo v oklepu. Vsestranski testerji so tisti, ki znajo kodirati, medtem ko vsestranski
razvijalci znajo napisati dober test. V Microsoftu obstaja delovno mesto inženirja za razvoj
programske opreme in testiranja (SDET). To je strokovnjak, čigar sposobnosti presegajo pri
testiranju in pisanju dobre programske kode. SDET je sposoben izdelati teste na podlagi
modela in mora imeti vpogled v zasnovo sistema in v njegovo odvisnost, kjer na podlagi tega
poišče vir verjetne napake.
Pogosto razdelitev testerjev v skupine vpliva na zgodovino ekipe in na naravo projekta.
Ločene razvojne in testne skupine priporočamo le v primeru razvijanja kritičnih sistemov. Če
se posamezniki osredotočajo na razvoj in testiranje, jih moramo zadržati v isti ekipi.
Priporočljiva je menjava vlog med osebjem.
V mislih moramo imeti naslednje točke, če imamo ločene testerje:
• Testni primeri so ključni pri določevanju zahtev. Testni člani so ključni udeleženci pri
vsaki razpravi o uporabniških zgodbah (in drugih zahtevah). Kot smo obravnavali v 5.
poglavju »Ročno testiranje«, nekatere testne skupine prisegajo na agilen pristop testno
usmerjenega razvoja, kjer so sistemski testi edina navedba zahtev.
• Avtomatizirani sistemski testi so pomembni za zmanjševanje regresijskih napak in za
manjšanje razvojnih ciklov. Ta postopek nam prinese izboljšave v številne vidike
testiranja.
89
6.6 Prednosti testiranja po tem postopku
Hitreje se odzovemo na spremembe zahtev in poročila napak.
• Avtomatizirane regresijske teste lahko hitro in večkrat ponovimo, s tem načinom
tesiranje ne predstavlja več ovire pri izdaji posodobitev. Ročno testiranje uporabimo
samo za nove in popravljene funkcije. Najhitreje testiramo z virtualnim
laboratorijskem okoljem.
• Stranka sistem usklajuje in eksperimentira.
Večje zadovoljstvo strank.
• Z rednimi povratnimi informacijami omogočimo uporabnikom zgodnejši preizkus in
usklajevanje sistema z njihovimi procesi. V tem primeru bo izdelek po vsej verjetnosti
zagotavljal njihove potrebe.
• Zelo hitro odpravimo napake odkrite, s strani stranke, ali dodamo nove
funkcionalnosti izdelku.
90
7 Sklep
Testiranje programske opreme je zelo pomembno. V preteklosti se je programska oprema
testirala ob koncu projekta in ne vzporedno z njim. Pogosto faza razvoja traja dlje časa, kot je
predvidena, zato posledično zmanjšamo fazo testiranja, da lahko pravočasno ujamemo rok
izročitve programske opreme. Takšen način vpliva na rezultate in kakovost številnih
projektov.
V diplomskem delu smo se zelo dobro seznanili s testiranjem programske opreme z orodjem
Visual Studio 2013. Na drobno smo predstavili faze testiranja, stroške s testranjem in brez
njega, pristope učinkovitega testiranja ter kombinacijo V-modela in orodja Visual Studio
2013. V-model smo izbrali zato, ker se najbolj ujema z orodjem Visual Studio 2013. Na
praktičnem primeru smo prikazali konfiguracijo in infrastrukturo testiranja ter testiranje
aplikacije skozi življenjski cikel. Določili smo, kateri testni tipi, ki so na voljo v
Microsoftovih orodjih, spadajo v določeno fazo V-modela.
Pomembna zadeva, ki si jo je vredno zapomniti pri modelih življenjskega cikla, ki so: V-
model, W-model, model agilnega pristopa, iterativni model itd. je to, da vsak model
predstavlja poenostavitev realnosti, ki izpušča nekatere elemente. Do neke mere nam model
pomaga pri jasnem razmišljanju o nečem, kar moramo storiti ali razumeti v realnem svetu.
Model postane tudi del dogme, ki posega v realni svet napredka in nato postane problem.
Verjetno ni dobro, da model postane bolj pomemben od doseganja ciljev projekta.
Torej, če je izbran model koristen, ni nič hudega, ampak moramo razmišljati in delovati na
projektih trezno, še posebej pri integraciji testiranja v življenjski cikel od začetka do konca.
Kot smo ugotovili, je testiranje v V-modelu implicitno, saj je vključeno od začetka projekta in
vsebuje načelo, da mora biti vsak izdelek izpostavljen tako statičnim in dinamičnim testom v
najkrajšem času. Težava V-modela je pri prilagajanju sprememb, ki se pojavijo pri
spreminjanju zahtev, to je v našem dinamičnem življenju zelo pogosto in nas lahko finančno
veliko stane. Dobra stran V-modela je v njegovi preprostosti, lažjem upravljanju in
enostavnem razumevanju, saj ima vsaka faza posebne končne rezultate in postopke pregleda.
Zelo pomembno je začeti testirati v začetnih fazah razvoja programske opreme, to pomeni, da
s testiranjem pričnemo že pri določitvi funkcionalnosti in izdelavi dokumentacije programske
opreme. Vredno je investirati v zelo dobro testno okolje in testirati v okviru testnih faz, saj
nastali stroški pri odkrivanju programskih napak zelo hitro rastejo v odvisnosti od časa.
Pozneje ko napako odkrijemo, več stroškov bomo imeli z odpravo. Infrastruktura testnih
91
orodij naj bo ločena na več računalnikih. V primeru preobsežnega projekta razširimo
komponente infrastrukture še na dodatne računalnike.
Začetni strošek pri postavitvi testnega okolja je precej velik, ker je potrebno investirati v
programsko in strojno opremo ter osebje. Ker je Visual Studio 2013 izjemno obširen in
zahteven, je potrebno poskrbeti za izobraževanje osebja, da bodo lahko najbolj optimalno
uporabili orodja za testiranje ter pravilno in učinkovito izvajali teste. Kljub velikim začetnim
stroškom se skozi projekte ta strošek zmanjša, ker lahko testno okolje, testne garniture in
avtomatske teste uporabimo na različnih projektih, saj imajo določene programske opreme
zelo podobne funkcionalnosti. Prav tako pa lahko testno okolje, ki je enkrat postavljeno,
uporabljamo za vse nadaljnje projekte.
Za manipulacijo in izdelavo testnih načrtov, testnih garnitur, testnih primerov in izvedbo
ročnih testov smo se seznanili z orodjem MTM 2013 in orodjem TWA. Ugotovili smo, da ima
MTM več funkcij, kot so snemanje akcij, izdelava zaslonskih slik, dnevniki in drugi
diagnostični podatki. Z njim lahko upravljamo laboratorijska okolja. Vse te dodatne funkcije
nam omogoči Microsoft Test Runner. Orodje TWA je primerno za manj kompleksne projekte
in se lahko poveže z določeno skupino projekta, opredeljeno v Visual Studio TFS ali Visual
Studio Online.
Testno okolje naj bo ločeno od razvijalcev, komunikacija med njimi pa naj bo podprta s
kvalitetno programsko opremo, kot je Visual Studio 2013, ki nam to že omogoča s svojimi
integriranimi orodji. Osebje, ki sodeluje na razvoju programske opreme, mora nujno
sodelovati med sabo, na ta način preprečimo nastanek napak zaradi nerazumevanja.
Z diplomskim delom smo dosegli cilje, ki smo si jih zastavili na začetku. Predstavili smo tipe
testiranja, ki jih vsebuje Visual Studio 2013. Prikazali in določili smo, kateri testni tip orodja
Visual Studio spada v določeno testno fazo V-modela. Postavili smo primerno in izvedljivo
testno infrastrukturo z uporabo enega računalnika, saj za postavitev večjega sistema nismo
imeli na razpolago dovolj sredstev. Glede na pridobljeno znanje smo ponazorili uporabo V-
modela z integracijo Microsoftovih orodij in s tem omogočili drugim testerjem, ki imajo manj
izkušenj, izbiro primernega testnega orodja, infrastrukture in testnega modela.
Zaradi obsežnosti v diplomsko delo nismo vključili opisa praktičnega dela s posameznimi
orodji in tipi testiranja orodja Visual Studio. Orodja in tipe testiranja smo samo opisali in
navedli, za kaj se uporabljajo, nismo pa podrobneje opisali postopkov dela z njimi.
92
8 Viri in literatura
[1] Satheesh Kumar N, Subashni S, Guide to Advanced Software Testing, Julij 2013 [2] Jeff Tian, Software Quality Engineering -Testing Quality Assurance, and Quantifiable
Improvement, 2005 [3] Ron Patton , Software Testing, Julij 2005 [4] Taylor & Francis Group , SoftwareProjectManagementA Process-Driven Approach,
2012 [5] Ashfaque Ahmed, Software Testing as a Service, September 2009 [6] Mark Fewster, Dorothy Graham, Software Test Automation, September 1999 [7] Gerald D. Everett, Raymond McLeod Jr, Software Testing: Testing Across the Entire
Software Development Life Cycle, Avgust 2007 [8] Anne Mette Jonassen Hass, Guide to Advanced Software Testing, 2008 [9] Peter Farrell-Vinay, Manage Software Testing, 2008 [10] Tim A. Majchrzak, Improving Software Testing-Technical and Organizational
Developments, Januar 2012 [11] Dorothy Graham, Erik van Veenendaal, Isabel Evans, Rex Black, Foundations of
Software Testing [12] Joachim Rossberg, Mathias Oluasson, Pro Application Lifecycle Management with
Visual Studio 2012, September 2012 [13] Satheesh Kumar N, Subashni S, Software Testing using Visual Studio 2012, 2013 [14] Mickey Gousset, Brian Keller, Martin Woodward, Professional Application Lifecycle
Management with Visual Studio 2012, 2012 [15] Microsoft Visual Studio. Dostopno na:
http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Visual_Studio_2013 [3. 3. 2015]
[16] Visual Studio – Defining a Test Plan. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/dd286581%28v=vs.110%29.aspx [3. 3. 2015]
[17] Martin Woodward, Brian Keller, Mickey Gousset, Professional Application Lifecycle Management with Visual Studio 2012, September 2012
[18] Visual Studio – Choose a Process Template. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/ms400752%28v=vs.110%29.aspx [3. 3. 2015]
[19] Visual Studio – Guidance for Creating Test Plans and Test Suites. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/ff972304%28v=vs.110%29.aspx [7. 3. 2015]
[20] Visual Studio – Microsoft Test Manager vs Microsoft Visual Studio Test Professional 2013. Dostopno na: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3c823d1c-9b60-4e0a-846d-5e149fce5240/microsoft-test-manager-vs-microsoft-visual-studio-test-professional-2013?forum=vstest [12. 3. 2015]
[21] Larry Brader, Howie Hilliker, Alan Cameron Wills, Testing for Continuous Delivery with Visual Studio 2012, 2012
[22] Visual Studio – Load test in the cloud. Dostopno na: https://www.visualstudio.com/get-started/test/load-test-your-app-vs [12. 3. 2015]
[23] Windows Dev Center – Get started with Windows apps. Dostopno na: https://dev.windows.com/en-us/getstarted [20. 3. 2015]
[24] Visual Studio – Standard lab environments. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/ee390842.aspx [1. 4. 2015]
93
[25] Visual Studio – Work in Team Web Access. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/ee523998.aspx [5. 4. 2015]
[26] DotNetCurry – Testing with Team Web Access using Visual Studio 2013. Dostopno na: http://www.dotnetcurry.com/showarticle.aspx?ID=951 [15. 4. 2015]
[27] Visual Studio – What's new in testing the application in Visual Studio 2013. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/dn268304.aspx [15. 4. 2015]
[28] Visual Studio - Testing your application using Microsoft Test Manager. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/jj635157.aspx [20. 4. 2015]
[29] Visual Studio – Run manual tests with Microsoft Test Manager. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/dd293545.aspx [24. 4. 2015]
[30] Visual Studio – Testing Windows Store apps. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/hh405417.aspx [10. 5. 2015]
[31] TutorialsPoint – SDLC - V-Model. Dostopno na: http://www.tutorialspoint.com/sdlc/sdlc_v_model.htm [15. 5. 2015]
[32] Unit testing. Dostopno na: http://www.softwaretestingmentor.com/test-levels/unit-testing/ [18. 5. 2015]
[33] Seven Reasons IT Projects Fail. Dostopno na: http://www.ibmsystemsmag.com/mainframe/tipstechniques/applicationdevelopment/project_pitfalls/?page=3 [25. 7. 2015]
[34] 10 Reasons that Lead to Software Project. Dostopno na: Failurehttps://www.outsource2india.com/software/SoftwareProjectFailure.asp [25. 7. 2015]
[35] Quality Assurance and Project. Dostopno na: Managementhttp://itknowledgeexchange.techtarget.com/quality-assurance/what-is-a-testing-environment-for-software-testing/ [26. 7. 2015]
[36] Application lifecycle management. Dostopno na: https://en.wikipedia.org/wiki/Application_lifecycle_management [28. 7. 2015]
[37] Microsoft Visual Studio. Dostopno na: https://en.wikipedia.org/wiki/Microsoft_Visual_Studio [29. 7. 2015]
[38] Visual Studio Lab Management. Dostopno na: https://en.wikipedia.org/wiki/Visual_Studio_Lab_Management [30. 7. 2015]
[39] Microsoft-Team Foundation Team Projects. Dostopno na: https://msdn.microsoft.com/en-us/library/ms181234%28v=vs.90%29.aspx [1. 8. 2015]
[40] Tutorialspoint-Test Plan. Dostopno na: http://www.tutorialspoint.com/software_testing_dictionary/test_plan.htm [4. 8. 2015]
[41] Wikipedia-Test Suite. Dostopno na: https://en.wikipedia.org/wiki/Test_suite [4. 8. 2015]
[42] Visual Studio-Testing the Application. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/ms182409(v=vs.110).aspx [4. 8. 2015]
[43] Visual Studio –What's new in testing the application. Dostopno na: http://msdn.microsoft.com/en-us/library/vstudio/dn268304.aspx [15. 8. 2015]
[44] Visual Studio-Standard lab environments. Dostopno na: http://msdn.microsoft.com/en-us/library/vstudio/ee390842.aspx [20. 8. 2015]
[45] Visual Studio-Testing Windows Store apps. Dostopno na: https://msdn.microsoft.com/en-us/library/vstudio/hh405417%28v=vs.120%29.aspx [20. 8. 2015]
[46] SEER-Software Project Failure Costs Billions. Better Estimation & Planning Can Help. Dostopno na: http://galorath.com/wp/software-project-failure-costs-billions-better-estimation-planning-can-help/ [29. 8. 2015]
94
[47] Sam Guckenheimer, Neno Loje, Visual Studio Team Foundation Server 2012: Adopting Agile Software Practices, September 2012
[48] Test Plan. Dostopno na: http://softwaretestingfundamentals.com/test-plan/ [3. 3. 2016] [49] Load Testing. Dostopno na: https://en.wikipedia.org/wiki/Load_testing [4. 3. 2016] [50] Microsoft Developer Network-Verifying Code by Using UI Automation. Dostopno na:
https://msdn.microsoft.com/en-us/library/dd286726(v=vs.120).aspx [4. 3. 2016] [51] Microsoft Developer Network- Creating an Automated Test That Runs an Executable
Using Generic Tests. Dostopno na: https://msdn.microsoft.com/enus/library/dd286732(v=vs.120).aspx [7. 3. 2016]
[52] SlideShare-Test Case Management with MTM 2013. Dostopno na: http://www.slideshare.net/RalucaSuditu1/test-case-management-with-mtm-2013 [21. 3. 2016]
[53] Qatestable Blog- Definitions and Meaning: Error, Fault, Failure and Defect. Dostopno na: http://blog.qatestlab.com/2011/12/06/definitions-and-meaning-error-fault-failure-and-defect/ [4. 5. 2016]
[54] IEEE Standard Glossary of Software Engineering Terminology. Dostopno na: http://dis.unal.edu.co/~icasta/ggs/Documentos/Normas/610-12-1990.pdf [15. 4. 2016]
[55] BCS-Standards For Software Testing. Dostopno na: http://www.bcs.org/content/ConWebDoc/12416 [15. 4. 2016]
[56] Integration testing. Dostopno na: https://en.wikipedia.org/wiki/Integration_testing [17. 4. 2016]
[57] Software Testing Fundamentals-Integration Testing. Dostopno na: http://softwaretestingfundamentals.com/integration-testing/ [17. 4. 2016]
[58] System Testing. Dostopno na: http://www.softwaretestingmentor.com/test-levels/system-testing/ [18. 4. 2016]
[59] Tester's World-Chapter 2.Testing throughout the software life cycle. Dostopno na: http://testingintellectuallab.blogspot.si/2012/05/istqb-exam-chapter-2.html [18. 4. 2016]
[60] TutorialsPoint-Syntax Testing. Dostopno na: http://www.tutorialspoint.com/software_testing_dictionary/system_testing.htm [19. 4. 2016]
[61] ISTQB Exam Certification- What is Acceptance testing? Dostopno na: http://istqbexamcertification.com/what-is-acceptance-testing/ [19. 4. 2016]
[62] Acceptance testing. Dostopno na: https://en.wikipedia.org/wiki/Acceptance_testing [19. 4. 2016]
[63] Software Testing Guide-Acceptance Testing. Dostopno na: http://www.software-testingguide.com/2012/01/acceptance-testing.html [19. 4. 2016]
[64] Development Model. Dostopno na: http://www.softwaretestingmentor.com/sdlc/iterative-development-model/ [19. 4. 2016]
[65] V-Model. Dostopno na: http://www.softwaretestingmentor.com/sdlc/vmodel/ [21. 4. 2016]
top related