AI-ಸೃಷ್ಟಿಸಿದ ಪರೀಕ್ಷೆಗಳನ್ನು ಆಡಿಟ್ ಮಾಡಿ: ಅರ್ಧದಷ್ಟು Green CI ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ

ಪಾಸಾದ ಪರೀಕ್ಷೆಯು ಒಂದು ಪುರಾವೆಯಂತೆ ಭಾಸವಾಗುತ್ತದೆ. ಆದರೆ ಅದು ನೀವು ಅಂದುಕೊಂಡಿದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ ಇರುತ್ತದೆ.

ಕೋಡ್ ಪರೀಕ್ಷೆಯು (test) ನಿರೀಕ್ಷಿಸಿದಂತೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಒಂದು ಪರೀಕ್ಷೆಯು ಪ್ರತಿಪಾದಿಸುತ್ತದೆ. ಒಂದು ವೇಳೆ ಅದೇ ಲೇಖಕರು ಕೋಡ್ ಮತ್ತು ನಿರೀಕ್ಷೆ (expectation) ಎರಡನ್ನೂ ಬರೆದರೆ, ಆ ನಿರೀಕ್ಷೆಯು ಕೋಡ್‌ನಿಂದಲೇ ರೂಪಿತವಾಗುತ್ತದೆ. ಪರೀಕ್ಷೆಯು ಪಾಸಾಗಲು ಅನುಕೂಲವಾಗುವಂತೆ ಅದನ್ನು ಬರೆಯಲಾಗಿರುವುದರಿಂದ ಅದು ಪಾಸಾಗುತ್ತದೆ.

ಹಸಿರು ಚೆಕ್‌ಮಾರ್ಕ್ ನಿಮ್ಮ ಪರೀಕ್ಷೆಗಳು ಕೋಡ್‌ನೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತವೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ. ಆದರೆ ಕೋಡ್ ಸರಿಯಾಗಿದೆ ಎಂಬುದನ್ನು ಅದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ.

AI ಏಜೆಂಟ್‌ಗಳು ಸಂಪೂರ್ಣ pull requestsಗಳನ್ನು ಕಳುಹಿಸಿದಾಗ ಈ ಸಮಸ್ಯೆ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಅವು ಒಂದೇ ಬಾರಿಗೆ implementation ಮತ್ತು ಪರೀಕ್ಷೆಗಳನ್ನು ಬರೆಯುತ್ತವೆ. ಲೇಖಕರು ಬದಲಾದಾಗ ಆ ಚೆಕ್‌ಮಾರ್ಕ್ ಹೆಚ್ಚು ವಿಶ್ವಾಸಾರ್ಹವಾಗುವುದಿಲ್ಲ.

ಈ ಅಂತರವನ್ನು ಪತ್ತೆಹಚ್ಚಲು ನಾನು mirror_audit.py ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಇದು AST ಬಳಸಿ ಪರೀಕ್ಷೆಯ ಮೂಲವನ್ನು (test source) ಓದುತ್ತದೆ. ಇದು ಎಂದಿಗೂ ಕೋಡ್ ಅನ್ನು ರನ್ ಮಾಡುವುದಿಲ್ಲ. ಇದು ಮೂರು ಸಾಮಾನ್ಯ ಮಾದರಿಗಳನ್ನು ಹುಡುಕುತ್ತದೆ:

  • The Recompute: ಪರೀಕ್ಷೆಯು ಕೋಡ್‌ನಂತೆಯೇ ಇರುವ ಸೂತ್ರವನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಕೇವಲ ವೇಷಧರಿಸಿದ f(x) == f(x) ಇದ್ದಂತೆ.
  • The Golden Literal: ಪರೀಕ್ಷೆಯು ಹಿಂದಿನ ರನ್‌ನಿಂದ ಕಾಪಿ ಮಾಡಿದ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಮೊದಲ ದಿನದ ಕೋಡ್ ಏನನ್ನು ಮಾಡಿತೋ (ಬಗ್‌ಗಳೂ ಸೇರಿದಂತೆ), ಅದಕ್ಕೇ ಪರೀಕ್ಷೆಯನ್ನು ಕಟ್ಟಿಹಾಕುತ್ತದೆ.
  • The Smoke Test: ಪರೀಕ್ಷೆಯು ಫಲಿತಾಂಶವು None ಅಲ್ಲ ಎಂದು ಮಾತ್ರ ಪರಿಶೀಲಿಸುತ್ತದೆ ಆದರೆ ಅದರಲ್ಲಿ ಯಾವುದೇ ನೈಜ assertion ಇರುವುದಿಲ್ಲ.

ನಾನು ಇದನ್ನು ಎರಡು suitesಗಳ ವಿರುದ್ಧ ಚಲಾಯಿಸಿದೆ.

ಮೊದಲ suite ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ ಅನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿತ್ತು. ಇದು 50.0% mirror-ratio ಸ್ಕೋರ್ ಮಾಡಿತು. CI ವಿಫಲವಾಯಿತು. ಅರ್ಧದಷ್ಟು ಪರೀಕ್ಷೆಗಳು ಯಾವುದೇ ಸ್ವತಂತ್ರ ಸಂಕೇತವನ್ನು (independent signal) ಹೊಂದಿರಲಿಲ್ಲ.

ಎರಡನೇ suite ಪ್ರಾಮಾಣಿಕವಾಗಿತ್ತು. ಇದು negative cases ಮತ್ತು ಸ್ವತಂತ್ರ ನಿರೀಕ್ಷೆಗಳನ್ನು ಬಳಸಿತು. ಇದು 0.0% ಸ್ಕೋರ್ ಮಾಡಿತು. CI ಪಾಸಾಯಿತು.

mirror-ratio ನಿಮ್ಮ bug rate ಅನ್ನು ಅಳೆಯುವುದಿಲ್ಲ. ಇದು ಕಳೆದುಹೋದ ಸ್ವತಂತ್ರ ಸಂಕೇತವನ್ನು ಅಳೆಯುತ್ತದೆ. ನಿಮ್ಮ green CI ಎಷ್ಟು ಭಾಗವು ಕೇವಲ ಕೋಡ್‌ನೊಂದಿಗೆ ಒಪ್ಪಿಗೆ ಸೂಚಿಸುತ್ತಿದೆಯೋ (nodding along) ಅದನ್ನು ಇದು ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ.

ಒಂದು ಪರೀಕ್ಷೆಯು implementation ನಂತೆಯೇ ತಪ್ಪಾದ ಫಲಿತಾಂಶವನ್ನು ಲೆಕ್ಕಹಾಕಿದರೆ, ಪರೀಕ್ಷೆಯು green ಆಗಿರುತ್ತದೆ. ಒಂದು ಪರೀಕ್ಷೆಯು ನೈಜ contract ಅನ್ನು ಪ್ರತಿಪಾದಿಸಿದರೆ, ಪರೀಕ್ಷೆಯು red ಆಗುತ್ತದೆ ಮತ್ತು ಬಗ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.

ಕೇವಲ coverage ಅನ್ನು ಮಾತ್ರ ನೋಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ನಿಮ್ಮ ಪರೀಕ್ಷೆಗಳು ನಿಜವಾದ ಕಾರಣಕ್ಕಾಗಿ ವಿಫಲವಾಗಲು ಸಾಧ್ಯವೇ ಎಂದು ಕೇಳಿಕೊಳ್ಳಿ.

ಮೂಲ: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb

ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi