Ծրագրային ապահովման փորձարկման հավելյալ թեստավորումը մեթոդաբանություն է, որը թիմերին թույլ է տալիս բաժանել առանձին մոդուլներ, փորձարկել դրանք առանձին և ինտեգրել դրանք փուլերով: Այն օգնում է վաղաժամ հայտնաբերել թերությունները, նվազեցնում է բարդությունը և մեծացնում է թեստի ծածկույթը:
Այս հոդվածը խորը կանդրադառնա աստիճանական թեստավորման մեջ, կբացատրի, թե ինչ է դա և կուսումնասիրի տարբեր տեսակներ, գործընթացներ, մոտեցումներ, գործիքներ և ավելին, որոնք կապված են այս օգտակար մեթոդաբանության հետ:
Ի՞նչ է աստիճանական թեստավորումը:
Թեստավորումը ծրագրային ապահովման մշակման կյանքի ցիկլի (SDLC) ամենակարևոր փուլերից մեկն է: Ինչպես SDLC-ի դեպքում, փորձարկումը բաժանվում է տարբեր տրամաբանական քայլերի: Աճային փորձարկումն այս փուլերից մեկն է, և այն սովորաբար տեղի է ունենում ընթացքում ինտեգրման փորձարկում և միավորի փորձարկումից անմիջապես հետո :
Աճող փորձարկում ծրագրային ապահովման փորձարկման պրագմատիկ մոտեցում է, որը մեծ կամ բարդ ծրագրերը բաժանում է կառավարելի, կծվածքի չափի կտորների: Ամբողջ ծրագրային համակարգը միանգամից ինտեգրելու և փորձարկելու փոխարեն, աստիճանական թեստավորումը դիտարկում է մոդուլները և իրականացնում է ստուգման փուլային գործընթաց:
Ծրագրային մոդուլները սովորաբար ինքնամփոփ կոդի միավորներ են, որոնք կատարում են հատուկ առաջադրանքներ կամ գործառույթներ: Որքանով են այս մոդուլները հատիկավոր են, կախված է տարբեր գործոններից, ինչպիսիք են կոդավորման պրակտիկան, զարգացման մեթոդաբանությունը կամ նույնիսկ ծրագրավորման լեզուն, որը դուք օգտագործում եք:
Մոդուլները փորձարկվում են ինքնուրույն՝ միավորի փորձարկման ժամանակ: Այնուհետև, ինտեգրման փորձարկման ժամանակ, յուրաքանչյուր մոդուլ ինտեգրվում է մաս առ մաս, կամ աստիճանաբար: Այս գործընթացը ապահովում է, որ յուրաքանչյուր մոդուլ լավ աշխատի միասին: Այնուամենայնիվ, յուրաքանչյուր մոդուլն ամբողջությամբ ստուգելու համար փորձարկողները պետք է մոդելավորեն բաղադրիչներ, որոնք դեռ պետք է ներդրվեն կամ արտաքին համակարգեր: Դա անելու համար նրանց անհրաժեշտ է կոճղերի և վարորդների օգնությունը:
Որո՞նք են կոճղերը և դրայվերները աստիճանական թեստավորման մեջ:
Stubs-ը և դրայվերները ծրագրային ապահովման փորձարկման կարևոր գործիքներ են: Կոդի այս ժամանակավոր կտորներն օգտագործվում են ինտեգրման թեստավորման ժամանակ, քանի որ դրանք թիմերին առաջարկում են տարբեր մոդուլների կամ բաղադրիչների վարքագիծն ու միջերեսը նմանակելու հնարավորություն:
1. կոճղեր:
Կոճղերը նմանակում են մոդուլները, որոնք դեռ պետք է մշակվեն և, որպես այդպիսին, անհասանելի են փորձարկման համար: Նրանք թույլ են տալիս փորձարկվող մոդուլին (MUT) զանգահարել թերի մոդուլներ: Այստեղ արդյունքն այն է, որ MUT-ը կարող է փորձարկվել առանձին, նույնիսկ երբ հարակից մոդուլները հասանելի չեն:
2. Վարորդներ:
Վարորդները, մյուս կողմից, մոդելավորում են մոդուլների վարքագիծը, որոնք կոչում են MUT: Փորձարկման միջավայրում այս վարորդները կարող են ուղարկել MUT թեստի տվյալները: Կրկին, սա հեշտացնում է մոդուլների փորձարկումը առանձին, առանց արտաքին կախվածության անհրաժեշտության:
Կոճղերի կամ դրայվերների օգտագործումը նվազեցնում է մշակման ժամանակը, բարելավում է կոդի որակը և մեծացնում թիմի արտադրողականությունը: Այնուամենայնիվ, որոշել, թե որն է օգտագործել, կախված է նրանից, թե որ փորձարկման մեթոդաբանությունն է առավել նպատակահարմար: Մենք դա կընդլայնենք ստորև բերված բաժնում, որը վերաբերում է աճող ինտեգրման փորձարկման տարբեր տեսակներին:
Տարբեր տեսակի աճող
ինտեգրման փորձարկում
Աճող թեստավորման տեսակները կարելի է լայնորեն բաժանել երեք կատեգորիաների. Եկեք ուսումնասիրենք յուրաքանչյուրը:
1. Վերևից վար աստիճանական ինտեգրում
Վերևից վար աստիճանական ինտեգրումը սկսվում է համակարգի ներսում ամենաբարձր կարգի մոդուլների փորձարկումից: Այնտեղից այն աստիճանաբար ինտեգրվում և փորձարկում է ավելի ցածր կարգի մոդուլներ:Գոյություն ունեն երկու հիմնական սցենար, որտեղ օգտագործվում է վերևից վար աստիճանական ինտեգրում: Նրանք են:
- Երբ համակարգը շատ մեծ է կամ շատ բարդ
- Երբ մշակողի թիմը միաժամանակ աշխատում է բազմաթիվ մոդուլների վրա:
Վերևից ներքև աճող ինտեգրման քայլեր
- Բացահայտեք կարևոր մոդուլները
- Ստեղծեք կոճղեր՝ ավելի ցածր կարգի մոդուլները ընդօրինակելու համար
- Մշակեք վարորդներ՝ փոխազդելու ավելի բարձր կարգի մոդուլների հետ՝ նրանց տվյալներ ուղարկելու և մոդուլի արդյունքները մեկնաբանելու համար
- Միավորը փորձարկում է կրիտիկական մոդուլները դրայվերներով և կոճղերով
- Ինտեգրեք ավելի ցածր կարգի մոդուլներ և աստիճանաբար փոխարինեք կոճղերը իրական իրականացումներով
- Refactor վարորդներ՝ նոր մոդուլները տեղավորելու համար
- Կրկնեք, մինչև բոլոր ցածր կարգի մոդուլները ինտեգրվեն և փորձարկվեն:
2. Ներքևից վեր աստիճանական ինտեգրում
Ներքևից վերև աճող ինտեգրումները գնում են հակառակ ուղղությամբ: Այս մոտեցմամբ փորձարկվում են համակարգի ավելի ցածր կարգի (կամ ամենաքիչ կրիտիկական) մոդուլները, աստիճանաբար ավելացվում են ավելի բարձր կարգի մոդուլներ: Այս մոտեցումը հարմար է տարբեր սցենարների դեպքում, ինչպիսիք են.
- Երբ գործ ունես ավելի փոքր համակարգերի հետ
- Երբ համակարգը մոդուլյարացված է
- Երբ որոշ մտահոգություններ ունեք ելակների ճշգրտության կամ ամբողջականության վերաբերյալ:
Ներքևից վեր աստիճանական ինտեգրման քայլեր
- Բացահայտեք ավելի ցածր կարգի մոդուլներ
- Միավորը փորձարկում է ցածր կարգի մոդուլները՝ ստուգելու նրանց անհատական ֆունկցիոնալությունը
- Մշակեք վարորդներ՝ որպես միջնորդներ ավելի ցածր կարգի մոդուլներով
- Ստեղծեք կոճղեր՝ ավելի բարձր կարգի մոդուլների վարքը մոդելավորելու համար
- Ինտեգրեք հաջորդ մոդուլները՝ ցածրից մինչև ավելի բարձր կարգ, և աստիճանաբար փոխարինեք կոճղերը իրական իրականացումներով
- Refactor վարորդներ՝ նոր մոդուլները տեղավորելու համար
- Կրկնեք, մինչև բոլոր ավելի բարձր կարգի մոդուլները ինտեգրվեն և փորձարկվեն:
3. Ֆունկցիոնալ աստիճանական ինտեգրում
Ֆունկցիայի աճող ինտեգրման թեստավորումը ծրագրային ապահովման փորձարկումներում աճող թեստավորման հաջորդ սովորական տեսակն է: Մինչ նախորդ երկու տեսակները կենտրոնացած էին ավելի բարձր և ցածր կարգի մոդուլների վրա, ֆունկցիոնալ աճող թեստավորումը հիմնված է որոշակի մոդուլի ֆունկցիոնալության վրա:
Ֆունկցիոնալ աճող ինտեգրումն օգտագործվում է Agile/DevOps մեթոդոլոգիաներում , և դա հիանալի ընտրություն է մոդուլների կամ բաղադրիչների միջև բարդ կախվածություն ունեցող հավելվածների համար:
Քայլեր ֆունկցիոնալ աստիճանական ինտեգրման համար
- Բացահայտեք առանձին մոդուլներ և բաղադրիչներ հստակ սահմանված միջերեսներով
- Ստուգեք յուրաքանչյուր մոդուլի ֆունկցիոնալությունը միավորի փորձարկման միջոցով
- Ինտեգրել համակարգի ամենանվազագույն հիմնական մոդուլները և ապահովել դրա գործառույթը
- Աստիճանաբար ավելացրեք միայնակ մոդուլներ՝ յուրաքանչյուր քայլի ֆունկցիոնալությունը ստուգելով
- Վերափոխեք կոդը յուրաքանչյուր մոդուլի ավելացման ժամանակ
- Երբ բոլոր մոդուլները ավելացվեն, փորձարկեք ֆունկցիոնալությունը և կատարումը
Աճային փորձարկման մոտեցման դրական և բացասական կողմերը
Մինչ այժմ դուք պետք է որոշակի պատկերացում ունենաք, թե ինչու է աստիճանական թեստավորումը հանրաճանաչ մոտեցում: Այնուամենայնիվ, ինչպես ծրագրային ապահովման փորձարկման բոլոր մեթոդաբանությունները, այն ունի իր առավելություններն ու թերությունները: Եկեք ուսումնասիրենք այս դրական և բացասական կողմերից մի քանիսը:
Աճային փորձարկման մոտեցման դրական կողմերը
1. Ճկունություն
Քանի որ բոլոր ծրագրակազմ մշակողները և փորձարկողները շատ լավ գիտեն, պահանջները կարող են փոխվել և զարգանալ SDLC-ի ընթացքում, երբեմն բավականին կտրուկ: Աճող թեստավորումը բավականաչափ դինամիկ է, որպեսզի թիմերին թույլ տա հարմարվել թեստավորման գործընթացում և ներառել նոր պլաններ և ուղղություններ:
2. Վրիպակների վաղ հայտնաբերում
Սխալը կամ թերությունը հայտնաբերելու լավագույն ժամանակը հնարավորինս շուտ է: Երբ մշակողները ստուգում են խայթոցների չափի մոդուլները առանձին-առանձին, խնդիրների հայտնաբերումն ու շտկումը շատ ավելի հեշտ է: Ավելին, այն օգնում է մեղմել մեծ խնդիրների հավանականությունը, որոնք առաջանում են զարգացման ուշ փուլում:
3. Պարզություն
Ծրագրային ապահովման փորձարկումը կարող է լինել շատ բարդ գործընթաց: Աճող թեստավորման ամենաազդեցիկ կողմերից մեկն այն է, թե ինչպես է այն բաժանում փորձարկման քաղաքը գործունակ մասերի: Չափազանց բարդության հետ գործ ունենալու փոխարեն, թեստավորողները կարող են կենտրոնանալ և նույնիսկ առաջնահերթություն տալ որոշակի մոդուլների վրա: Այս առավելությունը աստվածային պարգև է մեծ և բարդ ծրագրերի համար:
4. Ավելի ցածր ռեգրեսիայի ռիսկ
Հետընթացը ժամանակատար և բարդ խնդիր է ծրագրային ապահովման մշակման շրջանակներում: Աճող թեստավորումը կարող է մեղմել ռեգրեսիայի հետևանքով առաջացած հաճախականությունը և ռիսկերը, քանի որ այն թիմերին թույլ է տալիս առանձին թեստավորել մոդուլները և լուծել խնդիրները, երբ դրանք առաջանում են: Երբ օգտագործվում է պինդ ռեգրեսիայի թեստավորում , թիմերը կարող են խնայել շատ ժամանակ և սրտի ցավ:
5. Հետադարձ կապի հնարավորություններ
Աճող թեստավորման հաճախակի անտեսված առավելությունն այն է, որ այն թիմերին հնարավորություն է տալիս լայնություն կազմել նախատիպեր և MVP-ներ: Այնտեղից շահագրգիռ կողմերը և ներդրողները կարող են գնահատել գործընթացի հիմնական ֆունկցիոնալությունը և տրամադրել անգնահատելի հետադարձ կապ: Այս իրավիճակը կարող է խնայել շատ ժամանակ և գումար և հանգեցնել ավելի ամուր արտադրանքի:
Աճային փորձարկման մոտեցման թերությունները
1. Ինտեգրման խնդիրներ
Մոդուլների առանձին թեստավորումը ցանկալի է, քանի որ այն բաժանում է բարդ հավելվածը կառավարելի մասերի: Այնուամենայնիվ, այս մոդուլների ինտեգրումը կարող է հանգեցնել նոր և անսպասելի սխալների: Որպես այդպիսին, աստիճանական փորձարկման մոտեցումը պետք է ուշադիր և կանխամտածված պլանավորվի:
2. Փորձարկման փաթեթի բարդությունը
Յուրաքանչյուր մոդուլի համար բազմաթիվ թեստային դեպքերի և միմյանց հետ համապատասխան փոխազդեցության դեպքում թեստային հավաքակազմերը կարող են բարդ լինել հետևելու և կառավարելու համար: Խոշոր և բարդ հավելվածների համար դա անհրաժեշտություն է դարձնում մանրակրկիտ փաստաթղթավորման կամ փորձարկման կառավարման գործիքները:
3. Ավելի շատ աշխատանք
Միաձույլ փորձարկումը, չնայած ավելի բարդ, պահանջում է ավելի քիչ փորձարկում: Առանձին-առանձին փորձարկելով բազմաթիվ մոդուլներ՝ հավելյալ փորձարկումն ավելի շատ աշխատանք է պահանջում: Այնուամենայնիվ, աստիճանական փորձարկման առավելությունները, ինչպիսիք են վրիպակների վաղ հայտնաբերումը, նշանակում են, որ լրացուցիչ ջանքերը ժամանակ խնայող ներդրում են: Իհարկե, ծրագրային ապահովման փորձարկման ավտոմատացումը կարող է օգնել նվազեցնել այդ ջանքերը:
4. Կառավարման պահանջների ավելացում
Աճող թեստավորումը պահանջում է մի քանի թիմեր միասին աշխատել: Օրինակ, մշակման, փորձարկման և DevOps թիմերը պետք է համատեղ աշխատեն: Այս իրավիճակը ստեղծում է կառավարման լրացուցիչ պահանջարկ և պահանջում է լավ հաղորդակցություն այս թիմերի միջև՝ ապահովելու համար, որ նրանք կենտրոնացած են և ձգվում են դեպի նույն նպատակները:
Աճող փորձարկման օրինակ
Թերևս աճող թեստավորման մոտեցումը հասկանալու ամենահեշտ ձևը օրինակի մասին մտածելն է: Ահա մի պարզ իրավիճակ, որը կօգնի պատկերացնել գործընթացը:
1. Բջջային բանկինգի հավելվածի լրացուցիչ թեստավորման օրինակ
Սցենար. Թիմը կառուցում է բջջային բանկային հավելված: Հավելվածը բաղկացած է մի քանի տարբեր մոդուլներից, որոնք հնարավորություն են տալիս.
- 2FA և կենսաչափական օգտագործողի ստուգում
- Գործարքների մշակում
- Ֆինանսական տվյալների կառավարման վահանակ
Նպատակը: Թիմը ցանկանում է ստուգել յուրաքանչյուր մոդուլի ինտեգրումը և որոշել, թե արդյոք նրանք լավ են աշխատում միասին: Արդյունքում նրանք կառուցում են երեք թեստային պատյաններ։
Փորձարկման դեպք 1
Առաջին փորձնական դեպքում թիմը ցանկանում է ապահովել, որ կենսաչափական կամ գաղտնաբառի տվյալներ մուտքագրելով՝ օգտատերը մուտք կունենա ինչպես գործարքների մշակման, այնպես էլ ֆինանսական տվյալների կառավարման վահանակ:
Հավելվածը կանցնի թեստը, եթե օգտատերը կարողանա մուտքագրել իր տվյալները և ձեռք բերել գործարքներ մուտք գործելու հնարավորություն:
Թեստային դեպք 2
Հաջորդ փորձնական դեպքը նախատեսված է տեսնելու, թե ինչպես է հավելվածը վարում չարտոնված գործարքները:
Հավելվածը անցնում է թեստը, եթե չարտոնված գործարք կատարելու փորձն արգելափակված է, և հավելվածը սխալի հաղորդագրություն է ստեղծում:
Թեստային դեպք 3
Վերջնական ինտեգրման թեստը ներառում է վավերացում, թե արդյոք հավելվածը կարող է միաժամանակ գործարքներ կատարել:
Հավելվածը կանցնի թեստը, եթե օգտատերը կարողանա գործարք սկսել և միաժամանակ մուտք ունենալ իր ֆինանսական տեղեկատվությանը՝ առանց տվյալների անհամապատասխանության կամ խնդիրների:
Սա աճող փորձարկման մոտեցում է
նույնն է, ինչ աստիճանական թեստավորումը:
Ոչ Աճող թեստավորումը վերաբերում է վիճակագրական մարքեթինգային մեթոդին, որը, հավանաբար, առավել հայտնի է որպես վերագրման մոդելավորում: Մի խոսքով, այն օգնում է մարքեթինգային թիմերին հասկանալ գովազդային արշավների, մարքեթինգային ուղիների կամ որոշակի ռազմավարությունների ազդեցությունը:
Թեև այս տեսակի մոդելավորման նկատմամբ հետաքրքրությունն աճել է վերջին տարիներին թխուկների և երրորդ կողմի տվյալների «մահվան» շնորհիվ, միակ կապը, որ այն ունի աստիճանական թեստավորման հետ, ընդհանուր բառն է:
Աճային փորձարկման լավագույն 3 գործիքները
#1. ZAPTEST
Ինչպես նաեւ ապահովելով առաջին կարգի ՀՀԿ հնարավորություններով, ZAPTEST-ն առաջարկում է ծրագրային ապահովման փորձարկման ավտոմատացման մի շարք գործիքներ, որոնք կատարյալ են աստիճանական փորձարկման համար: Որոշ առանձնահատկություններ ներառում են.
- Փորձարկման տվյալների կառավարում . Կրճատեք ժամանակի և ջանքերի քանակը, որոնք ներգրավված են աճող թեստավորման հետ՝ թույլ տալով թիմերին վերօգտագործել թեստի տվյալները
- Սցենարների ձայնագրում և նվագարկում . առանց կոդերի այս գործիքը թիմերին թույլ է տալիս ձայնագրել և կատարել սկրիպտներ և շատ ժամանակ խնայել լրացուցիչ թեստավորման ժամանակ:
- Կրկնակի օգտագործման թեստային մոդուլներ . ZAPTEST-ը խիստ մոդուլային է և թույլ է տալիս թիմերին ստեղծել և վերօգտագործել թեստային մոդուլներ և զգալի ժամանակ կտրել թեստավորման գործընթացից:
Ընդհանուր առմամբ, ZAPTEST-ն առաջարկում է հզոր և բազմազան թեստային ավտոմատացման հավաքածու, որը հարմար է ցանկացած տեսակի թեստավորման, ներառյալ աստիճանական թեստավորման համար:
#2. Սելեն
Selenium-ը բաց կոդով փորձարկման ավտոմատացման հարթակ է, որը ստեղծվել է բջջային հավելվածների թեստավորումը հեշտացնելու համար: Գործիքներն աջակցում են մի քանի շարժական հարթակներ (Android, iOS, Windows) և օգտագործում են կոճղեր և դրայվերներ մոդուլների մոդելավորման համար:
#3. Թեստիգմա
Testsigma-ն ամպի վրա հիմնված թեստային ավտոմատացման հարթակ է: Այն կարող է օգտագործվել վեբ և բջջային հավելվածները փորձարկելու համար և հարմար է աստիճանական փորձարկման համար՝ առանց ծածկագրի թեստ ստեղծելու և CI/CD խողովակաշարերի հետ ինտեգրվելու համար:
Վերջնական մտքեր
Ծրագրային ապահովման թեստավորման հավելյալ փորձարկումը ինտեգրացիոն թեստավորման կարևոր մասն է: Այն թիմերին թույլ է տալիս մոդուլները բաժանել հեշտությամբ փորձարկվող մասերի, նախքան դրանք դանդաղորեն ինտեգրելը: Այստեղ առավելություններն այն են, որ յուրաքանչյուր մոդուլ կարող է ստուգվել վրիպակների առկայության և այնուհետև այն ինտեգրվելու իր միացված մասերի հետ:
Մեր դասի լավագույն ՀՀԿ-ի կողքին գործիքներ, ZAPTEST-ն առաջարկում է առանց կոդերի ծրագրային ապահովման թեստավորման ավտոմատացում, որը և՛ միջպլատֆորմային է, և՛ խաչաձև հավելված: Ավելին, մեր փորձարկման փաթեթը հագեցած է այնպիսի գործառույթներով, ինչպիսիք են CI/CD ինտեգրումը, կայուն հաշվետվություններն ու վերլուծությունները, ինչպես նաև առաջին կարգի աջակցությունն ու հաճախորդների սպասարկումը: