Թեստի ձևավորումն այն ծրագրաշարի փորձարկման գործընթացն է, որի հիման վրա նախագծվել և ստեղծվել են թեստային դեպքեր (փորձարկման դեպքեր) ՝ նախապես սահմանված որակի չափանիշներին և փորձարկման նպատակներին համապատասխան։ Այսօր ծրագրային ապահովման փորձարկումը ապրանքի ստեղծման կարևոր գործընթացներից մեկն է։ Կարևոր չէ, թե որ մեթոդաբանությունն է, մոտեցումը, գործընթացը, ծրագրաշարի փորձարկումը, որն օգտագործում եք, այնուամենայնիվ, միշտ առկա է ձեր գործընթացում։ Վերջին տարիներին (և գուցե նույնիսկ մեկ տասնամյակ) ծրագրային ապահովման փորձարկումները վերաճել են ՏՏ-ի առանձին ոլորտի, որը անընդհատ զարգանում է համաշխարհային հանրության շրջանում։ Այժմ ձեռնարկի փորձարկողի մասնագիտությունը ամենատարածված ՏՏ գործընթացներից մեկն է և տեղեկատվական տեխնոլոգիաների ոլորտի ապահովման ամենահեշտ ձևերից մեկը։ Քանի որ սկզբնական փուլում ձեռնարկի փորձարկողի մասնագիտությունը չի պահանջում հատուկ գիտելիքներ և հմտություններ։ Թեստավորողի համար հիմնական «գիտելիքը» «ոչնչացնելու» և վերլուծական մտածողությունը։ Եվ ամենակարևորը `ունենալ ոչ ստանդարտ մտածելակերպ, գտնել խնդիրների չնչին լուծումներ։

Hard skills Դուք միշտ կարող եք դասավանդել, բայց ցավոք,soft skills շատ դժվար է դասավանդել, քանի որ սա մարդու բնավորությունն է, նրա վերաբերմունքը ինչ-որ բանի և այլն։ 
Եթե հաշվի առնենք փորձարկման տեխնիկական առանձնահատկությունները, որը պետք է իմանա ձեռնարկի փորձարկիչը, ապա դրանք կարելի է բաժանել 2 հիմնական մասի - թեստավորման նախապատրաստում և թեստավորման կատարում։ 
Մեզ անհրաժեշտ են թեստային նախագծման տեխնիկա `թեստավորման համար վավերականությունները ճիշտ ճանաչելու համար։ 

```
Ընդհանուր ընդունված չափանիշներ և պրակտիկա, թեստի ձևավորման նպատակներն են.                                                                          
1)Թեստավորման պահանջների և ռիսկերի վերլուծություն
2)Թեստերի ստուգում սահմանելը
3)Ստուգումների սցենարների տեսքով ձևակերպում
4)Ստուգումների առաջնահերթություն
5)Փորձարկման մոտեցումների սահմանում                                                                                                                  
```

Համարժեքության դասը մուտքային (կամ ելքային) ծրագրային ապահովման տվյալների մի շարք է, որը ծրագրի կողմից մշակվում է մեկ ալգորիթմի համաձայն կամ հանգեցնում է մեկ արդյունքի:Այսինքն ՝ սա արժեքների որոշակի շարք է, որը դուք կարող եք փոխարինել ծրագրում և ստանալ նույն արդյունքը։ Արդյունքը կարող է լինել ոչ միայն հատուկ արժեքներ, ծրագրի գործողություններ, այլև պարզապես շրջանակ։ Հետևաբար, համարժեքության համարժեքության դասերը, որոնցում բաժանվում են թեստերը, 2 հիմնական դաս են ՝ դրական և բացասական սցենարներ:Նրանք միշտ այնտեղ են։ Յուրաքանչյուր թեստեր ստուգումները բաժանում է այս դասերի, բայց ոչ յուրաքանչյուր փորձարկող գիտի, թե ինչու է դա անում։ Պատասխանը համարժեքության դասեր են:Ավելին, յուրաքանչյուր համարժեք դաս կարելի է բաժանել լրացուցիչ դասերի և այլն։ մինչև ստուգումները կհանգեցնեն կետային և հատուկ թեստային արդյունքների։ Քննենք մի օրինակ. 
Վարկանիշային համակարգը հաշվարկում է հաճախորդի համար վարկի տոկոսադրույքը `ելնելով նրա տարիքից, որը մուտքագրվում է ձևով.

```
1)18-ից 25 տարեկան `18%
2)25-ից 45 տարեկան `16%
3)45 տարիների ընթացքում `20%                                                                                                                                  Մենք սահմանում ենք 2 հիմնական դաս. դրական և բացասական սցենարներ։                                                                                      
Դրական սցենարները կլինեն բոլոր արժեքները, որոնք հանգեցնում են արդյունքի, բացասական սցենարները կլինեն այնպիսի արժեքներ, որոնց արդյունքները չեն նկարագրված որպես սպասվող արդյունք։                                                                                                                            Հաջորդը, մենք դրական սցենարների դասը բաժանում ենք 18-24, 25-44 և 45 + մուտքային արժեքների 3 դասի:Բացասական սցենարների դասարանում մենք ձևավորում ենք արժեքներ ՝ հիմնվելով ծրագրի ձախողումների ստուգման անհրաժեշտության վրա, ուստի ունենք 0, 1-17, բացասական արժեքներ, նիշերի մուտքագրում և այլն:Այս բաժանման արդյունքը կլինի արժեքների արժեք կամ միջակայք, որի դեպքում մենք պետք է կատարենք միայն մեկ ստուգում ՝ տվյալների միջակայքից ցանկացած արժեքով։ Կարող են առաջանալ այնպիսի իրավիճակներ, ինչպիսիք են մի շարք արժեքի մեկ արժեքը։ Սա նաև առանձին համարժեքության դաս է և նաև պահանջում է ստուգում։              
1)Դրական ստուգումներ. Մուտքագրեք արժեքներ ՝ 19, 30, 48
2)Բացասական ստուգումներ. 0, 3, -1, A և այլն։                                                                                                         
  Շատ կարևոր է, որ թեստավորման ձևավորման տեխնիկան չի կիրառվում անկախ մյուսներից։                                                                Համարժեքության դասերի մեկ այլ առանձնահատկություն դրանց կիրառությունն է:Թեստավորման նախագծման տեխնիկայի կիրառման 3 մակարդակ `փորձարկման պատրաստվելու համար։                                                                                                                                               
1)Մակարդակը համակարգի տարրերի ստուգումն է (օրինակ ՝ դաշտերը, տուփերը, կոճակները և այլն)                                                        
2)Մակարդակ `համակարգի տրամաբանությունը ստուգելը, երբ համակարգի տարրերում տվյալները միավորվում են
3)Մակարդակը համակարգի բիզնես գործընթացի և ծրագրի տրամաբանության ստուգումն է։                                                                     
   Անբաժանելի տարրի ստուգման բաղկացուցիչ մասն է ևս մեկ տեխնիկա ՝ սահմանային արժեքներ։ Սահմանային արժեքները լրացնում են համարժեք դասեր, դրանով իսկ ամբողջովին ծածկելով ծրագրային տարրերի ստուգումները:Սահմանային արժեքները թեստային նախագծման տեխնիկա են, որը լրացնում է համարժեքության դասերը լրացուցիչ ստուգումներով ՝ փոփոխվող պայմանների սահմաններում։                                                                                                     
Եկեք վերադառնանք մեր օրինակին։                                                                                                                     
```

Վարկանիշային համակարգը հաշվարկում է հաճախորդի համար վարկի տոկոսադրույքը `ելնելով նրա տարիքից, որը մուտքագրվում է ձևով.

```
1)18-ից 25 տարեկան `18%
2)25-ից 45 տարեկան `16%
3)45 տարիների ընթացքում `20%                                                                                                                        
Սահմանային արժեքները որոշելու համար հարկավոր է ևս մեկ բան։ Մասնավորապես, որոշեք, թե որ արժեքներն են սկիզբը և ավարտը մեր դասի համար:Եվ ամենակարևորը!!! Թեստավորման ոլորտում կատարված ուսումնասիրությունների տարիները ցույց են տվել, որ թերությունների մեծ մասը թեստեր են հայտնաբերվում այն արժեքների հանգույցում, որոնք փոխում են ծրագրի աշխատանքային պայմանները:Հետևաբար, բացի սահմանային արժեքից, մենք օգտագործում ենք ստուգման համար լրացուցիչ 2 արժեք, սահմանից առաջ եղած արժեքը և սահմանից հետո արժեքը:Արդյունքում մենք ունենք. Մեր դասերի սահմանները `17, 18, 19, 24, 25, 26, 44, 45, 46 և max: Նաև մենք ունենք բացասական դաս, այն 0-ից 18 է։ Հետևաբար, այստեղ մենք նույնպես պետք է օգտագործենք սահմանային արժեքները փորձարկման համար. -1, 0, 1, 17,18:                   
```

Հաջորդը, մենք բացառում ենք կրկնօրինակ արժեքները, և արժեքներ ենք ստանում տվյալների մուտքի տարրը ստուգելու համար։ 

```
-1, 0, 1, 17, 18, 19, 24, 25, 26, 44, 45, 46, max:                                                                                                     
Max սովորաբար նշվում է հաճախորդի կամ վերլուծաբանի կողմից։ Եթե չկարողանաք տրամադրել, ապա պետք է այն գցեք և չփորձեք։ Դուք պետք է ընտրեք այնպիսի արժեք, որը համապատասխանում է ընդհանուր իմաստին։                                                                                                             Եթե նախկինում մենք ունեինք 3 արժեք 3 դասի, 19, 30 և 48 համարների համար, ապա սահմանային արժեքները որոշելուց հետո մենք կարող ենք ցուցակից հանել 30 և 48 արժեքները և դրանք փոխարինել նախնական սահմանային արժեքներով, ինչպիսիք են 26-ը (30-ի փոխարեն) և 46-ը ( 48-ի փոխարեն)։     Սահմանային արժեքները որոշվում են ոչ միայն թվային արժեքների, այլև այբբենական արժեքների համար (օրինակ ՝ այբուբենի և կոդավորման սահմանները), ամսաթիվը և ժամանակը և իմաստաբանական արժեքները։ Թվային արժեքների սահմանը կախված է մուտքային ձևաչափից, եթե ունեք ամբողջ թվեր, օրինակ ՝ 2, ապա սահմանային արժեքները կլինեն 1 և 3։ Եթե կոտորակային արժեքները, ապա համարի համար 2-ի սահմաններն արդեն կլինեն 1.9 (1.99) կամ 2.1 ( 2.01) և այլն։                                                
   1-ին մակարդակի թեստի նախագծման տեխնիկաները պարզ են։                                                                                                                                                  Ամենից հաճախ դրանք օգտագործվում են նոր ծրագրաշարի մշակման մեջ, քանի որ մեկ անգամ մշակման ընթացքում համակարգի տարրերը ստուգելուց հետո դրանք հետագայում հաճախ չեն հանդիսանում փոփոխության ենթակա տարրի գործողության մակարդակում։ Անհրաժեշտ չէ մշտապես ստուգել յուրաքանչյուր ծրագրի արժեքը ձեր ծրագրի յուրաքանչյուր էկրանին, բայց հիշեք, որ եթե ծրագրի տարրերի մշակման տրամաբանությունը փոխվում է, ապա հարկավոր է կրկին հաստատել, որ տարրերի արժեքները ճիշտ են մշակվում։  
2-րդ մակարդակի փորձարկման նախագծման տեխնիկները ծրագրակազմը ստուգելիս պատասխանատու են տվյալների փոփոխականության և կոմբինատորների համար։         Թեստի ձևավորման հիմնական տեխնիկան parwise testing (զույգ փորձարկում)։ Տեխնիկայի էությունն այն է, որ նվազագույնի հասցվի ստուգումների համակցությունների փոփոխականությունը `բավարար որակյալ ծրագրային ապահովման համար։ Պարզ խոսքերով, այս տեխնիկայում կիրառվում է Pareto- ի կանոնը, որակի 80% -ը կարելի է հասնել տվյալների համակցման ստուգումների միայն 20% -ում։ Այս տեխնիկան մշակվել է ավելի քան 15 տարվա IEEE հետազոտության միջոցով ՝ համակարգի թերությունների պատճառների վերլուծության ոլորտում։ Ուսումնասիրության արդյունքները ցույց են տվել, որ բոլոր թերությունների 98% -ը տեղի է ունենում այն ժամանակ, երբ բախվում է մուտքային տվյալների զույգը կամ մուտքի մեկ պարամետրը։                                                                                                    Այս հոդվածի վերջում ես կասեմ, որ վերանայված թեստային նախագծման տեխնիկան ընդգրկում է ծրագրի ստուգման ստուգումների միայն մի մասը, այն է `ծրագրի տարրերի ճիշտ աշխատանքը ստուգելը և դրանց գործողության ընթացքում դրանց համադրությունների արդյունքը։
```

Արտաքին հղումներ
----------------

* Test-Design(չաշխատող հղում)
* Testing
* What is test design and how to create it?
* Test plan vs. test design
* Making use of test design techniques to save QA Engineers' time

Գրականություն
-------------

* Lee Copeland, 'A Practitioner's Guide to Software Test Design'
* Tom Badgett, Corey Sandler 'The Art of Software Testing'
* Cem Kener 'Lessons Learned in Software Testing: A Context-Driven Approach'