ಎಲ್ಲಾ ಟೆಸ್ಟ್ಗಳು ಪಾಸಾದವು. ಆದರೂ ಬಳಕೆದಾರನಿಗೆ ಆಟವಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ
"API 200 OK ಅನ್ನು ನೀಡುತ್ತಿದೆ!"
ನಾನು ನನ್ನ ಮೊದಲ ಎಂಜಿನಿಯರಿಂಗ್ ಕೆಲಸದಲ್ಲಿರುವಾಗ ಒಂದು ದೊಡ್ಡ ಸಮಸ್ಯೆಯನ್ನು ಕಂಡೆ. ನನ್ನ ಹಿರಿಯರಿಗೆ ಡ್ಯಾಶ್ಬೋರ್ಡ್ಗಳೆಂದರೆ ತುಂಬಾ ಇಷ್ಟ. ಅವರಿಗೆ ಹೆಚ್ಚಿನ ಕೋಡ್ ಕವರೇಜ್ (code coverage) ಎಂದರೆ ಇಷ್ಟ. ಟೆಸ್ಟ್ಗಳು 'ಗ್ರೀನ್' ಆಗಿದ್ದರೆ ಉತ್ಪನ್ನವು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಅವರು ಭಾವಿಸುತ್ತಿದ್ದರು.
ಅವರು ತಪ್ಪು ಮಾಡುತ್ತಿದ್ದರು.
ಕೋಡ್ ಕೆಲಸ ಮಾಡುವುದು ಮತ್ತು ಒಬ್ಬ ಮನುಷ್ಯನಿಗೆ ಬೇಕಾದದ್ದು ಸಿಗುವುದು ಎಂಬುದು ಬೇರೆ ಬೇರೆ ವಿಷಯಗಳು. ಒಂದು ಬಟನ್ ಯಶಸ್ಸಿನ ಕೋಡ್ ಅನ್ನು ನೀಡಬಹುದು, ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ ಬಳಕೆದಾರನನ್ನು ಒಂದು ಕೆಟ್ಟುಹೋದ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಸಿಲುಕಿಸಿಡಬಹುದು.
ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರನ್ ಮಾಡದೆಯೇ ಇಂತಹ UX 'ಡೆಡ್-ಎಂಡ್'ಗಳನ್ನು (dead-ends) ಪತ್ತೆಹಚ್ಚಲು ನಾನು ಒಂದು ವಿಧಾನವನ್ನು ರೂಪಿಸಿದೆ. ನಾನು ಇದನ್ನು 'ಟೂ-ಏಜೆಂಟ್ ಸ್ಟ್ಯಾಟಿಕ್ ವಾಕ್ಥ್ರೂ' (two-agent static walkthrough) ಎಂದು ಕರೆಯುತ್ತೇನೆ. ಇದು ಲೂಪ್ನಲ್ಲಿ ಸಂವಹನ ನಡೆಸುವ ಎರಡು AI ಏಜೆಂಟ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ.
- ಏಜೆಂಟ್ A ಬಳಕೆದಾರ. ಈ ಏಜೆಂಟ್ಗೆ ಒಂದು ನಿರ್ದಿಷ್ಟ ಗುರಿ ಇರುತ್ತದೆ. ಇದು ಛಲಗಾರನಾಗಿದ್ದು, ಒಂದು ತಪ್ಪಾದ ನಂತರ ಬಿಟ್ಟುಕೊಡುವುದಿಲ್ಲ. ಇದು ವಿಭಿನ್ನ ಹಾದಿಗಳನ್ನು ಪ್ರಯತ್ನಿಸುತ್ತಲೇ ಇರುತ್ತದೆ.
- ಏಜೆಂಟ್ B ಅಪ್ಲಿಕೇಶನ್. ಇದು ನೈಜ ಸೋರ್ಸ್ ಕೋಡ್ ಅನ್ನು ಓದುವ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ. ಇದು ಬಳಕೆದಾರನ ಪ್ರತಿಯೊಂದು ಕ್ರಿಯೆಯ ಕೋಡ್ ಹಾದಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ. ಕೋಡ್ ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಇದು ವರದಿ ಮಾಡುತ್ತದೆ. ಇದು ಫೈಲ್ ಮತ್ತು ಲೈನ್ ಸಂಖ್ಯೆಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ. ಕೋಡ್ನಲ್ಲಿ ಇಲ್ಲದ ವಿಷಯಗಳನ್ನು ಇದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ.
ನಾನು ಇದನ್ನು ಒಂದು ಕೆಟ್ಟುಹೋದ AI ಮಿನಿ-ಗೇಮ್ ಜನರೇಟರ್ ಮೇಲೆ ಪರೀಕ್ಷಿಸಿದೆ. ಆಗ ಏನಾಯಿತು ಎಂದರೆ:
ಟರ್ನ್ 1: ಬಟನ್ ವಿಫಲವಾಯಿತು. ಬಳಕೆದಾರನು "Generate" ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿದನು. ಕೋಡ್ ಹೊಸ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ಬದಲಾಗಿ ಹಳೆಯದಾದ, ಬಳಕೆಯಲ್ಲಿಲ್ಲದ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸಿತು. ಹಳೆಯ API ಇನ್ನೂ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರಿಂದ ಟೆಸ್ಟ್ಗಳು ಪಾಸಾದವು.
ಟರ್ನ್ 2: ಕ್ಲಿಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಶೂನ್ಯತೆ. ಬಳಕೆದಾರನು ಫಲಿತಾಂಶವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದನು. ಕೋಡ್ ಪಠ್ಯವನ್ನು ಯಾವುದೇ 'ಕ್ಲಿಕ್ ಹ್ಯಾಂಡ್ಲರ್' ಇಲ್ಲದ ಸಾಮಾನ್ಯ ಬಾಕ್ಸ್ನಲ್ಲಿ ಇರಿಸಿತು. ಏನೂ ಸಂಭವಿಸಲಿಲ್ಲ.
ಟರ್ನ್ 3: ಸುಳ್ಳು ಆಶಾವಾದ. ಬಳಕೆದಾರನು ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಿದನು. ಮಿಸ್ಸಿಂಗ್ ID ಕಾರಣದಿಂದ ಬ್ಯಾಕೆಂಡ್ ವಿಫಲವಾಯಿತು. ಸಿಸ್ಟಮ್ ಸ್ಥಗಿತಗೊಂಡಿದ್ದರೂ ಸ್ಕ್ರೀನ್ ಹಸಿರು ಬಣ್ಣದ ಯಶಸ್ಸಿನ ಸಂದೇಶವನ್ನು ತೋರಿಸಿತು.
ಟರ್ನ್ 4: ಅರ್ಧಕ್ಕೆ ನಿಂತ ಆಸೆ. ಬಳಕೆದಾರನು ಕೋಡ್ ಅನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಕಾಪಿ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದನು. API ಪಠ್ಯವನ್ನು ಅರ್ಧಕ್ಕೆ ಕತ್ತರಿಸಿತು. ಕೋಡ್ ಕೆಟ್ಟುಹೋಗಿತ್ತು.
ಬಳಕೆದಾರನು ಬಿಟ್ಟುಹೋದನು.
ಹೆಚ್ಚಿನ ಯೂನಿಟ್ ಟೆಸ್ಟ್ಗಳು ಕೇವಲ ಎಂಡ್ಪಾಯಿಂಟ್ 200 ಅನ್ನು ನೀಡುತ್ತದೆಯೇ ಎಂದು ಮಾತ್ರ ಪರಿಶೀಲಿಸುತ್ತವೆ. ಬಳಕೆದಾರನು ತನ್ನ ಗುರಿಯನ್ನು ತಲುಪುತ್ತಾನೆಯೇ ಎಂದು ಅವು ಪರಿಶೀಲಿಸುವುದಿಲ್ಲ.
ಇದನ್ನು ಹೇಗೆ ಬಳಸುವುದು:
- ಬಳಕೆದಾರ ಏಜೆಂಟ್ ಅನ್ನು ಛಲಗಾರನನ್ನಾಗಿ ಮಾಡಿ. ನೈಜ ಬಗ್ಗಳು ಮೊದಲ ತಪ್ಪಿನ ಹಿಂದೆ ಅಡಗಿರುತ್ತವೆ.
- ಅಪ್ಲಿಕೇಶನ್ ಏಜೆಂಟ್ ಅನ್ನು ನೈಜ ಕೋಡ್ ಮೇಲೆ ಆಧಾರಿತಗೊಳಿಸಿ. ಇದು ಕೇವಲ ಪಾತ್ರಾಭಿನಯವನ್ನು (role-play) ನೈಜ ಬಗ್ ವರದಿಯಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
- ಇದನ್ನು ನಿಮ್ಮ ಟೆಸ್ಟ್ಗಳಿಗೆ ಪೂರಕವಾಗಿ ಬಳಸಿ. ನಿಮ್ಮ ಲಾಜಿಕ್ ಮತ್ತು ವಾಸ್ತವವು ಎಲ್ಲಿ ಸಂಧಿಸುತ್ತವೆಯೋ ಅಲ್ಲಿನ ಅಂತರಗಳನ್ನು ಇದು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
ಈ ವಿಧಾನವು ಸ್ಟ್ಯಾಟಿಕ್ ಮತ್ತು ಅಗ್ಗವಾಗಿದೆ. ನೀವು ಒಂದೇ ಒಂದು ಟೆಸ್ಟ್ ಫಿಕ್ಸ್ಚರ್ (test fixture) ಬರೆಯುವ ಮೊದಲೇ ಇದು ರನ್ ಆಗುತ್ತದೆ. ಇದು "ಕೋಡ್ ಕೆಲಸ ಮಾಡುತ್ತದೆ" ಎಂಬುದನ್ನು "ಬಳಕೆದಾರನು ಯಶಸ್ವಿಯಾಗುತ್ತಾನೆ" ಎಂಬುದನ್ನಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ.
ಮೂಲ: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi
