Ծրագրակազմի փորձարկում

**Ծրագրակազմի ձևավորման փորձարկումը** ծրագրային ապահովման արտադրանքի հետազոտման, փորձարկման գործընթաց է, որի նպատակն է ստուգել ծրագրի իրական վարքագծի և դրա սպասվող վարքագծի համապատասխանությունը որոշակի ձևով ընտրված թեստերի վերջնական փաթեթի վրա ։

## Թեստային սահմանումներ
Տարբեր ժամանակներում և տարբեր աղբյուրներում փորձարկմանը տրվել են տարբեր սահմանումներ, ներառյալ.

* սխալներ հայտնաբերելու համար ծրագիր կատարելու գործընթացը
* մտավոր կարգապահություն, որն ուղղված է հուսալի ծրագրակազմի ձեռքբերմանը ՝ առանց դրա փորձարկման ավելորդ ջանքերի
* ծրագրի տեխնիկական ուսումնասիրություն `շահառուների որոշակի շրջանակի տեսանկյունից դրա որակի վերաբերյալ տեղեկատվություն ստանալու համար
* որոշակի ձևով կատարված թեստերի անսահմանափակ փաթեթի վրա ծրագրի իրական վարքի և դրա սպասվող վարքագծի համապատասխանության ստուգում
* ծրագրի իրականացման հատուկ պայմաններում մոնիտորինգի և դրա հիման վրա դրա գործունեության ցանկացած ասպեկտների գնահատում կատարելու գործընթացը
* իրավիճակ հայտնաբերելու գործընթաց, որի դեպքում ծրագրի վարքը սխալ է, անցանկալի կամ հստակեցված չէ
* գործընթաց, որը պարունակում է կյանքի ցիկլի բոլոր գործողությունները `ինչպես դինամիկ, այնպես էլ ստատիկ, կապված ծրագրակազմի արտադրանքի պլանավորման, պատրաստման և գնահատման և հարակից աշխատանքի արդյունքների հետ` պարզելու, որ դրանք համապատասխանում են նկարագրված պահանջներին, ցույց տալու, որ դրանք հարմար են նշված նպատակների համար և հայտնաբերել թերությունները

## Թեստավորման մակարդակները
* Բաղադրիչների փորձարկում - փորձարկվում է փորձարկման համար հնարավոր ամենափոքր բաղադրիչը, օրինակ `առանձին դաս կամ ֆունկցիա։ Բաղադրիչների փորձարկումները հաճախ իրականացվում են ծրագրային ապահովման մշակողների կողմից։
* Ինտեգրման փորձարկում - փորձարկվում են բաղադրիչների, ենթահամակարգերի կամ համակարգերի միջերեսները։ Եթե այս փուլում ժամանակի պահուստ կա, փորձարկումն իրականացվում է կրկնվող կերպով ՝ հետագա ենթահամակարգերի աստիճանական միացումով։
* Համակարգի փորձարկում - ինտեգրված համակարգը փորձարկվում է պահանջներին համապատասխանելու համար։
* Ալֆա փորձարկումը համակարգի հետ իրական աշխատանքի իմիտացիա է ներքին մշակողների կողմից, կամ համակարգի հետ իրական աշխատանք պոտենցիալ օգտվողների / հաճախորդների կողմից։
* Բետայի փորձարկում. Որոշ դեպքերում նախնական թողարկումը բաշխվում է (գույքային ծրագրակազմի դեպքում, երբեմն սահմանափակ գործառույթով կամ գործառույթով) ավելի մեծ խմբի մարդկանց ՝ ապահովելու համար, որ ապրանքը ավելի քիչ սխալներ պարունակի։

Հաճախ, անվճար և բաց կոդով ապահովված ծրագրերի համար, ալֆա փորձարկման փուլը բնութագրում է ծածկագրի ֆունկցիոնալ բովանդակությունը, իսկ բետա փորձարկումն էլ բնութագրում է սխալների շտկման փուլը։ Ավելին, որպես կանոն, մշակման յուրաքանչյուր փուլում վերջնական օգտագործողների համար մատչելի են աշխատանքի միջանկյալ արդյունքներ։

## Դերեր
Ծրագրային ապահովման փորձարկումը կարող է իրականացվել մասնագիտացված ծրագրային ապահովման փորձարկողների կողմից։ Մինչեւ 1980-ական թվականները սովորաբար օգտագործվում էր "ծրագրային ապահովման փորձարկող" տերմինը, սակայն հետագայում այն համարվում էր նաեւ առանձին մասնագիտություն. Մինչեւ 1970-ական թվականները ծրագրավորողներն իրենք էին փորձարկում տեսախաղերը. Ինչ վերաբերում է ծրագրային ապահովման փորձարկման ժամանակաշրջաններին եւ տարբեր նպատակներին, սահմանվել են տարբեր դերեր, ինչպիսիք են թեստավորման մենեջերը, թեստավորման մենեջերը, թեստավորման վերլուծաբանը, թեստի մշակողը, փորձարկողը, ավտոմատացման մշակողը եւ թեստավորման ադմինիստրատորը. Ծրագրային ապահովման փորձարկումը կարող է իրականացվել նաեւ երրորդ կողմի ծրագրային ապահովման փորձարկողների կողմից։

## Հակասություններ
Ծրագրային ապահովման փորձարկման որոշ հիմնական տարբերություններ ներառում են։
### Ճկուն փորձարկում ընդդեմ ավանդականի
Արդյո՞ք փորձարկողները պետք է սովորեն աշխատել անորոշության եւ մշտական փոփոխությունների պայմաններում, թե՞ նրանք պետք է ձգտեն գործընթացի "հասունությանը? Ճկուն թեստավորման շարժումը մեծ ժողովրդականություն է ձեռք բերել 2000-ականների սկզբից, հիմնականում առեւտրային շրջանակներում, մինչդեռ պետական եւ ռազմական ծրագրային ապահովման մատակարարները օգտագործում են այս մեթոդաբանությունը, ինչպես նաեւ ավանդական փորձարկման մոդելները (օրինակ՝ ջրվեժի մոդելում).
### Ձեռքով փորձարկում ընդդեմ ավտոմատ
Որոշ հեղինակներ կարծում են, որ թեստավորման ավտոմատացումը այնքան թանկ է, որքան դրա արժեքը, որ այն պետք է օգտագործվի տնտեսապես. Այս դեպքում փորձարկման ավտոմատացումը կարող է դիտվել որպես պահանջների սահմանման եւ իրականացման միջոց.

## Ծանոթագրություններ

## Գրականություն
* Software Testing. Principles, Techniques and Tools.  M. G. LIMAYE
* Systematic Software Testing. Rick David Craig, Stefan P. Jaskiel.