TDD -р хөтлөгдөх

Орчуулгыг бүтэн эхээр нь та wordpress-ээс болон   gitbook.com  -с  үзэх боломжтой.

Дууриамал объект бол XP -ийн бүлгээс гаралтай ба XP-ын гол онцлогуудын нэг нь Тестээр Хөтлөгдөх Хөгжүүлэлт (Test Driven Development) -ийн аргыг чухалчилдаг билээ. Үүнд системийн загварын хувьсал, өөрчлөлтүүд нь бичигдэх тестээр хөтлөгдөн давталтат (iterative) байдлаар хийгддэг.

Тиймээс дууриамал тестийн аргаар хөгжүүлэгчид тухайн арга системийн загварт хэрхэн нөлөөлдөг талаар тусгайлан авч үздгийг гайхах зүйлгүй юм. Ялангуяа тэд Need-driven development (шаардлагаас хөтлөгдөх хөгжүүлэлт) гэх аргыг зориуд дэмждэг. Энэ аргаар бол та user story (хэрэглэгчийн шаардлага, хэрэглэгдэх байдал) -ыг хөгжүүлэхдээ эхлээд системийн хамгийн гадна талаас нь тестлэх байдлаар эхэлж, SUT (System Under Test)-ынхаа интерфайсыг тодорхойлдог. Хамтрагч объектуудын хийгдэх үйлдлүүдийг нь олохдоо, SUT болон түүний хөрш объектуудыг хоорондын харилцааг судлан SUT-н outbound interface (хөрш объекттой харилцах гаралтын интерфэйс) -ыг судлан олдог.

Хамгийн эхний тест тань ажиллаж байгаа үед дууриамал объект дээр тодорхойлогдсон expectations (тэгнэ гэсэн хүлээлт)-үүд таны дараагын алхам дахь шаардлага болон хувчирч, тестлэх эхний алхам болдог. Ингэж expectation (тэгнэ гэсэн хүлээлт) бүрийг хамтрагч объектын тест болон хувиргах үйлдлийг систем рүү нэвтрэх давхрага SUT бүрт давтана. Энэ загварын аргыг мөн *outside-in* гэж нэрлэдэг ба энэ нь нилээд оновчтой тодорхойлсон нэр юм. Энэ загварчлалын арга layered system (давхаргат систем) -д нилээд сайн таарч ажилладаг. Та эхлээд UI (хэрэглэгчийн интерфэйс)-ыг програмчилах ба түүний доор давхаргуудыг дууриамилаар тодорхойлно. Ингэсний дараа та доорх давхарга нэг бүрт тест бичин аажмаар системийн давхарга бүрт нэвтрэн доошлоно. Энэ загварын арга бол маш зохион байгуулалтай, бүрэн хяналтыг олгодог тул олон хүмүүс ООП (OOP) -г болон TDD -г анхлагч суралцагчдад ихээхэн хэрэгтэй гэж итгэдэг.

Сонгодог TDD арга үүнтэй яг адил зааварчилгаа өгдөггүй. Хэдий тийм ч та mock-ын оронд stub-ыг ашиглан ижил төрлийн алхамаар загварчлах боломжтой. Ингэхийн тулд, SUT-г ажиллуулах тестэнд хамтрагч объектоос ямар нэгэн зүйл хэрэг болох бүртээ уг утгыг hard-coded байдлаар бичнэ. Ингээд та тестээ ногоон болсон үедээ hard-coded утгаа үнэн зөв кодоор сольно.

Сонгодог тестийн арга өөр бас онцлогтой. Нэг нь *middle-out* арга юм. Энэ аргад та шинээр хийгдэх feature-ээ сонгоод, тухайн feature ажиллахад домайн-с юу хэрэг болох талаар бодож, шийдвэр гаргана. Ингээд домайн объектууд юу хийгдэх ёстойг загварчилсныхаа дараа UI давхаргыг дээрээс нь тавин холбож ажиллуулна. Ингэж ажиллахад таньд магадгүй ямар ч дууриамал зүйл хэрэг болохгүй байх. Маш олон хүмүүс энэхүү аргад дуртай байдаг учир нь энэ арга хүний анхаарлыг эхлээд домайны загварчлал (domain model) -д төвлөрүүлдэг ба энэ нь домайны логикууд UI-аас хамаарахгүй байх боломжыг олгодог.

Мөн миний нэг онцолж хэлэх зүйл юу гэвэл сонгодог болон дууриамал загварчлалын аргаар хөгжүүлэгчид бүр тухайн нэг зүйлийг тухайн нэг цагт л хийдэг (do one at a time).
Мөн программын давхрага бүрийг нэг нэгээр нь дараалан гүйцэтгэх буюу нэг давхаргыг дуусгахаасаа өмнө хэзээ ч нөгөө нь эхлүүлэхгүй гэсэн зарчим нь бүр *school of thought* (цэгцтэй, мөрдөж дагадаг зарчмууд) ч болсон байдаг. Сонгодог болон дууриамал загварчлалаар хөгжүүлэгчид хоёул *Agile* аргачлал дээр суурьтай байдаг тул нарийн тусгаарлагдсан давталтат байдлаар (fine-grained iterations) хөгжүүлэхийг илүүд үздэг. Тиймээс тэд давхрага давхрагаар хөгжүүлэхээс илүүтэйгээр feature-үүдийг нэг нэгээр (feature by feature) нь авч ажиллахыг илүүд үздэг.

 

Нийтлэлийг бүтнээр нь мөн gitbook.com -с унших, татаж авах боломжтой. Холбоос https://www.gitbook.com/book/erheme318/mocks-aren-t-stubs

Advertisements

Хариулт үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s