Փորձարկման 4 մեթոդ, որը պետք է իմանա յուրաքանչյուր ծրագրավորող
Ձեր կոդը փորձարկելու գրեթե նույնքան եղանակ կա, որքան այն գրելու համար: Հասկացեք տարբերությունները և ինքներդ ստեղծեք կայուն փորձարկման գործընթաց:
Եթե դուք երբևէ ստիպված եք եղել հետևել ձեր կոդի սխալին, ապա դուք գիտեք, թե որքան հիասթափեցնող կարող է լինել այն: Այս հիասթափությունը մեծանում է միայն այն դեպքում, եթե դուք աշխատում եք մեծ կոդերի բազայի վրա:
Թեստավորումը թույլ է տալիս ստուգել, թե արդյոք ձեր կոդի արդյունքները համապատասխանում են ձեր ակնկալիքներին: Այսպիսով, դուք կարող եք հեշտությամբ բացահայտել և շտկել խնդիրը նախքան ձեր հավելվածը տեղադրելը: Բացի այն, որ օգնում է ձեզ ավելի արագ հայտնաբերել կոդի սխալները, թեստավորումը նաև ստիպում է ձեզ լավ կոդ գրել:
1. Ստատիկ փորձարկում
Ստատիկ թեստավորումը վերաբերում է թեստերին, որոնք աշխատում են առանց կոդի գործարկման: Դա տեղի է ունենում՝ համեմատելով կոդը նախկինում սահմանված կոդավորման կանոնների հետ: Ստատիկ փորձարկումներ կատարելու ընդհանուր եղանակները ներառում են լինտինգ և տիպի ստուգում:
Linting-ը ներառում է կոդի ստուգում ծրագրավորման և ոճական սխալների համար: Լինտերը վերլուծում է կոդը և նշում է հնարավոր սխալները: Linting գործիքների օրինակներ են EsLint, PyLint և CSSLint:
Տիպի ստուգումը մուտքագրման կանոնների և արժեքների սահմանափակումների կիրառման գործընթաց է: Որոշ ծրագրավորման լեզուներ խիստ տպագրված են, ինչը նշանակում է, որ նրանք սխալներ են թույլ տալիս, երբ արժեքները լավ մուտքագրված չեն:
Այնուամենայնիվ, որոշ լեզուներ, ինչպիսիք են JavaScript-ը, թույլ տպագրական համակարգ ունեն և ավելի ներողամիտ են: Այս լեզուներով սխալները դժվար է բռնել, և տիպերի ստուգման գրադարանը կարևոր է: JavaScript-ի համար դուք կարող եք օգտագործել TypeScript՝ ուժեղ մուտքագրում իրականացնելու համար:
Դուք կարող եք նաև օգտագործել ստատիկ վերլուծության գործիքներ՝ կոդը ինքնաբերաբար վերլուծելու համար: Այս գործիքները ստուգում են կոդի որակը և զեկուցում ցանկացած խնդրի մասին, որը գտնում է: Շուկայում ստատիկ վերլուծության գործիքների օրինակներն են՝ SonarQube, DeepSource և SpotBugs: Ստատիկ անալիզատոր ընտրելիս համոզվեք, որ այն աջակցում է ձեր ծրագրավորման լեզվին:
2. Միավոր թեստեր
Միավոր թեստերը ստուգում են հավելվածի ամենափոքր փորձարկվող մասերը՝ որոշելու, թե արդյոք դրանք գործում են ինչպես սպասվում էր: Դուք կարող եք գրել միավորի թեստեր գործառույթների, մոդուլների, օբյեկտների և այլնի համար:
Թեև միավորի թեստերը կարող են ժամանակատար լինել, դրանք պետք է ավելի շատ ժամանակ խնայեն, քան դուք կծախսեք հավելվածի վրիպազերծման համար՝ ամբողջ ծածկագիրը գրելուց հետո:
Ընդհանուր առմամբ, միավորի փորձարկումը բաղկացած է չորս քայլից.
- Թեստերի ստեղծում
- Վերանայելով թեստը
- Հիմքավորում
- Թեստի կատարում.
Դուք կարող եք ձեռքով գրել միավորի թեստեր կամ ավտոմատացնել դրանք՝ օգտագործելով միավորի փորձարկման շրջանակը: Ձեռքով փորձարկման ժամանակ դուք պետք է կոդ գրեք՝ ձեզ անհրաժեշտ ֆունկցիան կամ միավորը փորձարկելու համար, այնուհետև ջնջեք փորձարկման կոդը:
Եթե օգտագործում եք շրջանակ, նշեք միավորը, որը դուք փորձարկում եք և ակնկալվող արդյունքները, ապա կատարեք թեստը: Այնուհետև թեստավորման շրջանակը կգրանցի ձախողված և հանձնած թեստերը: Ընդհանուր առմամբ, ավելի լավ է օգտագործել շրջանակը, քանի որ այն ավելի արագ է:
Միավոր թեստ գրելիս համոզվեք, որ այն միավորը, որը դուք փորձարկում եք, անկախ է: Եթե այն հենվում է արտաքին տվյալների վրա, ինչպիսիք են փոփոխականները, կարող եք օգտագործել ծաղրեր: Ծաղրերը փոխարինում են միավորում օգտագործված բացակայող տվյալները:
Օրինակ, եթե դուք փորձարկում եք մի ֆունկցիա, որը հիմնված է API-ից բերված տվյալների վրա, կարող եք ստեղծել կեղծ տվյալների օբյեկտ թեստավորման նպատակով:
3. Ինտեգրման թեստեր
Ինտեգրման թեստերը ստուգում են, թե ինչպես են տարբեր բաղադրիչները գործում միասին: Սա ի տարբերություն միավորի թեստերի, որոնք փորձարկում են անկախ բաղադրիչներ: Ինտեգրման թեստեր եք գրում միավորի թեստերից հետո:
Ինտեգրման թեստերը կարևոր են, քանի որ դրանք ապահովում են ձեր կիրառման տրամաբանությունը:
Օրինակ՝ հաշվի առեք երկու մոդուլ՝ մեկը, որը տվյալներ է վերցնում API-ից և մյուսը, որը վերլուծում է դրանք: Դուք ցանկանում եք համոզվել, որ ձեր կոդը ճիշտ տվյալներ է բերել և ճիշտ վերլուծել դրանք:
Այստեղ է գալիս ինտեգրման թեստավորումը: Այն ապահովում է տրամաբանական սխալների բացակայությունը մի մոդուլից մյուսը:
4. End-to-End թեստեր
End-to-end թեստավորումը ստուգում է հավելվածի հոսքը վերջնական օգտագործողի տեսանկյունից: Գործընթացը փորձարկում է հավելվածը սկզբից մինչև վերջ, քանի որ օգտատերը կօգտագործի հավելվածը: Այս թեստերն ավելի շատ ծածկույթ են ապահովում, քան միավորի թեստերը կամ ինտեգրման թեստերը:
End-to-end թեստերը սահմանում են հավելվածի կախվածությունը, տվյալների բազաները և արտաքին հաղորդակցությունը: Նրանք հնարավորինս ճշգրիտ կերպով կրկնում են իրական աշխարհի սցենարը:
Օրինակ, գրանցման ձևը փորձարկելիս վերջից մինչև վերջ թեստը կփորձարկի տարբեր սցենարներ, ինչպիսիք են.
- Օգտատեր, որը ներկայացնում է և՛ էլփոստը, և՛ գաղտնաբառը
- Թույլ գաղտնաբառ օգտագործող օգտվող
- Անվավեր էլ․ հասցե օգտագործող օգտատեր
- Օգտագործողը, որը ուղարկում է միայն էլ
- Օգտատեր, որը ներկայացնում է միայն գաղտնաբառ
Վերջնական թեստերը ապահովում են, որ հավելվածն իրեն պահում է այնպես, ինչպես սպասվում է այս սցենարներում:
Գրելու թեստեր ընդդեմ գրավոր կոդի
Ձեր դիմումի փորձարկումը զարգացման գործընթացում շատ կարևոր է: Թեև այս բոլոր թեստերը կարևոր են, կարևոր է գտնել հավասարակշռություն, որն աշխատում է ձեզ համար: Հակառակ դեպքում, դուք չափազանց շատ ժամանակ կծախսեք կոդի փոխարեն թեստեր գրելով:
Միավորի փորձարկումը շատ կարևոր է հավելվածների մեծ մասի համար, և դուք կարող եք բավականաչափ ժամանակ հատկացնել դրան: Միավորների թեստերը կատարելուց հետո կարող եք վստահ լինել, որ ձեր հավելվածի կառուցվածքային բլոկները ճիշտ են աշխատում: