AI ಪರೀಕ್ಷೆಗಳ ತಯಾರಿಕೆಗೆ: ಎಲ್ಲಿ ಇದು ಸಹಕಾರಿ ಮತ್ತು ಎಲ್ಲಿ ಇದು ತಪ್ಪಾಗುತ್ತದೆ
AI ವೇಗವಾಗಿ ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯುತ್ತದೆ. ಆದರೆ ಇದು ನೈಜವಾಗಿ ಕಾಣುವ ಮತ್ತು ತಪ್ಪು ವಿಷಯಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ಪರೀಕ್ಷೆಗಳನ್ನು ಕೂಡ ಬರೆಯುತ್ತದೆ.
ನೀವು ಒಂದು ಫಂಕ್ಷನ್ ಅನ್ನು AI ಗೆ ಪೇಸ್ಟ್ ಮಾಡುತ್ತೀರಿ. ಮೂವತ್ತು ಸೆಕೆಂಡುಗಳ ನಂತರ, ನಿಮ್ಮ ಬಳಿ ಹನ್ನೆರಡು ಪಾಸಾಗುವ ಪರೀಕ್ಷೆಗಳಿರುತ್ತವೆ. ನಿಮ್ಮ ಕವರೇಜ್ ಸ್ಕೋರ್ (coverage score) ಹೆಚ್ಚಾಗುತ್ತದೆ. ನೀವು ಹೆಚ್ಚು ಉತ್ಪಾದಕತೆಯನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ನಿಮಗೆ ಅನಿಸುತ್ತದೆ.
ನಂತರ ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ (production) ಒಂದು ಬಗ್ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. ನೀವು ಆ ಹನ್ನೆರಡು ಪರೀಕ್ಷೆಗಳನ್ನು ನೋಡಿದಾಗ, ಅವುಗಳಲ್ಲಿ ಯಾವುದೂ ಆ ತಪ್ಪನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಿರಲಿಲ್ಲ ಎಂಬುದು ನಿಮಗೆ ಅರಿವಾಗುತ್ತದೆ.
AI ನಿಮ್ಮ ಕೋಡ್ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಪರೀಕ್ಷಿಸಿತು, ಆದರೆ ನಿಮ್ಮ ಕೋಡ್ ಏನು ಮಾಡಬೇಕಿತ್ತು ಎಂಬುದನ್ನು ಅಲ್ಲ.
AI ಉಪಯುಕ್ತವಾಗಿದೆ, ಆದರೆ ಅದನ್ನು ಹೇಗೆ ಬಳಸಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿದಿರಬೇಕು.
AI ಎಲ್ಲಿ ಗೆಲ್ಲುತ್ತದೆ:
- setup ಮತ್ತು teardown ಬ್ಲಾಕ್ಗಳಂತಹ ಬಾಯ್ಲರ್ ಪ್ಲೇಟ್ (boilerplate) ಕೋಡ್ ತಯಾರಿಸುವುದು.
- ಪುನರಾವರ್ತಿತ ಫ್ಯಾಕ್ಟರಿ ಹೆಲ್ಪರ್ಗಳು (factory helpers) ಮತ್ತು ಡೇಟಾ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಬರೆಯುವುದು.
- ಒಂದು ಉತ್ತಮ ಪರೀಕ್ಷಾ ಮಾದರಿಯ ಅನೇಕ ವಿಧಗಳನ್ನು (variations) ಸೃಷ್ಟಿಸುವುದು.
- null, ಖಾಲಿ ಸ್ಟ್ರಿಂಗ್ಗಳು (empty strings) ಅಥವಾ ಶೂನ್ಯದಂತಹ (zero) ಸ್ಪಷ್ಟವಾದ ಎಡ್ಜ್ ಕೇಸ್ಗಳನ್ನು (edge cases) ನಿರ್ವಹಿಸುವುದು.
AI ಎಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ:
- ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ ಆಧಾರಿತ ಪರೀಕ್ಷೆಗಳು (Implementation-based tests): ಇದು ಬಿಸಿನೆಸ್ ಲಾಜಿಕ್ ಬದಲಿಗೆ ಕೋಡ್ ರಚನೆಯನ್ನು ಅನುಸರಿಸುವ ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯುತ್ತದೆ. ನೀವು ಕೋಡ್ ಅನ್ನು ರಿಫ್ಯಾಕ್ಟರ್ (refactor) ಮಾಡಿದರೆ, ಫಲಿತಾಂಶ ಸರಿಯಾಗಿದ್ದರೂ ಪರೀಕ್ಷೆಗಳು ವಿಫಲವಾಗುತ್ತವೆ.
- ಮೇಲ್ಮಟ್ಟದ ಎಡ್ಜ್ ಕೇಸ್ಗಳು (Shallow edge cases): ಇದು ಸ್ಪಷ್ಟವಾದ ತಪ್ಪುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ ಆದರೆ ಡೊಮೇನ್-ನಿರ್ದಿಷ್ಟ ಬಗ್ಗಳನ್ನು (domain-specific bugs) ತಪ್ಪಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಟೈಮ್ಜೋನ್ ವೈಶಿಷ್ಟ್ಯಗಳು, ಡೇಟಾಬೇಸ್ ನಿರ್ಬಂಧಗಳು ಅಥವಾ ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಬಿಸಿನೆಸ್ ನಿಯಮಗಳನ್ನು ತಿಳಿಯುವುದಿಲ್ಲ.
- ಅಸ್ಥಿರ ಮಾಕ್ಗಳು (Brittle mocks): ಇದು ನೈಜವಾಗಿರಬೇಕಾದ ಆಂತರಿಕ ಸೇವೆಗಳನ್ನು ಮಾಕ್ (mock) ಮಾಡುತ್ತದೆ. ಇದು ಪರೀಕ್ಷೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ನಿಧಾನವಾಗಿಸುತ್ತದೆ ಮತ್ತು ರಿಫ್ಯಾಕ್ಟರ್ ಮಾಡುವಾಗ ಸುಲಭವಾಗಿ ಮುರಿಯುವಂತೆ ಮಾಡುತ್ತದೆ.
"ಟೆಸ್ಟ್ ಥಿಯೇಟರ್" (test theater) ಸೃಷ್ಟಿಸದೆ AI ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು:
- ಮೊದಲು ಕಾಂಟ್ರಾಕ್ಟ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ. ಪರೀಕ್ಷೆಯು ಏನನ್ನು ಸಾಬೀತುಪಡಿಸಬೇಕು ಎಂಬುದರ ಬಗ್ಗೆ ಸರಳ ಇಂಗ್ಲಿಷ್ನಲ್ಲಿ ಒಂದು ವಾಕ್ಯವನ್ನು ಬರೆಯಿರಿ. ಉದಾಹರಣೆ: "An expired code must return the original amount."
- ಆ ವಾಕ್ಯವನ್ನು AI ಗೆ ನೀಡಿ. AI ಕೋಡ್ ಬರೆಯಲಿ, ಆದರೆ ಅದರ ಉದ್ದೇಶವು (intent) ನಿಮ್ಮದಾಗಿರಲಿ.
- ಕೇವಲ ಬೌಂಡರಿ (boundary) ಮಟ್ಟದಲ್ಲಿ ಮಾತ್ರ ಮಾಕ್ ಮಾಡಿ. ನಿಮ್ಮ ಆಂತರಿಕ ಮಾಡ್ಯೂಲ್ಗಳಿಗಾಗಿ ನೈಜ ಇನ್ಸ್ಟೆನ್ಸ್ (real instances) ಬಳಸಿ. ಕೇವಲ ಬಾಹ್ಯ APIಗಳು ಅಥವಾ ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಮಾತ್ರ ಮಾಕ್ ಮಾಡಿ.
- ಒಂದು ಡೊಮೇನ್ ಎಡ್ಜ್ ಕೇಸ್ ಅನ್ನು ಕೈಯಿಂದ ಬರೆಯಿರಿ. AI "ಸ್ಪಷ್ಟವಾದ" ಎಡ್ಜ್ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಆದರೆ ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ ತೊಂದರೆಗಳನ್ನು ಉಂಟುಮಾಡುವ "3 AM" ಎಡ್ಜ್ಗಳನ್ನು ನೀವು ನಿರ್ವಹಿಸಬೇಕು.
ಪರೀಕ್ಷೆಯು ಏನನ್ನು ಪರಿಶೀಲಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು AI ಗೆ ಬಿಡಬೇಡಿ. ಕೋಡ್ ಟೈಪ್ ಮಾಡಲು ಅದನ್ನು ಬಳಸಿ, ಆದರೆ ಲಾಜಿಕ್ ಅನ್ನು ನೀವೇ ಒದಗಿಸಿ.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
