టెస్ట్ జనరేషన్ కోసం AI: ఇది ఎక్కడ సహాయపడుతుంది మరియు ఎక్కడ తప్పుదారి పట్టిస్తుంది
AI వేగంగా టెస్ట్లను రాస్తుంది. అయితే ఇది నిజమైనవిగా కనిపించే, కానీ తప్పు విషయాలను సరిచూసే టెస్ట్లను కూడా రాస్తుంది.
మీరు ఒక ఫంక్షన్ను AIలో పేస్ట్ చేస్తారు. ముప్పై సెకన్ల తర్వాత, మీకు పన్నెండు పాస్ అయిన టెస్ట్లు అందుబాటులో ఉంటాయి. మీ కవరేజ్ స్కోర్ పెరుగుతుంది. మీరు చాలా ఉత్పాదకతతో ఉన్నట్లు అనిపిస్తుంది.
అప్పుడు ప్రొడక్షన్లో ఒక బగ్ వస్తుంది. మీరు ఆ పన్నెండు టెస్ట్లను చూసినప్పుడు, వాటిలో ఏదీ ఆ బగ్ను పట్టుకోలేదని గ్రహిస్తారు.
మీ కోడ్ ఏమి చేస్తుందో AI దానిని టెస్ట్ చేసింది, కానీ మీ కోడ్ ఏమి చేయాల్సి ఉందో (అంటే దాని ఉద్దేశ్యం) దానిని టెస్ట్ చేయలేదు.
AI ఉపయోగకరమైనదే, కానీ దానిని ఎలా ఉపయోగించాలో మీకు తెలియాలి.
AI ఎక్కడ విజయం సాధిస్తుంది:
- setup మరియు teardown బ్లాక్ల వంటి boilerplate కోడ్ను రూపొందించడం.
- పునరావృతమయ్యే factory helpers మరియు data objectsలను రాయడం.
- ఒకే మంచి టెస్ట్ ప్యాటర్న్కు అనేక వైవిధ్యాలను (variations) సృష్టించడం.
- null, empty strings, లేదా zero వంటి స్పష్టమైన edge casesలను హ్యాండిల్ చేయడం.
AI ఎక్కడ విఫలమవుతుంది:
- ఇంప్లిమెంటేషన్ ఆధారిత టెస్ట్లు (Implementation-based tests): ఇది బిజినెస్ లాజిక్ కంటే కోడ్ స్ట్రక్చర్ను అనుసరించే టెస్ట్లను రాస్తుంది. మీరు కోడ్ను refactor చేస్తే, ఫలితం సరిగ్గా ఉన్నప్పటికీ టెస్ట్లు విఫలమవుతాయి.
- లోతైనవి కాని edge cases: ఇది స్పష్టమైన లోపాలను గుర్తిస్తుంది కానీ డొమైన్-స్పెసిఫిక్ బగ్స్ను మిస్ అవుతుంది. దీనికి మీ టైమ్ జోన్ వైవిధ్యాలు, మీ డేటాబేస్ కన్స్ట్రైంట్లు లేదా మీ నిర్దిష్ట బిజినెస్ రూల్స్ తెలియవు.
- పెళుసైన (Brittle) mocks: ఇది నిజంగా ఉండాల్సిన ఇంటర్నల్ సర్వీసులను కూడా mock చేస్తుంది. దీనివల్ల టెస్ట్లను మెయింటైన్ చేయడం నెమ్మదిగా మారుతుంది మరియు refactor చేసేటప్పుడు అవి సులభంగా విఫలమవుతాయి.
"test theater" సృష్టించకుండా AIని ఎలా ఉపయోగించాలి:
- మొదట కాంట్రాక్ట్ను నిర్వచించండి. టెస్ట్ ఏమి నిరూపించాలో సాధారణ ఇంగ్లీష్లో ఒక వాక్యం రాయండి. ఉదాహరణ: "An expired code must return the original amount."
- ఆ వాక్యాన్ని AIకి ఇవ్వండి. కోడ్ రాయడానికి AIని అనుమతించండి, కానీ దాని ఉద్దేశ్యం (intent) మీ నియంత్రణలో ఉండాలి.
- కేవలం బౌండరీ వద్ద మాత్రమే mock చేయండి. మీ ఇంటర్నల్ మాడ్యూల్స్ కోసం రియల్ ఇన్స్టెన్స్లను ఉపయోగించండి. కేవలం ఎక్స్టర్నల్ APIs లేదా డేటాబేస్లను మాత్రమే mock చేయండి.
- ఒక డొమైన్ edge caseను స్వయంగా రాయండి. AI "స్పష్టమైన" ఎడ్జ్ కేసులను హ్యాండిల్ చేస్తుంది. కానీ ప్రొడక్షన్ సమస్యలకు నిజంగా కారణమయ్యే క్లిష్టమైన "3 AM" ఎడ్జ్ కేసులను మీరే హ్యాండిల్ చేయాలి.
టెస్ట్ దేనిని సరిచూడాలో AIని నిర్ణయించనివ్వకండి. కోడ్ టైప్ చేయడానికి దానిని ఉపయోగించండి, కానీ లాజిక్ను మీరే అందించండి.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
