erheme318
Mocks Aren't Stubs

Updated a year ago

Source code of mocks-aren-t-stubs mongolian translation

Mocks Aren't Stubs

"Дуураймал объект" гэж жинхэнэ объектуудыг тестлэхийн тулд ашигладаг тусгай объектуудыг нэрлэдэг бөгөөд нэлээдгүй дэлгэрсэн нэршил юм. Ихэнх програмчлалын хэлний орчингуут одоо дуураймал объектуудыг хялбар үүсгэж болох өөр өөрсдийн гэсэн тогтолцоотой болцгоосон. Гэв ихэвчлэн хангалттай ойлгомжтой байдаггүй нэг зүйл нь юу вэ гэхлээр хэдийгээр дуураймал объект нь тестлэх зорилгоор ашиглагддаг нэг хэлбэрийн тусгай объект боловч, мөн нөгөөтээгүүр тестлэх өөр нэг загварчлалын аргыг бий болгосон байдаг. Энэхүү нийтлэлээр би та бүхэнд дуураймал объект хэрхэн ашиглагддаг, үйлдэл шалгах явцыг (behavior verification) хэрхэн дэмждэг болон мөн хөгжүүлж, дэмжиж буй бүлгэмийн залуус хэрхэн өөр нэг тестлэх загварыг хөгжүүлж байгаа талаар тайлбарлах болно.

Би энэхүү "дуураймал объект" гэх нэршлийг анх хэдэн жилийн өмнө Extreme Programming (XP) бүлгэмийн нөхдүүдээс дуулж билээ. Түүнээс хойш энэхүү дуураймал объектууд миний сонирхлыг улам ихээр татах болсон. Нэг шалтгаан юу гэхлээр дуураймал объектуудын хөгжүүлэлтийг авч явж байсан нэлээдгүй хөгжүүлэгчид надтай хамт ThoughtWorks-д хамт ажиллаж байсантай холбоотой байх. Нөгөө нэг шалтгаан нь юу гэвэл би энэхүү ойлголтыг XP -ын нөлөөлөлтэй тестлэх аргад тулгуурласан зохиол бүтээлүүдээс их харж байсантай ч холбоо байх.

Гэвч би энэхүү дуураймал объектуудын талаар муу тайлбарласан зүйлүүдтэй олонтаа таардаг. Ялангуяа хүмүүс эдгээр алдуур объектуудыг хэлтэрхий (stub) тай хольж хутгаад байдгийг би мэднэ. Яагаад хольж хутгаад байдгийг нь ч би сайн мэднэ - учир нь би өөрөө ч нэг хэсэг мөн тэгж харж байлаа. Харин тэдгээр дуураймал объектын хөгжүүлэгч нартай хийсэн ярилцлагууд намайг өчүүхэн ойлголтоос минь бүр цөм рүү нэвтрэн орж, нарийн мэдэхэд минь их тус болсон.

Тайлбар: Stub - тест энд объектын зөвхөн зарим методын үйлдлийг дуурайлгах зорилгоор ашиглагддаг тул хэлтэрхий объект гэж нэрлэсэн

Энэ ялгаа нь үнэндээ бол хоёр тусдаа ялгаатай зүйлүүд байгаа юм. Нэг талдаа тестийн үр дүнг хэрхэн батлах аргуудад ялгаа бий: объектын төлөвийг батлах (state verification) болон объект хоорондын харьцаж буй үйлдлийг батлах (behavior verification). Нөгөөтээгүүр тестлэх, загварчлах хоёрын хоорондоо хэрхэн нөлөөлж байгаа арга барил философи -д нь ялгаа бий. Энэ ялгааг би доор тайлбарлахдаа Тестээр хөтлөгдөх хөгжүүлэлт (Test Driven Development) -ын сонгодог болон дуураймал аргууд гэж нэрлэсэн болно.