દરેક ટેસ્ટ પાસ થઈ. છતાં યુઝર ગેમ રમી શક્યો નહીં

"API 200 OK રિટર્ન કરે છે!"

મેં મારી પ્રથમ એન્જિનિયરિંગની નોકરીમાં એક મોટી સમસ્યા જોઈ. મારા સિનિયર્સને ડેશબોર્ડ્સ ખૂબ ગમતા હતા. તેમને હાઈ કોડ કવરેજ (high code coverage) ગમતું હતું. તેઓ માનતા હતા કે જો ટેસ્ટ ગ્રીન (green) હોય, તો પ્રોડક્ટ બરાબર કામ કરે છે.

તેઓ ખોટા હતા.

કોડનું કામ કરવું અને કોઈ વ્યક્તિને તેની જરૂરિયાત મુજબનું પરિણામ મળવું એ બંને અલગ બાબતો છે. એક બટન સક્સેસ કોડ (success code) રિટર્ન કરી શકે છે, પરંતુ તે યુઝરને એક બગડેલી સ્ક્રીન પર અટકી જવા માટે છોડી શકે છે.

મેં એપ ચલાવ્યા વગર આ પ્રકારના UX ડેડ-એન્ડ્સ (dead-ends) શોધવાની એક રીત બનાવી છે. હું તેને 'two-agent static walkthrough' કહું છું. તે લૂપમાં વાત કરતા બે AI એજન્ટ્સનો ઉપયોગ કરે છે.

  • એજન્ટ A યુઝર છે. આ એજન્ટ પાસે એક ચોક્કસ લક્ષ્ય છે. તે જિદ્દી છે. તે એક ભૂલ પછી હાર માનતો નથી. તે અલગ-અલગ રસ્તાઓ અજમાવવાનું ચાલુ રાખે છે.
  • એજન્ટ B એપ છે. તેની પાસે વાસ્તવિક સોર્સ કોડ (source code) વાંચવાની એક્સેસ છે. તે યુઝરના દરેક એક્શનના કોડ પાથને ટ્રેસ કરે છે. કોડ ખરેખર શું કરે છે તે તે ચોકસાઈથી રિપોર્ટ કરે છે. તે ફાઇલ અને લાઇન નંબર પણ જણાવે છે. તે કોડમાં જે નથી તેને કલ્પના કરી શકતું નથી.

મેં તેને એક બગડેલા AI મિની-ગેમ જનરેટર પર ટેસ્ટ કર્યું. જે થયું તે અહીં છે:

ટર્ન 1: બટન નિષ્ફળ ગયું. યુઝરે "Generate" પર ક્લિક કર્યું. કોડે નવા એન્ડપોઈન્ટ (endpoint) ને બદલે જૂના, ડેડ એન્ડપોઈન્ટ પર રિક્વેસ્ટ મોકલી દીધી. ટેસ્ટ પાસ થઈ ગયા કારણ કે જૂનું API હજુ પણ કામ કરતું હતું.

ટર્ન 2: ક્લિક ન કરી શકાય તેવું ખાલીપો. યુઝરે રિઝલ્ટ પર ક્લિક કરવાનો પ્રયાસ કર્યો. કોડે ટેક્સ્ટને એક સાદા બોક્સમાં મૂકી દીધું જેમાં કોઈ ક્લિક હેન્ડલર (click handler) નહોતું. કંઈ જ થયું નહીં.

ટર્ન 3: ખોટી ખુશી. યુઝરે ભૂલ સુધારવાનો પ્રયાસ કર્યો. મિસિંગ ID ને કારણે બેકએન્ડ (backend) નિષ્ફળ ગયું. સિસ્ટમ બંધ થઈ ગઈ હોવા છતાં સ્ક્રીન પર ગ્રીન સક્સેસ મેસેજ દેખાયો.

ટર્ન 4: અધૂરી આશા. યુઝરે મેન્યુઅલી કોડ કોપી કરવાનો પ્રયાસ કર્યો. API એ ટેક્સ્ટને અધવચ્ચેથી કાપી નાખ્યું. કોડ બગડેલો હતો.

યુઝરે છોડી દીધું.

મોટાભાગના યુનિટ ટેસ્ટ (unit tests) ફક્ત એ જ ચેક કરે છે કે એન્ડપોઈન્ટ 200 રિટર્ન કરે છે કે નહીં. તેઓ એ ચેક નથી કરતા કે યુઝર ખરેખર તેના લક્ષ્ય સુધી પહોંચે છે કે નહીં.

આનો ઉપયોગ કેવી રીતે કરવો:

  • યુઝર એજન્ટને જિદ્દી બનાવો. વાસ્તવિક બગ્સ (bugs) પ્રથમ ભૂલ પાછળ છુપાયેલા હોય છે.
  • એપ એજન્ટને વાસ્તવિક કોડ સાથે જોડો. આ રોલ-પ્લેને વાસ્તવિક બગ રિપોર્ટમાં ફેરવી દે છે.
  • આનો ઉપયોગ તમારા ટેસ્ટના પૂરક તરીકે કરો. તે એવા અંતરો (gaps) શોધે છે જ્યાં તમારું લોજિક વાસ્તવિકતા સાથે અથડાય છે.

આ પદ્ધતિ સ્ટેટિક અને સસ્તી છે. તમે એક પણ ટેસ્ટ ફિક્સ્ચર (test fixture) લખતા પહેલા જ તે ચાલી શકે છે. તે "કોડ કામ કરે છે" ને "યુઝર સફળ થાય છે" માં ફેરવે છે.

સ્ત્રોત: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o

વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi