Paaripõhine testimine: erinevate testikombinatsioonide optimaalse katvuse saavutamine

Inimene püüab end alati ümbritseda kvaliteetseid asju. Riietu ilusatesse ja praktilistesse riietesse, söö looduslikke tooteid, sõida töökindel auto– kas see pole mitte igaühe loomulik soov? IN see nimekiri võime julgelt lisada ja .

Mis on "kvaliteet" tarkvara"? See on toode, mis täidab ettenähtud ülesandeid ja vastab kasutaja ootustele. Selle tulemuse saavutamiseks läbib iga programm esmalt testimise ja alles seejärel jõuab lõppkasutaja kätte. Kuna testimise ajaraamid (nagu iga protsess) kipuvad lähenema lõpmatusele, vajame protsessi pädevat kavandamist. Ja siin ei saa te ilma katsekujunduseta hakkama.

Testidisainer – mis loom see on ja millega sa teda sööd?

Testi disain– see on tarkvara testimisprotsessi etapp, kus testjuhtumid (testjuhtumid) kavandatakse ja luuakse vastavalt eelnevalt määratletud kvaliteedikriteeriumidele ja testimiseesmärkidele. Sellest lähtuvalt on testidisainer töötaja, kelle kohustuste hulka kuulub optimaalset tagavate testjuhtumite komplekti loomine testi katvus rakendusi.

6. Domeeni analüüsi testimine.
See meetod põhineb muutuja (või muutujate) võimalike väärtuste vahemiku jagamisel alamvahemikeks (või domeenideks), seejärel valitakse igast domeenist testimiseks üks või mitu väärtust. Domeeni testimine kattub paljuski tehnikatega, mida me teame ekvivalentsusklassideks jaotamise ja piirväärtuste analüüsimise kohta. Kuid domeeni testimine ei piirdu loetletud tehnikatega. See hõlmab nii muutujatevaheliste sõltuvuste analüüsi kui ka suure riskiga muutujate väärtuste otsimist (mitte ainult piiridel).

7. Kasutage juhtumitesti.
Kasutusjuhtum kirjeldab kahe või enama osaleja (tavaliselt kasutaja ja süsteemi) interaktsiooni stsenaariumi. Kasutajaks võib olla kas inimene või mõni muu süsteem. Testijate jaoks on kasutusjuhtumid suurepärane alus teststsenaariumide (testjuhtumite) loomiseks, kuna need kirjeldavad konteksti, milles iga kasutaja toiming tuleks läbi viia. Kasutusjuhtumid on vaikimisi testitavad nõuded, kuna need näitavad alati eesmärki, mis tuleb saavutada, ja samme, mida selle saavutamiseks tuleb korrata.

Mis siin mõelda, tuleb raputada!

Nagu tuntud määratlus ütleb, programmeerimine on mõtlemine, mitte tippimine . Autor on üsna kindel, et sama võib öelda ka testimise kohta. Miks meil siis testidisainereid vaja on? Miks raisata aega analüüsile ja disainile, kui saate seda kasutada hulga täiendavate katsete tegemiseks?

Ülaltoodud näidetest on selge, et disaini kasutamine võimaldab meil oluliselt vähendada testide arvu, samuti keskenduda kõige haavatavamatele ja olulisematele funktsionaalsusvaldkondadele. Pole asjata, et paljud ettevõtted ei võta nüüd kasutusele mitte ainult "testidisaineri" või "testianalüütiku" eraldi ametikohti, vaid koolitavad neid ka spetsiaalseteks.

Tõepoolest: mis mõte on näiteks autoriseerimisvormi täielikult testida, kui e-poes kauba eest maksmise mehhanism korralikult ei tööta? Lõppude lõpuks, kui tester kontrollib 100 testiga 100 väärtust, siis testi kujundaja mõtleb välja, kuidas kontrollida 10 testiga 1000 väärtust! Seega tasub katsete kavandamisele kulutatud jõupingutused testimise kvaliteedi osas enam kui ära.

Kuigi moesõna “paaris” pole enam nii populaarne kui varem, esitatakse intervjuudes endiselt küsimus, mis see testikujunduse tehnika endast kujutab. Kõik testijad (nii intervjuule tulijad kui ka selle läbiviijad) ei suuda aga küsimusele selgelt vastust sõnastada, Milleks vajame kombinatoorseid tehnikaid üldiselt ja eriti paarikaupa (valdav enamus vigu on siiski aatomiparameetrite väärtustel ja ei sõltu teistest). Lihtne vastus sellele küsimusele on minu arvates leida vead, mis tekivad parameetrite vaheliste otseste ja kaudsete sõltuvuste tagajärjel. Sest lihtsad juhtumid tehnikatest ei ole tõenäoliselt märkimisväärset kasu, kuna neid saab käsitsi kontrollida suur number parameetrite ja nendevaheliste keeruliste sõltuvuste tõttu on testide arv suure tõenäosusega käsitsi testimiseks liiga suur. Seetõttu on kombinatoorsete tehnikate (ja vastavalt ka parameetrite kombinatsioone genereerivate tööriistade) peamiseks rakenduseks testandmete kogumite automatiseeritud koostamine vastavalt teatud seadustele.

Enamik kombinatoorsete testide genereerimise tööriistu suudavad anda tulemuse andmefailina, mille saab edastada sisendina vastavatele automaattestidele. Sellist näidet (kasutades PICT-tööriista) käsitletakse allpool.

Näide 1. Seeria ja passi number

Kasutatav automatiseeritud testimine seeria ja passinumbri jaoks saate luua ammendava positiivsete testide komplekti, kuna selle välja nõuded on ranged - täpselt kaks suured tähed Ukraina tähestik (v.a Ґ, Ї, b) ja kuus numbrit 0 kuni 9. Kokku tuleb (33-3) 2 *10 6 = 9*10 8 sellist testi. Siiski on harva juhtumeid, kus välinõuded on nii ranged, ja on ebatõenäoline, et põhjalikku testimist on vaja. Tõenäoliselt piisab, kui kontrollida iga üksiku tähe ja iga üksiku numbri sisestamise võimalust igas kohas. Selliste testide koostamise ülesannet saab hõlpsasti lahendada kombinatoorse testimise tööriistaga:
SERIES_1: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T, U, F, X, C, CH, W, SH, Y, I SERIES_2: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T ,U,F,X,C,H,W,SH,Y,Y NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4 ,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8 ,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 (SERIES_1, SERIES_2, NUMBER_1 , NUMBER_2, NUMBER_3, NUMBER_4, NUMBER_5, NUMBER_6) @ 1 Mudel 1
Ш 4 6 3 1 1 5 И Є 8 3 8 9 9 3 А Н 3 0 5 8 6 2 М С 4 3 4 1 3 1 И И 4 6 7 3 1 4 ГЦ 5 0 204

Negatiivseid teste saab luua sarnaselt (PICT võimaldab neid märkida eriline tegelane "~").
SERIES_1: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T, U, F, X, C, CH, W, SH, Y, I SERIES_2: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T ,U,F,X,C,H,Sh,Sh,Y,Y NUMBER_1: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~ D,~E,~F NUMBER_2: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_3: 0, 1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_4: 0,1,2,3,4,5,6 ,7,8,9,~A,~B,~C,~D,~E,~F NUMBER_5: 0,1,2,3,4,5,6,7,8,9,~A,~ B,~C,~D,~E,~F NUMBER_6: 0,1,2,3,4,5,6,7,8,9,~A,~B,~C,~D,~E, ~F Mudel 2
ZU 1 3 7 2 7 4 L Y ~B 7 3 2 7 9 A Є 8 8 2 0 ~ A 8 Osa simulatsiooni tulemustest

Näide 2. Testi ulatuse suurendamine lisaparameetri abil

Mõnikord sõltuvad valideerimisega seotud vead sellest, kuidas kasutaja sisestab kehtetuid andmeid: klaviatuurilt (füüsiliselt või ekraanilt), kasutades kontekstimenüü kopeeri-kleebi, kiirklahvid, valitud teksti lohistamine. Näiteks sageli ei töödelda teksti pukseerimist kliendipoolse valideerimisega, kui sel viisil sisestatakse valed andmed. Sisestusmeetodi saab mudelisse sisestada kui lisaparameeter ja sellega autotestide koostamisel arvestada.
SERIES_1: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T, U, F, X, C, CH, W, SH, Y, I SERIES_2: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T ,U,F,X,C,H,W,SH,Y,Y NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4 ,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8 ,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 SISEND: klaviatuur, ekraaniklahvid , kontekstimenüü, kopeeri kleebi, pukseeri Mudel 3
M L 0 8 0 8 5 9 klaviatuur Y U 0 0 2 3 2 2 lohistamine ja pukseerimine S Ch 5 3 6 2 1 0 ekraaniklahvid Y D 3 9 4 1 6 7 kontekstimenüü U Sh 9 9 0 7 4 4 kopeeri ja kleebi Osa simulatsiooni tulemustest

Näide 3. Otsustussüsteemide testid, nõuete valideerimine

Otsustussüsteemide jaoks koostatakse mõnikord ammendavaid testjuhtumeid, mida saab seejärel kasutada mitte ainult testimiseks, vaid ka nõuete kinnitamiseks. Rakendades süsteemi reegleid järjestikku igale testile, näete, kas saadakse ebajärjekindlaid tulemusi.

Nõuete valideerimine on testimise väga oluline osa sel juhul, kuna on võimalik avastada varjatud vastuolusid. Kombinatoorse testi genereerimise tööriist võimaldab teil mitte ainult teste luua, vaid ka sisendandmetele seatud tingimusi seada. Kui need tingimused muudavad mõne võimaliku teabe kättesaamatuks, annab tööriist sellest märku, mis võib olla signaal järjepidevuse nõuete hoolikaks kontrollimiseks.
VANUS: 0-17, 18-21, 22-65, >=66 LAPSED: Y, N SUITSEERIMINE: Y, N TÖÖ: 0-5, 6-10, >=11 (vanus, LAPSED, SUITSEERIMINE, TÖÖ) @ 4 KUI = "0-17", SIIS<>">=11"; KUI =">=11" SIIS = "0-17"; Mudel 4
Piirangute hoiatus: piiravad piirangud. Väljund ei sisalda järgmisi väärtusi WORK: >=11 Tööriista vastus vastuolulistele nõudmistele

Sellel mudelil on vastuolulised nõuded, mis katkestavad WORK väärtuse: >=11, ja seda ei kuvata üheski testis. Kahjuks ei vasta tööriist küsimusele, millised tingimused põhjustavad vastuolu, vaid näitab vaid, milline väärtus on testidest välja jäetud. Sellest teabest võib siiski piisata, et tuvastada kogu piirangute hulgast need, mis seda parameetrit mõjutavad, ja analüüsida nende vastuolusid.

Põhjus-tagajärg testi kavandamise tehnika jaoks saab hiljem kasutada ammendavat testide komplekti.

Näide 4. Konfiguratsiooni testimise keskkonnaparameetrite moodustamine

Kombinatoorsed testimise tööriistad võimaldavad teil luua ka võimalike konfiguratsioonide loendi, mida saab seejärel sorteerida kasutuse populaarsuse järgi, kõrvaldada need, mis ei sobi jne. Kui te ei pea iga konfiguratsiooni jaoks kõiki teste käivitama, saate need valitud keskkondade vahel ühtlaselt jagada, lisades keskkonna teise parameetrina testandmete genereerimiseks (nagu tehti andmesisestusmeetodi näites).
BRUSSEER: IE, Firefox, Chrome, Opera KEEL: en, ru, ua OS: win, linux, android (BRUSER, LANG, OS) @ 1 IF = "linux" SIIS<>"IE"; Mudel 5
IE ua win Firefox et win Opera ua linux Chrome ru android Simulatsiooni tulemused

SERIES_1: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T, U, F, X, C, CH, W, SH, Y, I SERIES_2: A, B, C, D, E, E, E, F, Z, I, J, K, L, M, N, O, P, R, S, T ,U,F,X,C,H,W,SH,Y,Y NUMBER_1: 0,1,2,3,4,5,6,7,8,9 NUMBER_2: 0,1,2,3,4 ,5,6,7,8,9 NUMBER_3: 0,1,2,3,4,5,6,7,8,9 NUMBER_4: 0,1,2,3,4,5,6,7,8 ,9 NUMBER_5: 0,1,2,3,4,5,6,7,8,9 NUMBER_6: 0,1,2,3,4,5,6,7,8,9 KESKKOND: IE ua win, Firefox en win, Opera ua linux, Chrome ru android Mudel 6

Näide 5. Mitme testi koostamine, võttes arvesse suurt hulka piiranguid

Muidugi saab kombinatoorset testimist kasutada ka käsitsi sooritatavate testide genereerimiseks, kuid mulle tundub, et seda tuleks teha ainult siis, kui suur hulk piiranguid, mida on raske meeles pidada. Tingimuste olemasolu tõttu saab katsete arvu nii-öelda loomulikult piirata ja tööriist võimaldab teil hankida kõik võimalikud testiandmed, mis vastavad kõigile neile kehtestatud tingimustele. Teste saab aga teha ka käsitsi.
VANUS: 0-17, 18-21, 22-65, >=66 LAPSED: 0, 1, 2, 3, 4, 5 SUITSEERIMINE: Y, N TÖÖ: 0-5, 6-10, >=11, KUI = "0-17" SIIS<>">=11"; KUI = "0-17", SIIS = 0; KUI = "18-21", SIIS< 2; IF >0 SIIS = "N"; KUI = ">=66" SIIS<>"0-5"; KUI = "0-17" VÕI = "18-21", SIIS = "0-5"; Mudel 6
22-65 2 N 0-5 18-21 1 N 0-5 >=66 2 N 6-10 22-65 4 N 6-10 22-65 5 N 6-10 22-65 3 N 6-10 >= 66 4 N >=11 22-65 5 N >=11 0-17 0 Y 0-5 >=66 3 N >=11 22-65 4 N 0-5 22-65 2 N >=11 18-21 0 Y 0-5 22-65 0 Y >=11 22-65 1 N 6-10 22-65 3 N 0-5 >=66 1 N >=11 0-17 0 N 0-5 >=66 0 Y 6 -10 >=66 5 N >=11 22-65 5 N 0-5 Simulatsiooni tulemused - 21 testi

Paaripõhine testimine on meetod testandmete kogumite genereerimiseks täiskomplekt sisestada andmeid süsteemi, mis võimaldab oluliselt vähendada testjuhtumite arvu.

Paaritestimise olemuse saab sõnastada järgmiselt: andmekogumite moodustamine, milles iga testitud parameetri iga testitud väärtus kombineeritakse vähemalt korra kõigi teiste testitud parameetrite iga testitud väärtusega.

Paaripõhise testimise peamised eesmärgid:

  • eemaldada üleliigsed tšekid;
  • pakkuda head testi katvust;
  • tuvastada suurim arv vead minimaalsel testide komplektil.

Vaatame näidete abil paaripõhise testimise olemust lähemalt.

Näide 1

Kujutagem ette, et meil on parameetrid A, B ja C, mis võtavad väärtused Jah või Ei. Maksimaalne summa nende parameetrite väärtuste kombinatsioonid – 8. Kuid paaripõhise testimise korral piisab neljast kombinatsioonist, kuna kõik võetakse arvesse võimalikud paarid parameetrid (paar A ja B, paar B ja C, paar A ja C):

Näide 2

Oletame, et inimese jaoks arvutatakse mingi väärtus (näiteks maks) tema soo, vanuse ja laste olemasolu alusel – saame kolm sisendparameeter, millest igaühe jaoks valime testide jaoks mis tahes võimalikud väärtused. Näiteks: sugu – mees või naine; vanus – kuni 25, 25–60, üle 60; laste olemasolu - jah või ei. Arvutuste õigsuse kontrollimiseks võite loomulikult läbida kõigi parameetrite kõik väärtuste kombinatsioonid:

Põrand Vanus Lapsed
1 meeskuni 25pole lapsi
2 nainekuni 25pole lapsi
3 mees25-60 pole lapsi
4 naine25-60 pole lapsi
5 meesüle 60pole lapsi
6 naineüle 60pole lapsi
7 meeskuni 25Kas teil on lapsi
8 nainekuni 25Kas teil on lapsi
9 mees25-60 Kas teil on lapsi
10 naine25-60 Kas teil on lapsi
11 meesüle 60Kas teil on lapsi
12 naineüle 60Kas teil on lapsi

Või võite otsustada, et te ei pea kontrollima kõigi parameetriväärtuste kombinatsioone kõigiga, vaid veenduge ainult, et kõik unikaalsed parameetriväärtuste paarid oleksid kontrollitud. Näiteks soo- ja vanuseparameetrite seisukohalt peame veenduma, et kontrollime täpselt alla 25-aastast meest, 25-60-aastast meest, 60-aastast meest, samuti alla 25-aastast naist, naist 25 ja 60 vahel ja ka naine peale 60. Ja samamoodi kõigi teiste parameetripaaride puhul. Ja seega saame palju vähem väärtuste komplekte (need sisaldavad kõiki väärtuspaare, kuigi mõned kaks korda):

Põrand Vanus Lapsed
1 meeskuni 25pole lapsi
2 nainekuni 25Kas teil on lapsi
3 mees25-60 Kas teil on lapsi
4 naine25-60 pole lapsi
5 meesüle 60pole lapsi
6 naineüle 60Kas teil on lapsi

Näide 3

On kaks Opera brauser ja Firefox. Seal on kaks operatsioonituba Windowsi süsteemid ja Linux. Siin pole midagi vähendada, kuna neid saab kombineerida 4 konfiguratsiooniks:

Brauser OS
1 OoperWindows
2 FirefoxLinux
3 OoperLinux
4 FirefoxWindows

Oletame, et sait on kahes keeles: vene (RU) ja inglise (EN). Täieliku katse jaoks korrutame need 4 konfiguratsiooni 2-ga, st. kontrollige iga eelmist konfiguratsiooni mõlemas keeles. Aga miks? Selle asemel kasutame paaripõhist lähenemist ja 8 konfiguratsiooni asemel saame jälle 4:

Brauser OS Keel
1 OoperWindowsRU
2 FirefoxLinuxRU
3 OoperLinuxET
4 FirefoxWindowsET

Lisaks saab sait andmebaasina kasutada MySQL-i, Oracle'i ja MSSQL-i. Paaripõhise testimise abil saame 7 konfiguratsiooni (ja mitte 12 - eelmine 4x3 ja eriti mitte 24 = 2x2x2x3). Kuid siin tasub jälle mõelda, kas on oluline kontrollida iga andmebaasi koos teiste parameetritega. Ilmselgelt mitte. Oluline on näiteks vaadata, kuidas iga andmebaas iga keelega töötab. Seega saame piirangute kehtestamisega 7 konfiguratsiooni asemel 6 konfiguratsiooni (3 alust x 2 keelt):

Brauser OS Keel Andmebaas
1 OoperWindowsRUMySQL
2 FirefoxLinuxETMySQL
3 OoperLinuxETMSSQL
4 FirefoxWindowsRUMSSQL
5 OoperLinuxRUOraakel
6 FirefoxWindowsETOraakel

Näide 4
Paaripõhise testimise põhiprintsiip on see, et enamikul juhtudel ei ole vaja teha täisfaktorilist katset (st itereerida kõigis konfiguratsioonides, kus kõigi parameetrite väärtused vastavad üksteisele). Ja see on sageli ressursside puudumise tõttu võimatu. Seetõttu deklareeritakse, et tarkvara toimimise kontrollimisest piisab, kui iga parameetri iga väärtus vastab vähemalt korra iga teise parameetri väärtusele.
Oletame, et peate tekstitöötlusprogrammis testima fondiakna parameetrite seadete kombinatsioone:

Oletame, et vead on võimalikud parameetrite kombinatsioonide tõttu. Kui palju teste on vaja kõigi väärtuste katmiseks?
Võtame selle testimiseks järgmised parameetrid ja nende tähendused:

Parameeter Väärtus 1 Väärtus 2 Väärtus 3 Väärtus 4
Font TTArial
Stiil RegulaarneKursiivJulgePaks kaldkiri
Suurus minnormaalnemax
Värv mustvalgepunane
Allajoonimise stiil mitte ühtegiainult sõnadmuud
Läbikriipsutatud pealväljas
Kahekordne läbikriipsutus pealväljas
Ülemine indeks pealväljas
Alamindeks pealväljas
Vari pealväljas
Kontuur pealväljas
Reljeef pealväljas
Graveerida pealväljas
Väikesed korgid pealväljas
Kõik suurtähed pealväljas
Peidetud pealväljas

2 * 4 * 3 * 3 * 3 * 2^11 = 442 368.


Seega võimaldab meetod “Kõik paarid” kontrollide arvu oluliselt vähendada.

2. Tööriistad

Koostamine nõutavad kombinatsioonid andmed pole sageli just kõige lihtsam ülesanne, kuid õnneks on nende lahendamiseks palju tööriistu. erinevad tasemed kvaliteet.

IN seda materjali tööriist vaadatakse üle PICT (Paaripõhine sõltumatu kombinatoorne testimine– Microsofti paaripõhise testimise tööriist).

PICT võimaldab luua kompaktse testparameetrite väärtuste komplekti, mis esindab kõiki testjuhtumeid, et hõlmata kõikehõlmavat kombinatoorset parameetrit.

Kaaluge programmiga töötamist. Käivitage PICT käsurealt.


Programm võtab sisendiks lihtsat tekstifail parameetrite ja nende väärtustega, mida nimetatakse mudeliks, ning väljastab loodud teststsenaariumid.

Vaatleme programmi toimimist ülaltoodud näite 2 abil. Meil on järgmised parameetrid ja nende väärtused: sugu – mees või naine; vanus – kuni 25, 25–60, üle 60; laste olemasolu - jah või ei. Kui läbime kõik võimalikud väärtused, siis on stsenaariumide arv 12. Loome mudeli ja vaatame, mis tulemuse programm annab.

Mudel:


Kasutame mudelit PICT-s ja saame 6 katsestsenaariumi (12 asemel):


Erinevus pole nii märgatav, kuid parameetrite arvu või nende väärtuste suurenedes muutub see üha märgatavamaks.

Kujutagem ette, et meil on järgmised testimisparameetrid, mis on seotud kõvakettal partitsioonide loomise testimisega (näide on võetud PICT käsiraamatust):


7 * 7 * 2 * 3 * 8 * 2 = 4704

Neid on väga raske mõistliku aja jooksul testida. Uuringud näitavad, et kõigi võimalike väärtuste paaride testimine annab väga hea katvuse ja testjuhtumite arv jääb mõistliku piiridesse. Näiteks (Primary, FAT) on üks paar ja (10, aeglane) teine; üks testjuhtum võib hõlmata palju paare. Ülaltoodud parameetrite komplekti jaoks loob PICT kokku 60 testjuhtumit:

Samuti saate tavapärase konsooli väljundi asemel kasutada otseväljundit ja salvestada testjuhtumid MS Excelis:


Selle tulemusena luuakse see Exceli fail järgmise sisuga:

Kuid kõige huvitavamad on võimalused, mida PICT sellise stsenaariumi genereerimiseks pakub. Kõiki neid käsitletakse kasutusjuhendis hoolikalt. Siin on mõned neist:

  1. Saate määrata väärtuste rühmitamise järjekorra. Vaikimisi on järjekord 2 ja see loob väärtuste paaride kombinatsioonid (mis moodustab paaripõhise testimise). Kuid võite määrata näite 3 ja siis kasutatakse kolmikuid, mitte paare. Lihtsa mudeli maksimaalne järjekord on võrdne parameetrite arvuga, mis loob kõigist komplektidest võimalikud variandid.
  2. Saate rühmitada parameetreid alammudeliteks ja anda neile kombinatsioonide jaoks eraldi järjekorra. See on vajalik, kui teatud parameetrite kombinatsioone on vaja põhjalikumalt testida või kombineerida teistest parameetritest eraldi.
  3. Saate luua tingimusi ja piiranguid. Näiteks saate määrata, et üks parameetritest võtab teatud väärtuse ainult siis, kui mitu muud parameetrit omandavad soovitud väärtuse. See võimaldab teil katkestada tarbetute kontrollide loomise.
  4. Negatiivsete testjuhtumite kombinatsioonide loomisel saate näidata kehtetuid parameetriväärtusi.
  5. Kaalukoefitsiente kasutades saate programmile öelda, et ta eelistaks kombinatsioonide loomisel teatud väärtusi.
  6. Minimaalse testjuhtumite arvu saamiseks võite kasutada minimeerimisvalikut (käivitage programmi mitu korda, kasutades iga kord vähendatud arvu testjuhtumeid).

Kokkuvõtteks tahan öelda, et PICT-st piisab käepärane tööriist Sest kiire loomine testandmete kombinatsioonide komplekt, eriti kui on palju parameetreid, mis ei ole üksteisega tugevalt seotud (mis võimaldab mitte testida kõiki võimalikke valikuid). Siiski peate hoolikalt looma nõutav mudel et testi katvus oleks rahuldav.

3. Kus ja millal Pairwise testimist kasutatakse?

Meetod on efektiivne ainult arengu hilises staadiumis või täiendatud põhiliste funktsionaalsete testidega. Näiteks kui teete konfiguratsioonitesti, peaksite enne paaritestimist veenduma, et põhistsenaarium toimib kõigis operatsioonisüsteemid ah vaikeparameetritega (teostage Suitsu testimine (Suitsu testimine) või Ehitamise kinnitustest (Konstruktsiooni testimine)). See hõlbustab oluliselt tulevaste vigade lokaliseerimist, sest paaripõhise testimise ajal sisaldab üks test palju mittevaikeväärtustega parameetreid, millest igaüks võib põhjustada tõrke ja selle lokaliseerimine on sel juhul väga keeruline. Ja kui kooste testimine ebaõnnestub, peaksite lõpetama paaristestimise meetodi kasutamise, kuna paljud testid ebaõnnestuvad ja isegi ühe testi väljajätmine toob tavaliselt kaasa mitme paari kadumise ja meetodi kasutamise mõtte kaob.

Seetõttu tuleks meetodit kasutada ainult stabiilse funktsionaalsuse korral, kui praegused testid on juba oma tõhusust kaotamas.

Seega on Pairwise Testing spetsiaalne meetod testjuhtumite ettevalmistamise optimeerimiseks.

Paarwise testimise tehnika olemus ei ole kõigi väärtuste kõigi kombinatsioonide testimine, vaid kõigi väärtuste paaride testimine.

Mitte nii kaua aega tagasi (elage ja õppige) puutusin kokku mõistega "paarwise testing" (tõlgen selle otse kui "paarwise testimine", aga kasutaksin pigem ingliskeelset terminit), tekkis huvi ja otsustasin välja mõelda. mis see on. Olles kiiresti aru saanud, kuidas see uh… tehnika töötab, tekkis mul kohe küsimusi selle kasutamise põhjuste ja tähenduse kohta ning teisel päeval jõudsin lõpuks neile vastused leida. Otsustasin sellest kõigest kirjutada (see on pikk, aga lühemalt ei tulnud:().


Ütlen kohe, et oma rõõmuks ammutasin suurema osa selleteemalisest teabest Michael Boltoni ja James Bachi artiklitest koostöös Patrick Schroederiga. ja minu jaoks olulised inimesed uurimusliku testimise teemal. Teisalt, neile autoritele omasel (nagu mulle tundub) viisil ei kiideta artiklites tingimusteta, vaid püütakse kainelt hinnata. seda tehnikat, mis oli täpselt see, mida skeptilise mina ja minu küsimuste jaoks vaja oli.

1. Mis see on?

Kuna hakkasin kirjutama paaristestimisest, siis ilmselt peaksin proovima selgitada, mis on selle tehnika olemus. Ma pole kindel, kas ma suudan seda selgelt ja õigesti seletada, aga ma proovin sellegipoolest :)

Seega on paaripõhine testimine testandmete kogumite genereerimise tehnika. Olemuse saab sõnastada näiteks järgmiselt: andmekogumite moodustamine, milles iga testitud parameetri iga testitud väärtus kombineeritakse vähemalt korra kõigi teiste testitud parameetrite iga testitud väärtusega. See ei tundu väga selge (ja see pole tõsiasi, et see on õige), nii et võite proovida seda näitega selgitada :)

Oletame, et inimese jaoks arvutatakse mingi väärtus (maks) tema soo, vanuse ja laste olemasolu põhjal - saame kolm sisendparameetrit, millest igaühe jaoks valime testide jaoks mingil moel väärtused. Näiteks: sugu – mees või naine; vanus - kuni 25, 25 kuni 60, üle 60 aasta; laste saamine - jah või ei. Arvutuste õigsuse kontrollimiseks võite loomulikult läbida kõigi parameetrite kõik väärtuste kombinatsioonid:

korrus vanus lapsed
1 mees kuni 25 pole lapsi
2 naine kuni 25 pole lapsi
3 mees 25-60 pole lapsi
4 naine 25-60 pole lapsi
5 mees üle 60 pole lapsi
6 naine üle 60 pole lapsi
7 mees kuni 25 Kas teil on lapsi
8 naine kuni 25 Kas teil on lapsi
9 mees 25-60 Kas teil on lapsi
10 naine 25-60 Kas teil on lapsi
11 mees üle 60 Kas teil on lapsi
12 naine üle 60 Kas teil on lapsi

Või võite otsustada, et me ei soovi kõigi parameetriväärtuste kombinatsioone kõigiga, vaid tahame lihtsalt veenduda, et kontrollime kõiki unikaalseid parameetriväärtuste paare. See tähendab, et näiteks soo ja vanuse parameetrite osas tahame olla kindlad, et kontrollime täpselt alla 25-aastast meest, 25-60-aastast meest, 60-aastast meest, samuti alla 25-aastast naist, naist 25 ja 60 vahel ja nii edasi naine pärast 60. Ja täpselt sama kõigi teiste parameetripaaride puhul. Ja nii saame palju väiksemaid väärtuste komplekte (neil on kõik väärtuspaarid, kuigi mõned kaks korda):

korrus vanus lapsed
1 mees kuni 25 pole lapsi
2 naine kuni 25 Kas teil on lapsi
3 mees 25-60 Kas teil on lapsi
4 naine 25-60 pole lapsi
5 mees üle 60 pole lapsi
6 naine üle 60 Kas teil on lapsi

Selline lähenemine on umbkaudu paaripõhise testimise tehnika olemus – me ei testi kõikide väärtuste kõiki kombinatsioone, vaid testime kõiki väärtuspaare.

2. Mis on selles head?

Paaripõhisest testimisest rääkides võrreldakse seda kõige sagedamini kõigi võimalike väärtuskombinatsioonide otsimisega ning paaripõhise testimise üks peamisi eeliseid on see, et selle kasutamine annab palju väiksema arvu testikomplektid andmeid kui täieliku otsinguga, mis paljudel juhtudel on lihtsalt võimatu.

Tõenäoliselt võib ülaltoodud näite põhjal tunduda, et erinevus selle tehnika ja kõigi väärtuste loetlemise vahel pole nii suur. Kuid see on ainult nii väikese arvu parameetrite ja nende väärtuste korral ning mida rohkem neid on, seda suurem on erinevus. Oletame, et kui on 50 parameetrit, millest igaüks võib võtta 2 väärtust, siis täielikuks otsinguks on vaja kombinatsioone, mis on võrdne 2 astmega 50, st. 1 125 899 906 842 624 :) Ja paaristestimist kasutades saad hakkama vaid neljateistkümne kombinatsiooniga!

Muide, vajalike andmekombinatsioonide koostamine pole sageli just kõige lihtsam ülesanne, kuid õnneks on selle lahendamiseks palju tööriistu, erineva kvaliteediga ja (tasuta) :)

3. Miks paarid

Isiklikult tekkis selle tehnikaga tutvudes kohe küsimus - miks just paarid? Miks mitte väärtuste kolmikud või mingi "kvarteti testimine"? Kas sellisel lähenemisel on näiteks mingi matemaatiline õigustus või on see lihtsalt õhust välja tõmmatud?

Mul õnnestus leida järgmine seletus: kunagi ammu jõuti kellegi poolt reaalsete andmete põhjal tehtud analüüsi põhjal järeldusele, et enamiku vigade põhjuseks on kas üksikud väärtused või väärtuspaaride kombinatsioonid. (allikas). See kaalutlus oli ilmselt paaripõhise testimise väljatöötamise aluseks.

Põhimõtteliselt on põhjendus enam-vähem mõistlik, sest mingid uuringud on tehtud. Sellest selgitusest on aga ka selge, et see reegel ei vasta üheselt tõele ja see ei kehti kõikidel juhtudel. Lisaks tasub mõelda mõistele "enamik vigu" :)

4. Kuidas ja millal seda (mitte) rakendada

Loomulikult tuleb seda tehnikat kasutada just neil juhtudel, kui see on asjakohane.

Nüüd, kui meil on näiteks lihtsalt teatud arvu erinevate väljadega vorm, mille andmed lihtsalt andmebaasi salvestatakse, siis pole selle tehnika kasutamisel praktiliselt mingit mõtet, kuna andmed ei suhtle omavahel ( kuigi võib olla nüansse, Kuidas need andmed salvestatakse andmebaasi)! Paaripõhine testimine on meetod, mida tuleks kasutada spetsiaalselt juhul, kui suhtlemine väärtused (mitte-interakteeruvate jaoks - enamasti on see üsna lihtne eraldi kontroll iga parameetri kohta).

Interakteeruvate parameetrite all pean silmas eelkõige neid, mis mõjutavad tulemust mitte ainult oma individuaalsete väärtuste, vaid just omavaheliste kombinatsioonide kaudu. Muide, siin hea näide interaktsioonid – testkeskkonna valikute määratlemine, näiteks mitmest operatsioonisüsteemist, brauserist ja monitori eraldusvõimest.

Seega, kui probleemi parameetrid interakteeruvad, siis näib, et paaripõhine testimine oleks see suurepärane lahendus, mis säästab nii vaeva kui ka täielik testimine annab. Kuid loomulikult annab see tehnika üsna suure katvuse, kuid pole kaugeltki täielik - kui kolme, nelja või enama parameetri kombineerimisel ilmneb äkki viga, siis paaripõhisest testimisest ei pruugi abi olla (see sõltub teie õnnest). Heas mõttes peaks paaripõhise testimise kasutamisele eelnema testitava rakenduse analüüs, et teha kindlaks, kas konkreetsete parameetripaaride kombinatsioonide testimine on selle jaoks sobiv.

Igal juhul, kui te ei võrdle paaristestimist ammendava testimisega, on selge, et isegi selle tehnika kasutamine on üsna töömahukas. Ja muudel juhtudel võib olla parem testida mitut kõige sagedamini kasutatavate komplekti tõelised kasutajad selle asemel, et kulutada palju vaeva ja testida paljusid genereeritud komplekte, mis ei pruugi sisaldada tõeliselt populaarseid kombinatsioone.

5. Mida ma siis öelda tahtsin?

Nimetasin muidugi vaid paar-kolm, kuid on suur hulk kaalutlusi, mida tasub paarilise testimise tehnika kasutamise otsustamisel arvestada – tasub vähemalt viidata eelpool mainitud artiklitele (need on üldiselt väärt lugege, kui teil on selle teema vastu huvi). Ja paaripõhine testimine on lihtsalt tööriist, mida tuleb sarnaselt teiste tööriistadega mõistlikult kasutada.