Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



43-боб. Аёвсиз тест қилиш (The Pragmatic Programmer китобидан таржима)

43-боб. Аёвсиз тест қилиш (The Pragmatic Programmer китобидан таржима)

Ушбу мақола дастурни яхшилаб (аёвсиз) тест қилиш хақида. Мақола, The Pragmatic Programmer китобининг 43чи бобининг баъзи бўлимларини таржимаси хисобланади. Бу китобда дастурчилар учун жуда керакли маслахатлар берилган экан, агар китобни хали ўқимаган бўлсангиз уни ўқиб чиқишни тавсия этаман.


Кўп дастурчилар тест қилишни хуш кўрмайдилар. Улар дастурни иложи борича эхтиёт бўлиб, дастурини бирон бир жоида хатолик келиб чиқиши мумкинлигини сезган холатда ва дастурни нимжон жойларини айланиб ўтиб тест қилишга интиладилар. Аммо прагматиклар ўзларини бошқача тутишади. Бизда дефектларни айнан хозир излаб топишга "мотивация" мавжуд. Чунки биз вақти келиб биздан бошқа одам шу дефектни ва бизни хатони топганида уялиб
қолишликни хохламаймиз. Дефектларниизлашни тўр ёрдамида балиқларни овлашга ўхшатиш мумкин. биз кичкина тўрларни (модуль тестлар) танга балиқларни тутиш учун ва катта тўрларни, (коплекс тестлар) ёвуз акулаларни овлашда ишлатамиз. Баъзида балиқ чиқиб кетиши мумкин, шунинг учун биз иложи борича кўпроқ сирғанувчан дефектларни тутиш мақсадида лойихамиз ховузида сузиб юрувчи барча топилган тешикларни беркитиб борамиз.

62-Кўрсатма
Вахлироқ тест қилинг. Тез-тез тест қилинг. Автоматик тарзда тест қилинг.


Бизда дастурни тексти пайдо бўлиши билан биз уни дархол тест қилишни хохлаймиз. Майда танга балиқчалар тезда бахайбат одамхўр-акулаларга айланиш одатига эга, акулани тутиш эса анча мушкул. Аммо биз барча тестларни "қўлда" (автоматик эмас) қилишни хохламаймиз.
Кўпгина жамоалар ўз лойихалари учун мураккаб тест режаларни ишлаб чиқади. Баъзи вақтларда улардан фойдаланадилар хам. Аммо биз аниқладикки, автоматик тестларни ишлатувчи жамоаларнинг муваффаққият қозониши имконияти кўпроқ. Дастурни хар "қурилиш" жараёнида автоматик тарзда ишлаб кетувчи тестлар токчада турган тест режалардан кўра самаралироқ.
Дефект қанча вахлироқ аниқланса, уни тўғирлаш шунча арзонроқ тушади. Smalltalk оламидаги машхур - "Жиндан ёзсанг, жиндак текширасан" иборани ўзимизга оламиз ва дастурни ичши "варианти" битиши билан (баъзи вақтларда ундан хам аввалроқ) уни тестини хам ёзамиз.
Аслини олганда муваффаққиятли лойихада ишчи дастурларидан кўра уларни тест қилувчи дастурлари кўпроқ бўлади. Тест дастурларини ёзишга кетган вақт харажатлари ўзини оқлайди. Охир оқибат бу анча арзонроқ тушади ва сиз хақийқатдан деярли дефектсиз бўлган махсулатни оламга келтириш имконига эга бўласиз. Бундан ташқари, тестдан ўтганингиз, сизга дастурни бўлаги "тайёр"лиги хақида кўпроқ ишонч бахш этади.

63-Кўрсатма
Дастур тестдан ўтмагунча ёзилган хисобланмайди.

Сиз дастурни бир бўлагини ёзиб бўлганингиз, хўжайинни ёки буюртмачини олдига бориб унга "битганлиги" хақида хабар бериш кераклигини англатмайди. Дастур тайёр эмас. Аввалам бор, реалликда дастур хеч қачон тайёр бўлмайди. Ва бундан хам мухими, то ёзган дастурингиз барча мавжуд бўлган тестлардан ўтмагунга қадар сиз дастурингизни у бу ким ишлатиши хақида гапира олмайсиз.
Бутун лойиха миқёсида тест қилишнинг учта асосий омилларини кўриб чиқиш лозим: нимани тест қилиш, қандай қилиб тест қилиш ва қачон тест қилиш.

Нимани тест қилиш лозим
Дастурларни тест қилишни бир неча хил усуллари мавжуд:

  • Модульлик тест қилиш
  • Комплекс тест қилиш
  • Тўғриликни тасдиқлаш ва "верификация"
  • Ресурсларни етишмаслиги холатида тест қилиш, хатоликлар ва уларни тўғирлаш
  • Унумдорликни тестлари
  • Фойдаланиш қулайлигини тестлари

Ушбу рўйхат тўлиқ эмас ва баъзи махсус лойихаларда бошқа тест қилиш усулларини хам қўллаш керак бўлади. Аммо бу сизга яхши бошланғич асос бўлади.

Модульлик тест қилиш
Модульлик тест бу дастурни бирон бир модулини тест қилиш учун тузилган дастур. Бу мавзу "Тест қилишга осон дастур" бўлимида ёритилган. Модульлик тест қилиш ушбу бобда гап кетадиган барча бошқа тестларни асоси хисобланади. Агарда модульлар ўзи алохида ишламаса, хой на хой улар биргаликда хам яхши ишлай олмайди. Дастудаги барча модульлар ишлашни давом этиш учун албатта модульлик тестлардан ўтиши лозим. Хар бир модульлар индивидуаль тестлашдан ўтгандан сўнг, сиз янги босқичга тайёрсиз. Сиз модульлар бир бирини қандай ишлатаятганини ва бутун тизим билан қандай уйғунликда ишлаятганлигини текширишингиз шарт.

Комплекс тест қилиш
Комплекс тест қилиш лойиха ташкил топган асосий тизимлар яхши ишлаятганини ва бир бири билан тўғри муомала қилаятганлигини кўрсатиб беради. Яхши текширилган контрактлар бўлган холатда интергация билан боғлиқ бўлган хар қандай муаммоларини аниқлаш қийин бўлмайди. Акс холда интеграция жараёни дефектларни кўпайиши учун яхшигина заминга айланади. Аслида кўп холатларда бу тизимдаги дефектларни энг йирик ва ягона манбаи бўлади. Комплекст тест қилиш модульлик тест қилишнинг давоми хисобланиб фарқи сиз энди барча тизимлар бир бирларини контрактларига қанчалик амал қилаятганини текширасиз.

Тўғриликни текшириш ва верификация
Қўлингизга ишловчи фойдаланувчи интерфейси ёки уни прототипи келиши илан, сиз қуйидаги саволга жавоб беришингизга тўғри келади: бу нарса хақиқатдан хам фойдаланувчилар сизга айтган ва улар кўрмоқчи бўлган нарсами? Махсулот тизимни фунционал талабларига жавоб берадими? Буни хам тест қилиш лозим. Нотўғри саволларга жавоб берувчи дефектсиз тизим, фойда келтирмайди. Фойдаланувчини ишлаш сехамалари қандайлигини ва уларни дастурчи қиладиган тест маълумотларидан фарқи борлигини англамоқ лозим (мисол тариқасида "Отладка" бобида келтирилган мўйқалам билан чизиш тарихига эътибор беринг). Ресурслар етишмовчилиги шароитида тест қилиш, хатоликлар ва
уларни тўғирлаш.
Энди сиз тизим идеал шароитда қандай ишлашини тушунасиз, сиз уни реал шароитларда қандай ишлашини текширишингиз керак. реал хаётда дастурларингизни ресурслари чегараланган - улар тугаб боради. Дастурингиз қуйидаги чекловларга рўбарў келиши мумкин:

  • Хотира хажми
  • Қаттиқ диск ўлчами хажми
  • Процессорни қуввати
  • Такт частотаси
  • Диск алмашинуви тезлиги
  • Тармоқни ўтказувчанлик қобилияти
  • Рангли палитра
  • Экранни "разрешения"си

Сиз дискда жой етишмаслигини ва хотира хажмини хақийқатдан хам текширишингиз мумкин, амо қолган чекловларни хам текшириб турасизми? Дастурингиз 640x480 ўлчамда ва 256 та рангда ишлайдими? 1600x1280 ўлчамидачи ва бунда уни кўриниши жда кичик бўлиб кетмайдими? Пакетли буйруқ то архивация дастурини ёқиладиган вақтигача ишлашни тугатадими?
Сиз Операцион тизимдаги чекловлар мавуждлигини, видео тизимдаги камчиликларни аниқлашингиз мумкин ва уларга кераклича мослашиб олишингиз хам мумкин. Аммо барча хатоликларнинг хам қайта тиклаб бўлмайди. Агар дастур хотира етишмаслигини аниқласа, сизни фаолиятингиз чегараланган: сизга дастурни ишини тўғри тамомлашга ресурслар етишмай қолади.
Тизимни иш фаолияти бузилганида, бу жараён чиройли бўладими? Бу холатда у бажара олиши мумкин бўлган ишни энг яхшисини бажара оладими, - ўз холатини сақлаб қолиб маълумотлар йўқолишини олдини оладими? Ёки у фойдаланувчига "Хавфсизликга тегишли хатолик" ёки "core dump" (тизимни ядросини ўчиши) деган хатоликни чиқарадими?

Унумдорликни тест қилиш
Унумдорликни тест қилиш, "нагрузка"ли тест қилиш ёки тизимни реал ишлатиладиган шароитда тест қилиш хам лойихани мухим омилларидан бўлиши мумкин. Ўзингизга савол беринг, дастур реал хаётдаги шароитдаги унумдорликга бўлган талабларга жавоб берадими - кутилаятган фойдаланувчилар сонига, бир вақт бирлигидаги уланишлар ёки транзакциялар сонига.
Баъзи дастурлар билан ишлашда сизга махсус тест қилувчи қурилмалар ёки реал "нагрузка"ларни "имитация" қилувчи дастурлар керак бўлиши мумкин.

Фойдаланиш қулайлигини тест қилиш
Фойдаланиш қулайлигини тест қилиш юқорида мухокама қилинган тест қилиш тадбирларидан фарқ қилади. У реал фойдаланувчилар билан, реал шароитларда амалга оширилади. Фойдаланиш қулайлигини инсон фактори томонидан кўриб чиқамиз. Талабларни тахлили қилиш жараёнида алохида эътиборни талаб этадиган тушунмовчиликлар келиб чиқдими? Дастур фойдаланувчига унинг қўлларини давоми бўладигандай мос келадими? Худди тўғрилигини тасдиқлаш ва верификация қилинганидек, сиз фойдаланиш қулайлигини иложи борича вахлироқ хали ўзгартиришлар киритишга вақт борида тест қилишингиз керак. Жуда катта лойихаларда эса сиз инсон фактори сохасида мутахассисларни хам жалб қилишингиз мумкин. Фойдаланиш қулайлигига мос келмаслик аломати хам худди сонни 0 га бўлишдек дефект хисобланади.

Фарход Дадажонов таржимаси

Manba: http://virtualdars.uz

Share