Сонгодог болон дууриамал тестийн арга

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

Одоо би хоёр дахь ялгаа болох сонгодог болон дууриамал TDD -ийн ялгааны талаар судлах боломжтой боллоо. Гол асуудал маань яг хэзээ дууримал объект (бусад Double)  -уудыг хэрэглэх вэ юм.

Сонгодог TDD -ын загвараар бол болж өгвөл аль болох жинхэнэ объектуудыг ашиглаж харин жинхэнийг ашиглахад төвөгтэй үед double -ыг ашиглахыг зөвлөдөг. Тиймээс сонгодог TDD аргаар хөгжүүлэгчид жинхэнэ агуулах (warehouse) объектыг ашиглаж харин mail service -ын оронд double-ыг ашиглах байсан байх. Харин ямар төрлийн double нь тийм ч  чухал зүйл биш.

Дууриамал TDD загвараар хөгжүүлэгчид харин үргэлж дууриамал объектыг бүх төрлийн элдэвийн үйлдлүүдтэй объектын оронд ашигладаг. Дээрх жишээнд агуулах (warehouse) болон mail service хоёрын хоёулангых нь оронд дууриамал объектыг ашиглах байсан.

Үргэлжлүүлэн унших

Mocks болон Stubs объектуудын ялгаа

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

Анх эдгээр ойлголтууд гарч ирэхэд, олон хүмүүс дууриамал объектыг энгийн тестийн ухагдахуун болох stubs-тай хольж хутган, төөрөлдөж байсан. Түүнээс хойш хүмүүс тэдгээрийн ялгааг илүү ойлгосон байх. Хэдийгээр тиймч, хүмүүсийн хэрхэн mock -ыг ашигладгийг мэдэхийн тулд моск болон бусад тест doubles-уудыг мэдэх нь чухал (“doubles” ? хэрэв энэ таньд шинэ ойлголт бол санаа зоволтгүй, хэдхэн мөрийн дараа бүгд ойлгомжтой болно).

Програмын зөвхөн нэг элемент дээр тухайн агшинд санаагаа сайн төвлөрүүлэн та тест хийж байгаа бол энэ бол олны хэлдгээр unit testing юм. Асуудал нь юу вэ гэхлээр таньд ганц нэгжийг (unit) -ыг тестлэхийн тулд ихэвчлэн бусад нэгжүүд шаардлагатай болдог – бидний дээрх жишээн дээр warehouse хэрэг болсон шиг.

Дээрх миний харуулсан хоёр янзын тестын аргад, эхний нь жинхэнэ агуулах (warehouse) объектыг ашиглаж, харин хоёр дахь нь дууриамал агуулах (warehouse) объектыг (мэдээж энэ бол жинхэнэ объект биш) тус тус ашигласан. Хэдийгээр дууриамал объектыг ашиглах нь жинхэнэ агуулах объектыг ашиглахгүй байх нэг хэлбэр боловч мөн өөр төрлийн жинхэнэ биш объектуудыг иймэрхүү тестэд ашиглах боломжтой.

Үргэлжлүүлэн унших

Дууриамал (Mock) объектуудтай тестүүд

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

Одоо би дээрхтэй ижил үйлдлүүдтэй боловч дууриамал объекттой тест бичье. Энэ кодонд би jMock санг ашиглан дууриамал объектуудыг тодорхойлно. jMock бол жава хэлний дууриамал объект-ын сан. Хэдийгээр өөр нилээдгүй хэдэн дууриамал объектын сангууд байдаг хэдий ч, энэ сан нь тэрхүү техникийг үүсгэгчдийн өөсрдийх нь бичсэн сан тул анхлан ашиглахад тохиромжтой.

Үргэлжлүүлэн унших

Mocks Aren’t Stubs (орчуулга)

Агуулга:

  • Ердийн тестүүд
  • Дууриамал объектуудтай тестүүд
    • EasyMock ашиглах
  • Дууриамал объектууд (Mock) болон (Stubs) хэлтэрхий объектуудын ялгаа
  • Сонгодог болон дууриамал тестийн загвар
  • Ялгаануудын дундаас сонгох
    • TDD -р хөтлөгдөх
    • Тестийн өгөгдлийг тодорхойлох
    • Тестийн тусгаарлалт
    • Тестээ хэрэгжүүлэлтэйгээ холбох
    • Загварчлалын төрөл
  • Тэгэхээр би сонгодог уу эсвэл дууриамал аргаар тестлэгч үү
  • Төгсгөлийн бодлууд

 

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

Үргэлжлүүлэн унших

Бүтээгдэхүүнээ бид яагаад тестлэх шаардлагатай вэ ?

Яагаад тестлэх шаардлагагүй вэ ?

  • Хэрэглэгч байхгүй
  • Дээд зэргийн чадварлаг мэргэжлийн ажилчидтай (суперменүүдтэй) тул тестлэх шаардлагагүй
  • Маш богино хугацааны дахин шинэчлэгдэх, нэмэлт өөрчлөлтүүд ордоггүй, нэг л хийгдсэн бол дахин шинэчлэх шаардлагагүй
  • Тетслэх боломжгүй
  • Тестлэх үнэ нь бүтээгдэхүүний үнээс илүү
  • Өмнө нь хэзээ ч алдаа, гомдол гарч байгаагүй, хэрэглэгчээс гомдол ирдэггүй

 

Хэрэв таны хийж байгаа аливаа бизнесийн бүтээгдэхүүн одоо болтол ямар ч тест хийдэггүй, чанар шалгах процесс байхгүй байсаар байгаа бөгөөд шалтгаан нь дээрх жагсаалтанд байхгүй л байгаа бол таны бизнес амжилтаас нилээн хол байгааг сануулмаар байна.

Үргэлжлүүлэн унших

Continuous delivery буюу тасралтгүй хүргэх

Сүүлийн үеийн хамгийн амжилттай яваа интернет, технологийн компани бүр (Google, Amazon, Etsy, Attlassian гэх мэт. Үүнд манай компани нь ч мөн адил La Ruche Qui Dit Oui!) энэхүү “Continuous delivery” буюу тасралтгүй хүргэх арга барилыг өөрсдийн бүтээгдэхүүн шинэчлэх үйл явцад хэрэгжүүлсэн байдаг .

Давуу тал нь гэвэл та бүтээгдэхүүнээ хэрэглэгчдээ хүргэх (deployment) үйл явцаа автомжуулж саадгүй болгосноор, таны бүтээгдэхүүний шинэчлэл тасралтгүй хэрэглэгчид руу тань хүрэх боломжтой болно. Ингэснээр хэрэглэгчээс тань ирэх санал хүсэлт (feedback), аливаа шаардлагууд болон шинэ бүтээгдэхүүний нэвтрүүлэлт зэрэг тань маш хурдан хугацаанд гүйцэтгэгдэх болно.

Үргэлжлүүлэн унших

Thinking fast and slow

51oXKWrcYYL.jpg

Энхбат гуай мөн миний уншиж байгаа номыг саяхан уншаад дууссан байна.

Энэ ном бол эдийн засгаар 2002 онд нобелийн шагнал авсан Daniel Kahneman -ны “Thinking fast and slow” гэдэг ном.

Ерөнхий агуулга нь гэвэл хүний тархи яаж ажилладаг, ямар тохиолдолд хурдан боддог (fast) тархи, ямар тохиолдолд удаан, хянуур боддог (slow) тархи ажилладаг талаар юм. Ялангуяа хүмүүсийн үзэж, харж байгаа зүйлүүд иргээд бидэнд хэрхэн нөлөөлдөг гэх мэт их сонирхолтой зүйлүүд байгаа. Удахгүй уншиж дуусаад товч тайлбар агуулсан блог пост оруулнаа.