టెస్ట్ జనరేషన్ కోసం AI: ఇది ఎక్కడ సహాయపడుతుంది మరియు ఎక్కడ తప్పుదారి పట్టిస్తుంది
AI వేగంగా టెస్ట్లను రాస్తుంది. కానీ ఇది నిజమైనవిగా కనిపించే, परंतु తప్పు విషయాలను సరిచూసే టెస్ట్లను కూడా రాస్తుంది. మీ కోడ్ కవరేజ్ పెరిగినట్లు మీకు అనిపించవచ్చు, కానీ మీ కోడ్ మాత్రం లోపాలతోనే ఉంటుంది.
AI కొన్ని పనులకు చాలా అద్భుతంగా పనిచేస్తుంది. వీటి కోసం దీన్ని ఉపయోగించండి:
- ఒక మంచి ఉదాహరణ నుండి మరిన్నింటిని రూపొందించడానికి (Extrapolate). మీరు ఒక పరిపూర్ణమైన టెస్ట్ను రాస్తే, AI మీ శైలిలోనే మరో పది టెస్ట్లను రాయగలదు.
- పదేపదే చేయాల్సిన టైపింగ్ పనుల కోసం. setup blocks, teardown, మరియు factory helpers కోసం దీన్ని ఉపయోగించండి.
- ప్రాథమిక స్క్యాఫోల్డింగ్ (scaffolding) సృష్టించడానికి. ఖాళీ ఫైల్ కంటే ఇది మిమ్మల్ని ఎడిటర్లోకి వేగంగా తీసుకెళ్తుంది.
మీరు "contract"ను నిర్ణయించే బాధ్యతను AIకి వదిలేసినప్పుడు ప్రమాదం మొదలవుతుంది.
మీరు AIకి ఒక ఫంక్షన్ను ఇచ్చి టెస్ట్లు అడిగితే, అది ఆ కోడ్ను చదివి, ప్రస్తుతం ఆ కోడ్ ఏమి చేస్తుందో దానినే టెస్ట్ చేస్తుంది. కోడ్ ఏమి చేయాలో (what the code should do) అది టెస్ట్ చేయదు. ఇది ఒక క్లోజ్డ్ లూప్ను సృష్టిస్తుంది. AI ఒక ఊహను (assumption) చేస్తుంది, కోడ్ను రాస్తుంది, ఆపై అదే ఊహకు అనుగుణంగా టెస్ట్లను రాస్తుంది.
బగ్స్ ప్రొడక్షన్లోకి వచ్చినప్పుడు, టెస్ట్ సూట్ కూడా ఆ బగ్ వైపే ఉండటం వల్ల అవి బయటపడవు.
ఈ మూడు ఉచ్చుల (traps) పట్ల జాగ్రత్తగా ఉండండి:
ఇంప్లిమెంటేషన్-ఆధారిత టెస్ట్లు (Implementation-shaped tests) AI తరచుగా బిజినెస్ రూల్స్ (business rules) కంటే లాజిక్ పాత్లను (logic paths) మాత్రమే టెస్ట్ చేస్తుంది. మీరు ఏదైనా చిన్న అంతర్గత మార్పు చేసినా, ఫలితం సరిగ్గా ఉన్నప్పటికీ టెస్ట్లు ఫెయిల్ అవుతాయి. ఇది రిఫ్యాక్టరింగ్ను (refactoring) ఒక పీడకలగా మారుస్తుంది.
పైపైన ఉండే ఎడ్జ్ కేసెస్ (Shallow edge cases) AI అనేది nulls, empty strings, మరియు zeros వంటి వాటిని టెస్ట్ చేయడంలో మంచిది. ఇవి చాలా స్పష్టమైనవి. కానీ ఇది "domain edges"ను కనుగొనలేదు. మీ నిర్దిష్ట టైమ్ జోన్ బగ్స్, మీ డేటాబేస్ లోపాలు లేదా మీ ప్రత్యేకమైన బిజినెస్ రూల్స్ గురించి దానికి తెలియదు.
పెళుసైన మాక్స్ (Brittle mocks) AI ప్రతిదీ మాక్ (mock) చేయడానికి ఇష్టపడుతుంది. దీనివల్ల రెండు సమస్యలు వస్తాయి:
- మాక్ తప్పుగా ఉండటం. ఇది వాస్తవానికి సరిపోని ఒక నకిలీ API వెర్షన్ను అనుకరిస్తుంది.
- మాక్ ఇంప్లిమెంటేషన్ను స్తంభింపజేస్తుంది. ఇది తుది ఫలితాన్ని టెస్ట్ చేయడం కంటే, మీ కోడ్ ఇతర ఫంక్షన్లను ఎలా పిలుస్తుందో మాత్రమే టెస్ట్ చేస్తుంది.
AIని సరిగ్గా ఎలా ఉపయోగించాలి:
"intent" (ఉద్దేశ్యం)ను AI పరిధికి దూరంగా ఉంచండి.
- మొదట contract రాయండి. ప్రతి టెస్ట్ కోసం సాధారణ ఇంగ్లీష్లో ఒక వాక్యం రాయండి. ఉదాహరణకు: "Expired codes must return the original amount."
- ఆ వాక్యాలను AIకి ఇవ్వండి. అది assertions రాయనివ్వండి, కానీ అర్థాన్ని (meaning) మాత్రం మీరే అందించండి.
- బౌండరీల వద్ద మాత్రమే మాక్ చేయండి. కేవలం ఎక్స్టర్నల్ APIs లేదా డేటాబేస్లను మాత్రమే మాక్ చేయండి. మీ అంతర్గత మాడ్యూల్స్ కోసం నిజమైన వెర్షన్లను ఉపయోగించండి.
- ఒక డొమైన్ ఎడ్జ్ కేస్ను స్వయంగా రాయండి. మీరు ప్రతిసారి ఒక ఫంక్షన్ను పూర్తి చేసినప్పుడు, మీకు భయం కలిగించే ఒక అంశాన్ని రాసుకోండి. దానిని AI కోసం ప్రాంప్ట్గా ఉపయోగించండి.
AI అనేది ఒక ఉత్పాదకత సాధనం (productivity tool), ఆలోచనలకు ప్రత్యామ్నాయం కాదు. టెస్ట్ యొక్క బాడీని రాయడానికి దీన్ని ఉపయోగించండి, కానీ టెస్ట్ దేని కోసం అనేది నిర్ణయించే అధికారాన్ని ఎప్పుడూ AIకి ఇవ్వకండి.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
Optional learning community: https://t.me/GyaanSetuAi
