Ծրագրային ապահովման փորձարկման 7 սկզբունքներ



  1. Թեստավորումը ցույց է տալիս թերությունների առկայությունը 
  2. Սպառիչ փորձարկում հնարավոր չէ
  3. Վաղ թեստավորում
  4. Defect clustering
  5. Թունաքիմիկատների պարադոքս
  6. Կոնտեքստից կախված թեստավորում
  7. Սխալի բացակայություն



Թեստավորումը ցույց է տալիս թերությունների առկայությունը


Թեստավորման նպատակը application-ը ձախողելն է: Բավարար թեստավորումները նվազեցնում են թերությունների առկայությունը:
Այն դեպքում, երբ թեստավորողները չեն կարողացել հայտնաբերել թերություններ
regression թեստերից հետո, չի երաշխավորում, որ application-ը զերծ է բագերից:
Թեստավորումը մեզ ցույց է տալիս բագի առկայությունը, այլ ոչ թե դրա բացակայությունը։



Սպառիչ փորձարկում հնարավոր չէ


Ի՞նչ է սպառիչ փորձարկումը:
Սպառիչ փորձարկումը բոլոր ֆունկցիաների փորձարկումն է՝ օգտագործելով բոլոր
valid եւ invalid մուտքերն ու նախապայմանները:

Ինչո՞ւ է անհնար հասնել սպառիչ թեստինգի:
Ենթադրենք, պետք է փորձարկել մուտքային դաշտ, որն ընդունում է տարիք՝ 18-20։
Մենք փորձարկում ենք դաշտը՝ օգտագործելով 18,19,20:
Եթե նույն մուտքային դաշտը ընդունում է 18-ից 100-ի սահմանները, ապա մենք պետք է փորձարկենք ՝ օգտագործելով այնպիսի մուտքեր, ինչպիսիք են` 18, 19, 20, 21,..., 99, 100:
Սա սովորական օրինակ է, եւ կարելի է մտածել,որ հնարավոր է հասնել դրան՝
օգտագործելով ավտոմատացման գործիքներ: Բայց եթե դաշտն ընդունի մի քանի
միլիարդ արժեքներ, հնարավոր չէ ստուգել բոլոր հնարավոր արժեքները ժամանակի սղության եւ սահմանափակումների պատճառով:
Այսպիսով, պետք է գտնել օպտիմալ քանակ՝ հիմնված application–ի ռիսկերի գնահատման (risk assessment) վրա: Tester-ը պետք է գտնի այն հատվածները, որտեղ bug-երի հավանականությունն ավելի մեծ է: Եվ քանի որ բոլոր դեպքերը քննարկել հնարավորչէ,կիրառվում է boundary testing-ը:

Իսկ ինչպե՞ս է իրականացվում ռիսկերի գնահատումը:

Օրինակ՝
Ո՞ր գործողությունը ամենայն հավանականությամբ կդառանա համակարգի
խափանման պատճառ.


  1. MS Word բացելը
  2. Internet Explorer բացելը
  3. Միաժամանակ 10 graphics app բացված լինելը


OS- ի փորձարկման ժամանակ կարելի է նկատել, որ defect-ները հիմնականում
գտնվում են multi-tasking activity-ներում:



Վաղ թեստավորում


Թեստավորումը պետք է սկսվի հնարավորինս շուտ, որպեսզի առկա խնդիրները բացահայտվեն Software Development Life Cycle-ի վաղ փուլերում։

Software Testing Life Cycle-ի վաղ փուլերում հայտնաբերված թերությունները շտկելն ավելի էժան է։ Այսպիսով, վաղ փորձարկումների անցկացումը նվազեցնում է թերությունների շտկման ծախսերը։



Defect clustering


Հայտնաբերված defect-ների մեծ մասը գտնվում են փոքր թվով մոդուլների մեջ՝ մոտավորապես 80% bug-երը գտնվում են 20% մոդուլներում: Ըստ փորձի կարելի է որոշել այդպիսի ռիսկային մոդուլները, բայց այս մոտեցման մեջ խնդիրն այն է, որ նույն test-ը մի քանի անգամ կրկնելու դեպքում նույն test case-երը bug-եր չեն գտնի:



Թունաքիմիկատների պարադոքս


Թունաքիմիկատների պարադոքսը Software testing-ի մեջ նույն թեստ քեյսերը կրկին ու կրկին կրկնելու գործընթացն է:
Գյուղատնտեսության մեջ միջատներին վերացնելու համար նույն թունաքիմիկատների խառնուրդի կրկնակի օգտագործումը ժամանակի ընթացքում հանգեցնում է նրան, որ միջատները զարգացնում են թունաքիմիկատների նկատմամբ դիմադրություն, որը հանգեցնում է դրանց անարդյունավետությանը միջատների վրա: Նույնը վերաբերում է Software testing-ին: Եթե կրկնվող փորձարկումների նույն շարքը կատարվի, մեթոդը անօգուտ կլինի նոր bug-եր հայտնաբերելու համար:
Այսպիսով, այս թունաքիմիկատների պարադոքսը հաղթահարելու համար անհրաժեշտ է պարբերաբար վերանայել թեստ քեյսերը եւ ավելացնել կամ թարմացնել դրանք՝ ավելի շատ թերություններ հայտնաբերելու համար:



Կոնտեքստից կախված թեստավորում


Թեստավորման մոտեցումը կախված է application-ի կոնտեքստից: Մենք թեստավորում ենք տարբեր application-ներ տարբեր ձեւերով : Օրինակ առցանց բանկային կայքը
պահանջում է փորձարկման այլ մոտեցում ՝ ի տարբերություն էլեկտրոնային առեւտրի կայքի :



Սխալի բացակայություն


99%-ով բագերից զերծ application-ը կարող է դեռեւս անօգուտ լինել, եթե ներառվել են սխալ պահանջներ, եւ software- ը չի բավարարում բիզնես կարիքները: Այն ծրագիրը, որը մենք կառուցում ենք, ոչ միայն պետք է լինի 99% բագերից զերծ, այլեւ պետք է բավարարի բիզնես կարիքները, հակառակ դեպքում այն կդառնա անօգուտ ծրագիր:




Օգտակար հղումներ`
7 Principles of Software Testing /video tutorial/eng
Software Testing Principles /video tutorial/rus
Software Testing Principles /video tutorial/rus
7 Principles of Software Testing /article/eng
7 Principles of Software Testing /article/eng

Բովանդակություն