Судалгааны логикийг шалгах - Нарийвчилсан
From LimeSurvey Manual
Ерөнхий
Нарийн төвөгтэй судалгааг үүсгэх, хялбархан засвар үйлчилгээ хийхэд тусалдаг чухал сонголт бол Судалгааны логикийг шалгах юм.
Судалгааг боловсруулж, туршиж байх явцад мөн идэвхжүүлэхээс өмнө судалгааны логикийг баталгаажуулах нь маш чухал. Ялангуяа нарийн төвөгтэй холбогдох, тохируулга хийх, баталгаажуулах тэгшитгэлүүдийг ашиглаж байгаа үед судалгааг ажиллуулахад юу ч эвдрэхгүй гэдэгт итгэлтэй байх шаардлагатай.
Энэ боломж нь таны судалгаа, бүлэг болон асуултуудын нарийвчлалыг хурдан баталгаажуулах боломжийг олгоно. Үүнд судалгаатай холбоотой тохиргооны доор байрлах Дээд мөрийн цэсээс хандаж болно. Энэ нь зааварчилгаа цэсээр дамжуулан боломжтой:
Дээрх зургаас харж болохоор, судалгаанд ашигласан хэл бүрийн хувьд энэ сонголтыг дөрвөн удаа ажиллуулж болно.
Тодорхойлолт
Судалгааны логикийг шалгах сонголт нь асуулт, бүлэг бүрийн хувьд таны заасан бүх зүйлийг (жишээ нь: нэр, текст, тусламж, нөхцөл/холбогдох байдал, баталгаажуулах дүрэм, өгөгдсөн утгууд, дэд асуултууд, хариултууд) тохиромжтой хүснэгт хэлбэрээр харуулдаг. Энэ нь алдааг тодруулж, асуулт болон бүлгийн ID-г (эсвэл тэгшитгэлд ашигласан хувьсагчдыг) дарж шинэ хөтчийн таб нээн тэдгээр асуулт, бүлгийг засах боломжийг олгоно. Ингэснээр аливаа алдааг хурдан засаж, логик шалгах хуудсыг шинэчлэн судалгааг идэвхжүүлэхээс өмнө түүний нарийвчлалыг баталгаажуулах боломжтой.
Мөн энэ дэлгэц нь судлаачид болон судалгааны ивээн тэтгэгчид судалгааны загвар, логикийн нарийвчлалыг баталгаажуулж чадахуйц уншигдахуйц байхаар зохиогдсон. Судалгааны логикийг шалгах нь идэвхтэй судалгаанд ашигласан бүх илэрхийллийн кэшийг шинэчилдэг.
Үүнд дараах багануудыг агуулна:
- # - 0-ээс эхлэн бүлэг болон асуултын дарааллын тоог харуулна.
- Нэр [ID] - бүлэг/асуулт/дэд асуултын асуултын кодыг харуулна. Эдгээр кодыг илэрхийлэл доторх хувьсагч болгон ашиглаж болно. ID нь асуултын ID (QID) буюу бүлгийн ID (GID) юм. Энэ талбар нь мөн асуултын төрлийг (жишээ нь: Олон сонголт [M])) харуулдаг.
- Ач холбогдол [Баталгаа нотолгоо] (Өгөгдсөн) - дараахыг харуулна:
- Ач холбогдол - асуулт эсвэл бүлгийн синтаксаар тодруулсан холбогдох тэгшитгэл. Хэрэв энэ нь үргэлж үнэн бол (ямар ч тохиолдолд харагдах бол) утга нь 1 байна.
- Баталгаа нотолгоо - ExpressionScript нь сонгосон асуултын шинж чанарууд (жишээ нь: хариултын хамгийн бага/их тоо, нийлбэр утгын хамгийн бага/их/тэнцүү, нэг утгын хамгийн бага/их эсвэл тогтмол хэмжигдэхүүнээр баталгаажуулах) дээр үндэслэн баталгаажуулах тэгшитгэлийг автоматаар үүсгэдэг. Энэ хэсэг нь үүсгэсэн баталгаажуулах тэгшитгэлийг харуулдаг тул та аливаа алдааг (тодорхойгүй хувьсагч гэх мэт) илрүүлэх боломжтой.
- Асуултын түвшний баталгаажуулалт нь дээр дурдсан асуултын шинж чанаруудыг шалгахад шаардлагатай тэгшитгэлийг харуулна
- Дэд асуултын түвшний баталгаажуулалт нь array_filter, array_filter_exclude, exclusive_option-ийг хэрэгжүүлэхэд шаардлагатай тэгшитгэлийг харуулна
- Өгөгдсөн - хэрэв асуулт үндсэн утгатай бол энд синтаксаар тодруулан харуулна (үндсэн утга нь илэрхийлэл байж болох тул).
- Текст [тусламж] (зөвлөлгөө) - дараахыг харуулна:
- Текст - бүлэг, асуулт, дэд асуулт эсвэл хариултын текст. Энэ нь суулгагдсан тохируулгыг харуулахын тулд синтаксаар тодруулагдсан тул тохируулгад ашиглахаар төлөвлөсөн бүх хувьсагчаа зарласан эсэхээ шалгах боломжийг олгоно.
- тусламж - энэ нь асуултын тусламжийн текстийг мөн синтаксаар тодруулан харуулна.
- зөвлөлгөө - энэ нь асуултын шинж чанарууд дээр үндэслэн дотооддоо үүсгэсэн баталгаажуулах зөвлөмжийг харуулна. Ижил зөвлөмжийг бүх судалгааны загвар, мөн хэвлэх боломжтой судалгаа болон мэдээлэл оруулах дэлгэцүүдэд ашигладаг.
- атрибут асуултууд - энэ нь тухайн асуултад хамаарах бүх шинж чанарын хүснэгтийг харуулна. Тэгшитгэл байж болох шинж чанаруудыг нарийвчлалыг нь шалгахын тулд синтаксаар тодруулсан.
Мөрүүдийг дараах байдлаар өнгөөр ялгасан:
- Бүлгүүд - цайвар саарал дэвсгэртэй харагдана
- Асуултууд - цайвар ногоон дэвсгэртэй харагдана
- Дэд асуултууд - цайвар шар дэвсгэртэй харагдана
- Хариултууд - энгийн цагаан дэвсгэртэй харагдана
Хариултууд Ач холбогдол баганад нэмэлт шинж чанартай байдаг:
- Утга - энэ нь тооцоололд ашиглагддаг үндсэн дотоод утга юм. Хэрэв та үнэлгээ ашиглаж байгаа бол энэ нь үнэлгээний утга байна. Үгүй бол хариултын нэртэй ижил байна.
Хэрэглээ
Хуудасны дээд хэсэгт хураангуй мессеж байдаг. Хэрэв бүх зүйл хэвийн бол "Энэ судалгаанд синтаксийн ямар нэг алдаа илрээгүй", эсвэл "Энэ бүлэг" буюу "Энэ асуулт" өөрөө синтаксийн алдаа агуулаагүй гэж харагдана. Эсрэг тохиолдолд "X асуултад засах шаардлагатай синтаксийн алдаа байна" гэж харагдана.
Синтаксийн алдаатай асуулт бүрийн хамгийн зүүн баганын (өөрөөр хэлбэл #) дэвсгэр улаанаар тэмдэглэгдэнэ. Мөн асуултын хамгийн багадаа хэдэн алдаатай байгааг заасан сануулга Нэр [ID] баганын доор харагдана. Дараах алдаанууд түгээмэл байдаг:
- тодорой бус хувьсах хэмжигдэхүүн - хэрэв та бүх хувьсагчаа тодорхойлоогүй эсвэл array_filter-ийг (эсвэл array_filter-ийн хариултын сонголтуудын өөр багцыг) буруу бичсэн бол таны зарим баталгаажуулах асуултууд алдаа харуулна. Тодорхойгүй хувьсагчид улаан тексттэй, улаан шугамаар хүрээлэгдсэн байдлаар харагдана.
- Буруу синтакс - холбогдох тэгшитгэл ашиглаж эхлэхэд хаалтыг хэт олон эсвэл хэт цөөн ашиглаж магадгүй. Ийм синтаксийн асуудлууд тодруулагдаж, улаанаар хүрээлэгдэнэ. Хулганаа ийм улаан хүрээтэй текст дээр аваачвал алдааг тайлбарласан зөвлөмж гарч ирнэ.
ExpressionScript синтаксийн өнгөнүүд
Нөхцөл болон тэгшитгэлүүдийг юу болохыг нь хялбар ойлгохын тулд синтаксаар тодруулсан байдаг:
- Ногоон / Цайвар цэнхэр: Судалгааны өмнөх асуултыг заасан хувьсагч
- Цэнхэр: Функц
- Саарал: Тэмдэгт мөрийн илэрхийлэл
- Бор: TOKEN илэрхийлэл (оролцогчийн мэдээлэл)
- Хар: Оператор
Шалгах зүйлс:
- Нил ягаан: Судалгааны дараагийн асуултыг заасан хувьсагч. Энэ нь ихэвчлэн алдаа байдаг тул шалгах шаардлагатай.
- Улаан эсвэл улаан хүрээ: Байхгүй хувьсагч эсвэл өмнөх асуултыг заасан холбоос эсвэл синтаксийн алдаа - ихэвчлэн шалгах шаардлагатай.
Тодорхойгүй хувьсагчид
Хэрэв тодорхойгүй хувьсагчийг ашигласан бол тухайн хувьсагчийн нэр улаан өнгөтэй, улаан шугамаар хүрээлэгдсэн байдлаар харагдана. Хулганаа хувьсагчийн нэр дээр аваачвал "undefined variable" гэж харагдана:


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


Энд синтаксийг тодруулах талаар олон сайн жишээ байна.
Алдаатай custom JavaScript
JavaScript-ийн алдаанууд мөн судалгааны логик шалгалтад тодорч харагдана:

Засвар болон баталгаажуулалтыг түргэсгэх
Синтаксаар тодруулсан бүх текстэд товшиж болдог зөвлөмж (tooltip) шингээгдсэн байна:
- Tooltip-ууд
- Функцүүд - хулганаа дээр нь аваачиход функцийн зорилго болон синтаксын тодорхойлолтыг харах боломжтой;
- Хувьсагчийн нэрс - хулганаа дээр нь аваачиход асуултын байрлал (бүлэг, асуултын дараалал), асуултын текст болон зөвшөөрөгдөх хариултуудыг харах боломжтой.
- Үйлдлүүд
- Хувьсагчийн нэрс - хувьсагчийн нэр дээр товшиход асуултыг засах шинэ цонх нээгдэнэ. Энэ нь логикийг шалгах, шилжихэд хялбар болгодог - асуултын relevance эсвэл баталгаажуулалтын нөхцөл дэх хувьсагчийн нэрс дээр товшсоор тэдгээр хаанаас гарч, хэрхэн ашиглагдаж байгааг харна уу.
Жишээнүүд
Дараах жишээнүүдийг ExpressionScript-ийн жишээ судалгаанууд-аас авсан болно. Ажиллаж буй судалгааны дэлгэцийн зураг, тайлбар, татаж авах файлуудыг тэр хуудаснаас олох боломжтой.
Биеийн жингийн индекс
Энэ жишээний дэлгэцийн зургуудыг эндээс харна уу.
Энэ бол Биеийн жингийн индексийн тооцооллын асуултыг дахин эрэмбэлэх харагдац юм. Асуулт баганын доор жин, өндөр, БЖИ-ийн relevance тэгшитгэлүүдийг харж болно:

Судалгааны тойм илүү сайн харахын тулд судалгааны логик шалгах хуудсыг үзнэ үү:

Энэ судалгааны жишээ нь "weightstatus"-ийг үүсгэхэд ашигласан давхар if() илэрхийллийн сайн жишээ юм.

Каскад логик
Энэ жишээний дэлгэцийн зургуудыг эндээс харна уу.
Энэ нь array_filter болон array_filter_exclude-ийг ашиглах үед автоматаар үүсдэг дэд асуултын баталгаажуулалтын логикийг харуулна. Мөн энэ жишээ нь тохируулсан "бусад" утгыг хэрхэн орлуулж болохыг харуулна (Q02_other-ийн хариулт нь Q01_other байна).

Энэ жишээн дэх Q05 нь Q01 болон Q02 дээр array_filter, array_filter_exclude-ийг зэрэг ашиглаж буйг харуулна. Энэ жишээ нь array_filter-ийн каскад боломжийг харуулдаг. Асуулт болон дэд асуултын түвшний баталгаажуулалтын нөхцөлийг харуулдгийн гол шалтгаануудын нэг нь array_filter эсвэл array_filter_exclude хувьсагчийн нэрийг зааж өгөхдөө (эсвэл шүүгдсэн дэд асуултуудын жагсаалтдаа өөр хувьсагчийн нэр ашигласан бол) үсгийн алдаа гаргаагүй эсэхээ шалгахад тусалдаг явдал юм. Ийм алдаа байвал буруу хувьсагчийн бүх нэр тодорхойлогдоогүй гэсэн утгаар улаанаар харагдах бөгөөд асуудлыг хурдан засах боломжтой.

Динамик relevance
Энэ жишээ нь асуултын харагдацыг удирдахад ашиглах динамик каскад relevance логикийг харуулна. Энэ жишээг эндээс татаж авч болно.
Мөн асуултууд зөвхөн тодорхой баталгаажуулалтын нөхцөл биелсэн тохиолдолд л харагдахыг анхаарна уу. Жишээлбэл, хэрэв хүн 2 хүүхэдтэй гэж хариулбал хариулагч тодорхой асуултуудыг (kid1 болон kid2) заавал бөглөх шаардлагатай болно.

Бүлгийн түвшний холбогдолтой байдал
Энэ жишээ нь бүлгийн түвшний холбогдолтой байдал логик шалгалтад хэрхэн харагддагийг үзүүлнэ. Доор тайлбарласан жишээний дэлгэцийн зургуудыг эндээс үзнэ үү.
Таны харж байгаагаар бүлгийн түвшний холбогдох тэгшитгэл (cohabs > 1 && p1_rel != "") нь G-2 бүлгийн саарал өнгөтэй "Person 2" мөрөнд харагдаж байна.
Мөн бүх асуулт заавал хариулах шаардлагатай байгааг анзаарч болно. Гэхдээ бүлэг нь холбогдолгүй бол түүний бүх асуулт мөн холбогдолгүй болно. Иймээс эдгээр асуулт нь зөвхөн бүлэг холбогдолтой үед л үнэхээр заавал хариулах шаардлагатай болно.
Түүнчлэн зарим асуулт нь өмнөх асуултын хариулт хоосон биш үед л харагддагийг анзаарч болно. Доороос харахад, p2_sex бөглөгдөөгүй бол p2_name нь заавал хариулах асуулт хэдий ч харагдахгүй. Мөн p2_name бөглөгдөөгүй бол заавал хариулах p2_age асуулт ч харагдахгүй. Эдгээр асуултыг "нөхцөлт заавал хариулах" асуулт гэж үзэж болно.
Нэмж дурдахад, зөвлөлгөө мессежүүд мөн автоматаар үүсдэг. Тэдгээрийг утгын хязгаар (min/max), нийлбэр утгын хязгаар (min/max/equals), хариултын тоо (min/max) гэх мэтээр (ашигласан асуултын төрөл болон идэвхтэй атрибутээс хамаарч) ангилсан байдаг. Заримдаа та хариултын хязгаарыг шалгахыг хүсэх боловч хэрэглэгчид утгагүй мэт харагдах баталгаажуулалтын зөвлөлгөөг харуулахыг хүсэхгүй байж болно. Ийм тохиолдолд та hide_tip асуултын сонголтыг ашиглаж болно (энэ жишээнд хэрэглэгч буруу утга оруулахыг оролдох хүртэл насны утга 0-ээс 115-ын хооронд байх ёстой гэж хэлэхгүйн тулд ашигласан - p2_age-ийг үзнэ үү).

Таслалыг аравтын бутархай тусгаарлагчаар ашиглах
LimeSurvey нь ажиллах үед таслалыг аравтын бутархай тусгаарлагчаар ашиглахыг бүрэн дэмждэг боловч загвар зохиох үед (жишээ нь асуултын нарийвчилсан атрибутад min/max утгыг зааж өгөхдөө) аравтын цэгийг тусгаарлагчаар ашиглах ёстой. Ажиллаж буй жишээг эндээс үзнэ үү.
Мөн баталгаажуулалтын логик нь идэвхжүүлсэн асуултын атрибутээс автоматаар үүсдэгийг санаарай. Тэгшитгэлүүд төвөгтэй харагдаж болох ч та тэдгээрийн талаар санаа зовох шаардлагагүй.

