Tuesday, May 27, 2008

Сорилын талаархи бага сага тэмдэглэл...

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

Психилоги
Бид сорилын талаар ямар ойлголттой явдаг вэ? Ер нь хэрэгтэй юм уу? Програм хангамжийн сорил гэж ер нь юу юм бэ? Таны бодлоор доорхиос аль нь вэ?
  • Програмд ямар нэг алдаа байхгүйг харуулах ажиллагаа.
  • Сорилын зорилго нь програм хийх ёстой үйлдлээ хийж байгааг батлах явдал.
  • Тайвшрал, сэтгэл амарлихуйг тогтооход чиглэсэн үйл ажиллагаа.
Эсхүл гурвуулаа л зөв зүйтэй юу? Магадгүй тийм байх.

Харин J.Myer "The Art of Software Testing" номондоо "Сорих гэдэг нь аливаа алдаа сэвийг илрүүлэн гаргах, чанарыг тодорхойлох зорилгоор уг програмыг ажиллуулах үйлдэл юм." хэмээн бичжээ. Нөхөр энэ хандлагыг ихэд онцолсон байх бөгөөд ингэхээс ч аргагүй шиг байна. Учир нь хүний үйлдэл, түүний хүсэл зорилготой шууд холбоотой байх тул хэрэв хөгжүүлэгч програмын алдаагүйг батлах гэж байгаа бол аль болох л нормаль кэйсүүдийг сонгон авч сорилдоо ашиглах байх. Гэтэл мөрдөх ёстой хандлага нь үнэн хэрэгтээ эсрэг чигт байх аж...
- - - - - -
Сорилоор алдаа илрээгүй тохиолдолд бид "Сорил амжилттай боллоо!" хэмээн бахаддаг, харин олон илэрхэд"Амжилтгүй боллоо" гэж чимээгүйхэн шивнэдэг. Хандлагын зөрүү бас л гарч байна. Сорилоор алдааг илрүүлэхийг зорьдог тул, эхний тохиолдолд "Сорил амжилтгүй(эсхүл сэжигтэй)", удаахьд нь "Сорил амжилттай боллоо!" гэж үзэх хэрэгтэй юм байна.

Алдааг аль болох эрт илрүүлэх нь тустай. Учир нь хожуу илэрсэн алдааг засахад маш олон газар гар хүрэх, дахин ажил болох шаардлагатай болдог. Доорхи зургаас алдааны өртгийг хэзээ илэрч байгаагаар нь харьцуулан дүрсэлснийг сонирхоно уу.

Эх сурвалж: Ron Patton - Software Testing, 2005 Sams Publishing

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

Сорилд баримтлах 11 мөрдлөгөө
J.Myer-ийн анхлан гаргасан(1979 он) мөрдлөгөө одоо ч хэрэглэгдсээр. Зарим нь ойлгомжтой л байх, зарим нь ч сонин л юм:

Cорилд баримтлах 11 мөрдлөгөө
  1. Сорил гэдэг нь тодорхой нөхцлүүдийг ашиглан тухайн програмын бүрэлдэхүүний алдаа сэвийг илрүүлэн гаргах, чанарыг тодорхойлох зорилт бүхий процесс юм.

  2. Сорил нь нэгэнт алдааг илрүүлэн гаргах зорилготой байдаг юм бол, сайн сорилын нөхцөл нь алдааг илрүүлэн нээх өндөр магадлалыг өөртөө агуулж байх ёстой.

  3. Соригч нь сорилын үр дүнг сайтар нягталж, баталгаажуулах хэрэгтэй.

  4. Сорилын нөхцөлд хүлээгдсэн үр дүн буюу гаралт нь заавал тусгагдсан байх ёстой.

  5. Сорилын нөхцөлд зөвшөөрөх болон үл зөвшөөрөх оролтын өгөгдөл, түүний хүрээг тодорхойлсон байх хэрэгтэй.

  6. Байх магадлалтай алдааны тоо нь одоогоор илрээд байгаа алдааны тоотой шууд пропорциональ хамааралтай байдаг.

  7. Хөгжүүлэлтийн багаас өөр баг сорилыг гүйцэтгэвэл зохимжтой.

  8. Сорил нь давтагдах, дахин хэрэглэгдэх боломжтой байх ёстой.

  9. Сорил нь төлөвлөгдсөн байх хэрэгтэй.

  10. Сорилын үйл ажиллагаа нь төслийн хөтөлбөрт тусгагдсан байх ёстой.

  11. Сорил нь мэдлэг, сэтгэлгээ шаардах нарийн ухаан.

6-р мөрдлөгөө нь их сонирхолтой. Ухаан нь, эхний сорилоор А модулиас 20, Б модулиас 3 алдаа илрүүлжээ гэж саная. Алдааг засаад дахиад сориход аанай л А модулийн алдааны тоо жин дарах магадлал өндөр аж. Зургаар дүрсэлбэл:


Эх сурвалж: Glenford J. Myers - The Art of Software Testing, John Wiley & Sons, Inc.

Сорилын болцын загвар
TMM буюу Сорилын болцын загвар(Testing maturity model) нь өндөр чанартай бүтээгдэхүүнийг тогтоогдсон төсөв зардлаар, товлосон хугацаанд чадварлаг соригчдын бүрэлдэхүүнээр, оновчтой төлөвлөгөөний дагуу сорих зорилго бүхий фрэймворк юм. TMM нь CMM буюу Capability Maturity Model-д тулгуурлан боловсруулагдсан ба эдгээр моделиуд нь хэдүйн дэлхийн даяар нэвтэрч, өдгөө олон пүүс компаниуд даган мөрдөж байна. TMM нь CMM-ийн адилаар таван шаттай:

Эх сурвалж: Ilene Burnstein - Practical Software Testing, Springer

Төвшин 1 – Эхлэл
Програм хангамжийн тодорхойлолтын ямар нэгэн бичиг баримт байхгүй. Сорилын үйл ажиллагаа нь зүгшрүүлэлтээс(debugging) ялгагдах зүйлгүй бөгөөд, програмыг зөв ажиллаж байгааг батлахын тулд хийгддэг. Програмын рилийз нь ямар нэгэн чанарын баталгааг хангаж чаддаггүй. Нөөц, багаж хэрэгсэл, мэргэшсэн боловсон хүчний дутагдалтай. Ийм компани нь CMM-ийн 1-р төвшинд хамаарна.

Төвшин 2 – Фаз тодорхойлолт
Сорил нь зүгшрүүлэлтээс тусгаарлагдах боловч, кодчилолын дараа хэрэгжих процесс байдлаар тодорхойлогдоно. Кодоос шууд хамааралтай учир зөвхөн дууссаны дараа нь гүйцэтгэгддэг. Сорил хийх зорилго нь бүтээгдэхүүн нь тодорхойлолтын бичиг баримттай тулж байгааг батлах явдал. Хар болон шилэн хайрцаг гэх мэт сорилын үндсэн хэлбэрүүд хэрэгжинэ. Сорилын шатууд нь нэгжийн, нэгдсэн, систем, суурилуулалт зэргээр хуваагдана. Сорил нь хөгжүүлэлтийн хожуу шатанд төлөвлөгддөг учир чанар тойрсон асуудал их гардаг. Шүүмж, болон хэлэлцүүлэг хийгддэггүй. Гараар ажиллуулах, турших нь сорилын үндсэн хэлбэр болно.

Төвшин 3 – Нэгдэл(Integration)
Сорилыг кодчилолын дараа бус шаардлага-тодорхойлолтын фазаас эхлэн төлөвлөнө. Бүтээгдэхүүний шаардлагад үндэслэн сорилын зорилтууд тодорхойлогдоно. Сорилын багийг томилохын зэрэгцээ, сорил нь хөгжүүлэлтийн процессын нэгэн чухал хэсэг байдлаар хүлээн зөвшөөрөгдөнө. Сорил нь төлөвлөсөн хугацаа, төсвийн дагуу хэрэгжиж буй эсэх нь байгууллагын хэмжээнд харагдах боломжтой байдаг. Сорилын ерөнхий багаж хэрэгслүүд ашиглагдана. Шүүмж хэлэлцүүлгүүд явагдах боловч, энэ нь албан ёсны процесс болтлоо тодорхойлогдон мөрдөгддөггүй.

Төвшин 4 – Удирдлага болон Хэмжилт
Сорил нь хэмжигдэх боломжтой процесс болно. Хөгжүүлэлтийн бүх шатанд шүүмж хэлэлцүүлгүүд сорилын нэг хэлбэр байдлаар тусгагдан хэрэгжинэ. Програм нь найдвартай байдал, хэрэглэгдэх чадамж, өөрчлөгдөх боломж зэргээр төрөл бүрийн чанарын үзүүлэлтээр соригдоно. Бүх төслийн хэмжээнд сорилын нөхцлүүдийг дахин ашиглах, давтах зорилгоор тусгай санд хадгална.


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

Нэмэлт:
Сорилын талаархи нэн сонирхолтой нийтлэлүүд:

6 comments:

david santos said...

Great post, Battur, great post!
have a nice day

Badka said...

Sonirxoltoi bichleg bna xogshoon. Gexdee bas ix mergejliin ug xelleg denduu olon ymaa. Mani oilgox gej neleen ym bolj bna kk.
Zarim mergejliin ug xellegiin xoino ni xaaltan dotor ch ymuu angliar ni bichvel ix zugeer ym. Jishee ni "Negtgel" gej bna. Uunii ard ni angliar (Integration) gedeg ch ymuu.

Battur Sanchin said...

TO: Badka

Модон үгтэй өгүүлбэрүүд зөндөө байх шиг байна о, хааяадаа нэг засаад байхад гөлчийж л таараа. Integration гэснээс Гоби-ийн "уямж" гэж хэлээд байгаа нэр томъёог нь харин жинхэнэ "integration" гэж орчуулмаар юм биш үү, аан?

Үг буулгах тал дээр Эрка ах ер нь их адтай гэж боддийм. Жишээ нь:
program - хөтөлбөр
default - заяамал
hardware - тоноглол гэх мэтээр.

Badka said...

Оросоос ещё гэдэг үгийг өшөө болгосон юм чинь Hardware-ийг харин Хардвээр гэвэл яасан юм бэ хэхэ

XACAP said...

http://addidea.blogspot.com/ ih goe blog bna!

Батсүхийн Баасанжаргал said...

class-ийг Эрка ах л Анги гээд аваад хаясан байх нь гэж бодлоо