2013年11月11日月曜日

Бүтээмж

Японд ирээд удаагүй байсан юм даг. Энэ явдал одоогоос 7 орчим жилийн өмнө болжээ. 

Нэг удаа Японы асар том даатгалын компаний системийн хөгжүүлэлтэнд оролцох завшаан тохиолдсон юм. Хөгжүүлэлтийн эхний үе шатаас эхлэн оролцохоор болсон ба манай баг гэхэд л 20 орчим хүнээс бүрдэх нүсэр том төсөл байлаа.

Дэлгэцийн зохиомжийг багийн гишүүд бүгд хийхээр болов оо. Асуудлын гол нь хэрэгцээ шаардлагыг бүрэн тодорхойлж дуусаагүй байв. Дэлгэц бүр 100-500 оруулах талбар (textbox, text area, combobox г.м) - тай агаад талбар бүрийн хувьд тухайн талбарын нэр (論理名: logical name, 物理名: physical name), оруулах өгөгдлийн төрөл, өгөгдлийн хэмжээ гэх мэтийг нэг бүрчлэн Excel фаилд шивж оруулах ажил байлаа. Ганцхан удаа хийнэ гэвэл ч асуудал байсангүй. Төслийн явцад 4-5 удаа өгөгдлийн төрөл, талбарын нэр өөрчлөгдөх нь энүүхэнд. Үүгээр зогсохгүй энэ зохиомжоос гүйцэтгэл (программчлах) хийнэ. Гүйцэтгэл хийхэд дараах кодыг бичих ёстой байлаа.
  • Form Class - Java Bean гэгдэх класс (UserInfoForm.java)
  • Дэлгэцнээс оруулсан өгөгдлийг шалгах тохиргоо:  apache commons validator-н тохиргоо (user-info-validator.xml)
  • Бизнес логик буюу процессор класс (UserInfoProcessor.java)
Япончууд дуулгавартай, хичээнгүй юм болохоор юу ч бодолгүй өөрчлөгдөх бүрт залхуугүй засаад, дээрх үйлдлийг давтаад л ... Би 2 удаа нэлээд тэвчээр гарган хийж үзлээ. Гурав дахиас нь дахиад хэдэн ч удаа өөрчлөгдөө билээ. Ерөөсөө VBA ашиглаад макро биччихвэл зохиомж өөрчлөгдөх бүрт автоматаар кодыг үүсгэж болох юм гэж бодлоо.

VBA мэдэхгүй тул жаал интернэт ухаад хагас өдөр оролдсоны эцэст ямар ч байсан бүгдийг нь генерацладаг болголоо. Гэхдээ япон үсэгтэй болоод ирэхээр үсэг нь танигдахаа байчихаад байлаа. Фаилаас унших, фаил руу бичих үед үсгийн кодыг зааж өгөөгүйгээс болсон нь тэр. Манай төсөлд VBA-д нэвтэрхий япон байсан тул түүнээс үсгийн кодыг хэрхэн зааж өгөх талаар жишээ программ авч макрогоо заслаа. Ингэж би амьдралдаа анх удаа source code generator хийж билээ.

Үүнээс хойш төсөл өрнөхийн хэрээр олон ч хүн шинээр ирж, олон ч удаа зохиомж өөрчлөгдөж, олон ч шинэ дэлгэц нэмэгдсэн билээ. Тэр бүрт миний хийсэн генератор хэрэглэгдэн, маш их цаш хугацаа, хөдөлмөр хэмнэсэн дээ.

Бас нэгэн удаа Curl 4 дээр программ бичих хэрэг гараад Curl-г сурах хэрэг гарав. Долоо хоног оролдсоны эцэст ойр зуурын программ бичихтэйгээ боллоо. Бичсэн программаа тестлэх хэрэг гарч, арай туршлагатай нэгнээс яаж тестлэх талаар асуув. Тэгсэн debug хийж л тестлэдэг юм ярьлаа. Энэ арга хэтэрхий бүтээмж багатай, яг үнэнийг хэлэхэд тохиромжгүй тэнэг арга шиг санагдсан тул интернэтээр хайж үзлээ. 

Харамсалтай нь JUnit шиг CurlUnit гэж байх авч Curl 6 буюу түүнээс дээших хувилбарыг дэмждэг гэсэн байлаа. Өөрөө бичихээр шийдэж JUnit-н source-г нааш цааш нь гүйлгэж жаахан харж байгаад 2 цаг нухаад хийсэн нь нэг иймэрхүү юм болсон юм. Гар утсан дээрх зурагны огноог харвал 2010.09.17 нд хийж байжээ. Сайн харвал цаана нь curl дээр бичсэн код харагдах ажгуу.


Энэ жилийн нэг сард (өмнөх компанид), шахуу төлөвлөгөөтэй хэрнээ тест хамралт (test coverage) өндөр байх ёстой гэсэн сонин өндөр шаардлагатай төсөлд ажиллахаар болов. Бүгд амжихгүй тул нэн түрүүнд зайлшгүй шаардлагатай хэсгийн тест кодыг бичээд тестлэх шаардлагагүй хэсгийг орхичихов. Тэгтэл нэлээн асуудал босох янзтай. Шинэ хүүхдүүд даргад загнуулаад л … Амжуулах боломжгүй, хэт богино хугацаанд бүгдийг тестлэж амжсангүй гэж хэлж чадахгүй, хэцүү байгаа бололтой. Мэнчийтлээ улайсан харагдна. Дөнгөж эхний шат болохоор дараагийн шатанд бас л ингэж хэлүүлж таарах болохоор 1 цаг оролдоод тестлэгдээгүй үлдсэн бүх JavaBean классыг тестлэх тест код генерацладаг нэг tool хийгээд тавьчихлаа. Нөгөө мэнчийтлээ улайсан нөхөр баярлаад жигтэйхэн тасүкаримасү (тус боллоо) гээд л ...

Одоогийн компанид дөнгөж сургууль төгссөн гэлтгүй гайгүй сайн, өсөх ирээдүйтэй, залхуу нөхөр бий. Тэр нөхөр нэг удаа ингэж байна. Тест кодонд ашиглаж байгаа өгөгдлийг гараар бэлтгэх нь их цаг хугацаа, хөдөлмөр зараад байна. Би интернэтээс хайж байгаад мэдээллийн сангаас одоо байгаа өгөгдлийг түүж аваад бэлдэц (fixture-тест өгөгдөл) хийдэг helper биччихлээ гэж байна. Бүх тест кодонд ашиглагддаггүй юм гэхэд автоматаар генерацласан өгөгдлийг засаад ашиглах нь цаг хугацаа хийгээд хөдөлмөр ихэд хөнгөвчлөх тул зөв зүйтэй санаачлага юм.

Энэ мэтээр багт нэг ийм хүн байхад бүтээмж хэд дахин илүү хурдан болдог юм. Эндээс миний юу өгүүлэх гэснийг ойлгосон байх гэж найдна.

2 件のコメント:

  1. Угаасаа тест код генерацладаг нэг tool бичнэ гэвэл бас л мундагын шинж шүү.... Жич: Баруун тал сонсоо тэр [ өсөх ирээдүйтэй, залхуу нөхөр ] нь хэний хэн бэ? хэ хэ хэ хэ

    返信削除
  2. Тэрийг дараа жич хэлэмз!

    返信削除