లాభాలు:
- అంగీకార నియమం నుండి స్వతంత్రంగా యూనిట్ పరీక్షలలో ఆశించిన విలువను లెక్కించడం ద్వారా కృత్రిమ మేధస్సును తప్పు ప్రవర్తనను 'సరైనది'గా అంగీకరించకుండా నిరోధించే సామర్థ్యం
- AAA మరియు FIRST సూత్రాలను వర్తింపజేయడం మరియు బాహ్య డిపెండెన్సీలను అపహాస్యం చేయడం ద్వారా వేగవంతమైన, స్వతంత్ర మరియు పునరావృతమయ్యే పరీక్షలను ముద్రించగల సామర్థ్యం
- మ్యుటేషన్ (కోడ్ బ్రేకింగ్)తో పరీక్షలను పరీక్షించగల సామర్థ్యం మరియు పరీక్షకు కష్టమైన కోడ్ని డిజైన్ వాసనగా గుర్తించడం
టెస్టింగ్ పిరమిడ్ యొక్క అతిపెద్ద మరియు వేగవంతమైన లేయర్ యూనిట్ టెస్టింగ్ — టెస్టింగ్ అనేది ఒక ఫంక్షన్ లేదా చిన్న కోడ్ ముక్కను అన్నింటి నుండి వేరుగా నిర్ధారిస్తుంది. డెవలపర్ స్క్రీన్పై కోడ్ ఉన్నప్పుడే వేలాది యూనిట్ పరీక్షలు సెకన్లలో అమలు చేయబడతాయి మరియు బగ్ను క్యాచ్ చేస్తాయి. ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ (AI) బహుశా యూనిట్ పరీక్షలను ఉత్పత్తి చేయడంలో అత్యంత ప్రావీణ్యం కలిగి ఉంటుంది: మీరు దీనికి ఒక ఫంక్షన్ను ఇస్తారు, AI డజన్ల కొద్దీ పరీక్షలను ఉత్పత్తి చేస్తుంది. కానీ ఈ సౌలభ్యం అతిపెద్ద ఉచ్చుకు దారి తీస్తుంది: AI సులభంగా "ఆకుపచ్చ రంగులో మెరుస్తుంది కానీ దేనినీ ధృవీకరించవద్దు" లేదా కోడ్ యొక్క ప్రస్తుత (బహుశా తప్పు) ప్రవర్తనను "సరైనది"గా అంగీకరించే పరీక్షలను ఉత్పత్తి చేస్తుంది. ఈ యూనిట్లో మీరు AIతో నిజమైన రక్షణాత్మక యూనిట్ పరీక్షలను ఎలా వ్రాయాలో మరియు పరీక్షించదగిన కోడ్ మరియు AI మధ్య సంబంధాన్ని నేర్చుకుంటారు.
మంచి యూనిట్ పరీక్ష యొక్క గుణాలు: FIRST
మంచి యూనిట్ పరీక్షలు మొదటి సూత్రాలను అనుసరిస్తాయి: వేగవంతమైనవి, స్వతంత్రమైనవి (పరీక్షలు ఒకదానిపై ఒకటి ఆధారపడకూడదు), పునరావృతం చేయగలవు (పునరావృతం - ఏ వాతావరణంలోనైనా అదే ఫలితం), స్వీయ-ధృవీకరణ (క్లియర్ పాస్/ఫెయిల్), సకాలంలో (సమయానికి). AI ఉత్పత్తి పరీక్షలను కలిగి ఉన్నప్పుడు ఈ సూత్రాలను మీకు గుర్తు చేసుకోండి; పరీక్ష "స్వతంత్రం" మరియు "పునరావృతం" అని బయటి ప్రపంచం (వాస్తవ డేటాబేస్, నెట్వర్క్, గడియారం)పై ఆధారపడకూడదని ప్రత్యేకంగా అడగండి.
AAA నమూనా మరియు భావ వ్యక్తీకరణ
ఘన యూనిట్ పరీక్ష AAA నిర్మాణాన్ని అనుసరిస్తుంది: అమర్చండి (సిద్ధం చేయండి - ఇన్పుట్లు మరియు డిపెండెన్సీలను సెటప్ చేయండి), చట్టం (ఎగ్జిక్యూట్ - పరీక్షలో ఫంక్షన్ని కాల్ చేయండి), అసర్ట్ (ధృవీకరించండి - ఫలితాన్ని ఆశించిన విలువతో సరిపోల్చండి). క్లిష్టమైనది దృఢమైనది. AI చేసే అత్యంత సాధారణ తప్పు ఏమిటంటే, పరీక్షలో ఉన్న కోడ్ యొక్క అవుట్పుట్ నుండి నిశ్చితార్థాన్ని పొందడం — “కోడ్ ఏది రిటర్న్ చేసినా అది నిజం” లాజిక్. దీంతో పరీక్ష అర్థరహితం అవుతుంది. ఆశించిన విలువను స్వతంత్రంగా నిర్ణయించడం సరైన మార్గం (అంగీకార ప్రమాణాల నుండి, దానిని మానవీయంగా లెక్కించండి).
శ్రద్ధ: మీరు AIకి "ఈ ఫంక్షన్ కోసం ఒక పరీక్ష రాయండి" అని చెబితే, AI ఫంక్షన్ని అమలు చేసి, దాని అవుట్పుట్ను "అంచనా" అని వ్రాయవచ్చు. ఫంక్షన్ తప్పు అయినప్పటికీ ఈ పరీక్ష పాస్ అవుతుంది. బదులుగా, "మీరు ఈ నియమాల ప్రకారం ఆశించిన ఫలితాలను లెక్కించండి, ఫంక్షన్ యొక్క ప్రస్తుత అవుట్పుట్ను సూచించవద్దు" అని చెప్పండి.
మాక్స్, స్టబ్లు మరియు డిపెండెన్సీలు
యూనిట్ పరీక్షకు ఐసోలేషన్ అవసరం. మీ ఫంక్షన్ డేటాబేస్ లేదా APIపై ఆధారపడి ఉంటే, అవి పరీక్షలో మాక్ ఆబ్జెక్ట్లతో భర్తీ చేయబడతాయి (మాక్/స్టబ్ - నిజమైన డిపెండెన్సీకి నియంత్రిత, డమ్మీ ప్రత్యామ్నాయం). ఇది పరీక్షను వేగంగా, స్వతంత్రంగా మరియు పునరుత్పత్తి చేస్తుంది. AI మాక్ ఇన్స్టాలేషన్ను ఉత్పత్తి చేయగలదు; కానీ మితిమీరిన అపహాస్యం పట్ల జాగ్రత్త వహించండి: మీరు ప్రతిదానిని అపహాస్యం చేస్తే, పరీక్ష "మాక్ రిటర్న్లను" మాత్రమే ధృవీకరిస్తుంది, అసలు లాజిక్ కాదు. బ్యాలెన్స్: బయటి ప్రపంచాన్ని అనుకరించండి, పరీక్షలో నిజమైన లాజిక్ను అమలు చేయండి.
పరీక్షా సామర్థ్యం మరియు AI
ఒక ఆసక్తికరమైన అభిప్రాయం ఉంది: పరీక్షించడం కష్టంగా ఉండే కోడ్ తరచుగా పేలవంగా రూపొందించబడిన కోడ్. AIకి ఒక ఫంక్షన్కి పరీక్షలు రాయడంలో సమస్య ఉంటే (చాలా ఎక్కువ డిపెండెన్సీలు, దాచిన ప్రపంచ స్థితి, దుష్ప్రభావాలు), అది డిజైన్ వాసన. “ఈ కోడ్ని పరీక్షించగలిగేలా చేయడానికి మీరు దీన్ని ఎలా రీఫ్యాక్టరు చేస్తారు” అని AIని అడగడం వల్ల మెరుగైన పరీక్ష మరియు మెరుగైన కోడ్ రెండింటికీ దారి తీస్తుంది.
పారామీటర్ పరీక్షలు మరియు డేటా వైవిధ్యం
వేర్వేరు ఇన్పుట్లతో ఒకే నియమాన్ని ధృవీకరించడానికి ప్రతిసారీ ప్రత్యేక పరీక్ష రాయడం శ్రమతో కూడుకున్నది మరియు నిర్వహించడం కష్టం. పారామీటరైజ్డ్ టెస్టింగ్ - ఇన్పుట్లు మరియు ఆశించిన ఫలితాల జాబితాలో ఒకే పరీక్ష లాజిక్ను పదేపదే అమలు చేసే నిర్మాణం - ఈ పునరావృతాన్ని తొలగిస్తుంది: ఒకే పరీక్ష శరీరం డజన్ల కొద్దీ ఇన్పుట్ జతలతో అందించబడుతుంది. మీరు మీ అంగీకార నియమాలను ఇచ్చినప్పుడు, ఈ ఇన్పుట్-అంచనా ఫలిత పట్టికలను రూపొందించడంలో AI చాలా సమర్థవంతంగా పనిచేస్తుంది; ప్రత్యేకించి, ఇది పరిమితి విలువలు మరియు సమానత్వ తరగతులను క్రమపద్ధతిలో పట్టిక చేస్తుంది.
కానీ ఇక్కడ కూడా ఒక ఉచ్చు ఉంది: AI పరీక్షలో ఉన్న కోడ్ నుండి ఉత్పత్తి చేయబడిన పట్టికలో ఆశించిన ఫలితాలను పొందుతుంది. పారామితి చేయబడిన పరీక్షలో ఈ లోపం మరింత ప్రమాదకరం, ఎందుకంటే ఒక తప్పు తర్కం డజన్ల కొద్దీ లైన్లను చెల్లుబాటు చేయదు. అందువల్ల, అంగీకార నియమం ప్రకారం ఎల్లప్పుడూ ఆశించిన ఫలిత నిలువు వరుసను స్వతంత్రంగా గణించండి మరియు కనీసం కొన్ని అడ్డు వరుసలను మాన్యువల్గా ధృవీకరించండి. "ప్రతి అడ్డు వరుస దేనిని సూచిస్తుంది" అనే వివరణ నిలువు వరుసను కూడా అడగండి; కాబట్టి వరుస విరిగిపోయినప్పుడు, ఏ స్థితి విచ్ఛిన్నమైందో మీరు తక్షణమే చూస్తారు.
చిట్కా: పారామితి చేయబడిన పరీక్ష పట్టికకు ఉద్దేశపూర్వకంగా “ట్రాప్ రో” జోడించండి — అంటే, తెలిసి ఫలితాన్ని తప్పుగా టైప్ చేయండి. మీరు పరీక్షను అమలు చేస్తున్నప్పుడు ఆ లైన్ ఎరుపు రంగులోకి మారకపోతే, మీ పరీక్ష ఆ పరిస్థితిని ధృవీకరించడం లేదు. ఇది త్వరిత మాక్-పాస్ చెక్.
బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్
బలహీనం: "ఈ ఫంక్షన్ కోసం యూనిట్ పరీక్ష రాయండి."
బలమైనది: "పన్ను లెక్కింపు(మొత్తం, రేటు) ఫంక్షన్ కోసం [భాష/ఫ్రేమ్వర్క్] యూనిట్ పరీక్షలను వ్రాయండి. అంగీకార నియమం: ఫలితం = మొత్తం * రేటు, 2 దశాంశాలకు గుండ్రంగా ఉంటుంది; ప్రతికూల మొత్తం లేదా రేటు లోపాన్ని విసురుతుంది; రేటు 0 అయితే 0ని అందిస్తుంది. AAA నిర్మాణాన్ని ఉపయోగించండి. ఈ రిఫరెన్స్ నియమాల ప్రకారం మాన్యువల్గా అంచనా వేయబడిన విలువలను లెక్కించవద్దు. ఈ రిఫరెన్స్ నియమాల ప్రకారం మాన్యువల్గా అంచనా వేయబడిన విలువలను లెక్కించవద్దు; (0, నెగటివ్, చాలా పెద్దది, రౌండ్ నుండి దశాంశాలు).
శక్తివంతమైన ప్రాంప్ట్; ఇది అంగీకార నియమం, స్వతంత్ర అంచనా విలువ అంచనా, నిర్మాణం మరియు అంచు కేసులను అందిస్తుంది. అందువలన, పరీక్ష నియమం యొక్క సంరక్షకుడు అవుతుంది, కోడ్ యొక్క అద్దం కాదు.
యూనిట్ పరీక్ష నాణ్యత పట్టిక
లక్షణం
చెడు పరీక్ష (నకిలీ-నమ్మకం)
మంచి పరీక్ష
నొక్కిచెప్పండి
ఏదీ లేదు లేదా "శూన్యం కాదు"
ఆశించిన కాంక్రీట్ విలువ
అంచనా విలువ మూలం
ఫంక్షన్ యొక్క అవుట్పుట్
అంగీకార నియమం / మాన్యువల్ లెక్కింపు
వ్యసనం
వాస్తవ DB/నెట్వర్క్/గంట
మాక్/స్టబ్తో ఇన్సులేట్ చేయబడింది
అంచు కేసు
సంతోషకరమైన రహదారి మాత్రమే
పరిమితి, ప్రతికూల, లోపం
మీరు కోడ్ను విచ్ఛిన్నం చేసినప్పుడు
పచ్చగా ఉంటుంది
ఎరుపు రంగులోకి మారుతుంది
పేరు
పరీక్ష 1, పరీక్ష విధానం
అది నిర్ధారించే నియమాన్ని వివరిస్తుంది
నాలుగు కాపీ చేయగల టెంప్లేట్లు
1) నియమం-ఆధారిత యూనిట్ పరీక్ష:
మీ పాత్ర: సీనియర్ సాఫ్ట్వేర్ టెస్ట్ ఇంజనీర్. కింది ఫంక్షన్పై [భాష/ఫ్రేమ్వర్క్]తో యూనిట్ పరీక్షను వ్రాయండి: [సంతకం]. అంగీకార నియమాలు: [నియమాలు].- AAA నిర్మాణాన్ని ఉపయోగించండి.- ఈ నిబంధనల ప్రకారం అంచనా విలువలను మాన్యువల్గా లెక్కించండి; ఫంక్షన్ యొక్క ప్రస్తుత అవుట్పుట్ను సూచించవద్దు. - ప్రత్యేక పరీక్షలతో పరిమితి, ప్రతికూల, లోపం మరియు సంతోషకరమైన మార్గాన్ని కవర్ చేయండి. - ప్రతి పరీక్ష పేరు అది ధృవీకరించే నియమాన్ని వివరించనివ్వండి. - మాక్ బాహ్య డిపెండెన్సీలు; అసలు లాజిక్ పని చేయండి.
2) మ్యుటేషన్ నిరోధక నియంత్రణ:
ఈ యూనిట్ పరీక్షలను చూడండి. పరీక్షలో కోడ్కి నేను చేయగలిగే 5 మైనర్ ట్వీక్లను జాబితా చేయండి (a - బదులుగా a +, a >= బదులుగా a >, బౌండరీ షిఫ్ట్) మరియు ఈ పరీక్షల్లో ఏది ఎరుపు రంగులోకి మారుతుందో చెప్పండి? ఏదీ తిరిగి ఇవ్వబడకపోతే, పరీక్ష సరిపోదు. కోడ్ + పరీక్షలు: [అతికించండి]
3) పరీక్షా సామర్థ్యం సమీక్ష:
ఈ ఫంక్షన్ కోసం యూనిట్ పరీక్ష రాయడం ఎందుకు కష్టం? దాచిన వ్యసనం, ప్రపంచ స్థితి, దుష్ప్రభావాలు, అనేక బాధ్యతలు ఉన్నాయా? పరీక్షించదగినదిగా చేయడానికి కనిష్ట రీఫ్యాక్టరింగ్ను సూచించండి; ప్రవర్తన మార్చుకోవద్దు. కోడ్: [అతికించు]
4) అసంపూర్ణ దృశ్యం పూర్తి:
కింది ఫంక్షన్ మరియు అందుబాటులో ఉన్న పరీక్షలు ఇవ్వబడ్డాయి. ఏ ప్రవర్తన/ఎడ్జ్కేస్ ఎప్పుడూ పరీక్షించబడలేదని జాబితా చేయండి (స్కోప్ గ్యాప్) మరియు ప్రతిదానికి ఒక పరీక్షను జోడించండి. ఫంక్షన్+పరీక్షలు: [అతికించు]
మూడు చిన్న కేసులు
కేసు 1 — కోడ్ను ప్రతిబింబించే పరీక్ష. ఒక డెవలపర్ AI రౌండింగ్ ఫంక్షన్ కోసం ఒక పరీక్షను వ్రాసాడు; 10 పరీక్షలు గ్రీన్గా ఉన్నాయి. వాస్తవానికి, ఫంక్షన్ తప్పు దిశలో ఉంది, కానీ AI ఫంక్షన్ యొక్క అవుట్పుట్ నుండి ఆశించిన విలువలను తీసుకుంది, కాబట్టి పరీక్షలు లోపాన్ని "నిజం"గా పరిగణించాయి. "రూల్-డ్రైవెన్" టెంప్లేట్తో ఊహించిన విలువలను మాన్యువల్గా లెక్కించినప్పుడు, 4 పరీక్షలు ఎరుపు రంగులోకి మారాయి మరియు నిజమైన లోపం వెల్లడైంది.
కేస్ 2 - మ్యుటేషన్ నియంత్రణ విలువ. ఒక బృందం 45 యూనిట్ పరీక్షలపై ఆధారపడింది. "మ్యుటేషన్ పటిష్టత తనిఖీ"తో కోడ్కు 20 చిన్న ట్వీక్లను ప్రయత్నించారు; పరీక్షల్లో కేవలం 11 మంది మాత్రమే పట్టుబడ్డారు. మిగిలిన 9 అంతరాయాలు నిశ్శబ్దంగా గడిచాయి. జట్టు బలహీన పరీక్షలను బలపరిచింది; తదుపరి విడుదలలో ఈ మెరుగుపరచబడిన పరీక్షల ద్వారా వాస్తవ గణన లోపం గుర్తించబడింది.
కేస్ 3 - అన్టెస్బిలిటీ అనేది డిజైన్ వాసన. AI ఆర్డరింగ్ ఫంక్షన్ కోసం పరీక్షలను వ్రాయలేకపోయింది, దీనికి నిరంతరం నిజమైన డేటాబేస్ అవసరం. "టెస్టబిలిటీ రివ్యూ" టెంప్లేట్ ఫంక్షన్ పొందుపరిచిన డేటాబేస్ యాక్సెస్ని చూపింది. డిపెండెన్సీ ఇంజెక్షన్ తొలగించబడినప్పుడు, పరీక్షలు రాయవచ్చు మరియు కోడ్ క్లీనర్ అయింది.
సాధారణ తప్పులు
- కోడ్ నుండి ఆశించిన విలువను పొందడం. AI ఫంక్షన్ అవుట్పుట్ను "సరైనది"గా అంగీకరిస్తుంది; తప్పు కోడ్ని నిర్ధారించే పరీక్ష.
- నిశ్చయత లేకుండా లేదా పనికిమాలిన నిశ్చయతతో పరీక్షించండి. "అతను లోపాన్ని విసరలేదు, అతను ఉత్తీర్ణత సాధించాడు" తర్కం; ఇది దేనినీ ధృవీకరించదు.
- విపరీతమైన మాక్. ప్రతిదానిని వెక్కిరించడం మరియు మాక్ రిటర్న్లను మాత్రమే పరీక్షించడం; నిజమైన తర్కం పరీక్షించబడలేదు.
- సంతోషకరమైన రహదారి మాత్రమే. పరిమితి, ప్రతికూల మరియు దోష స్థితులను దాటవేయడం.
- కోడ్ను విచ్ఛిన్నం చేయడం ద్వారా పరీక్షించడం లేదు. మ్యుటేషన్ కోసం తనిఖీ చేయకుండా ఆకుపచ్చని విశ్వసించడం.
- అస్థిరతను విస్మరించడం. కఠినమైన పరీక్షను నెట్టడానికి బదులుగా చెడు డిజైన్ను గుర్తించడం మరియు పరిష్కరించడం లేదు.
సారాంశంలో
యూనిట్ పరీక్షలు టెస్టింగ్ పిరమిడ్ యొక్క వేగవంతమైన మరియు అతిపెద్ద పొర; ఇది చౌకైన క్షణంలో పొరపాటును పట్టుకుంటుంది. AI యూనిట్ పరీక్షలను ఉత్పత్తి చేయగల సామర్థ్యాన్ని కలిగి ఉంది, అయితే కోడ్ నుండి ఆశించిన విలువను పొందడం ద్వారా సరికాని ప్రవర్తనను "సరైనది"గా భావించే పరీక్షలను రాయడం దాని అతిపెద్ద ఆపద. పరిష్కారం: అంగీకార నియమాలను ఇవ్వండి, ఊహించిన విలువలను మాన్యువల్గా లెక్కించండి, AAA మరియు FIRST సూత్రాలను అమలు చేయండి, బయటి ప్రపంచాన్ని అపహాస్యం చేయండి మరియు వాస్తవ తర్కాన్ని అమలు చేయండి మరియు మ్యుటేషన్ (కోడ్ను విచ్ఛిన్నం చేయడం) ద్వారా ప్రతి పరీక్షను పరీక్షించండి. పరీక్షించడం కష్టతరమైన కోడ్ అనేది ఫిక్సింగ్ అవసరమయ్యే డిజైన్ చిహ్నం.
అప్లికేషన్ టాస్క్
మీ స్వంత ప్రాజెక్ట్ నుండి వ్యాపార నియమాన్ని కలిగి ఉన్న ఫంక్షన్ను ఎంచుకోండి. అంగీకార నియమాలను వ్రాయండి మరియు "రూల్-డ్రైవెన్ యూనిట్ టెస్టింగ్" టెంప్లేట్తో AI పరీక్షలను వ్రాయండి; ఊహించిన విలువలను మాన్యువల్గా లెక్కించండి. ఆపై "మ్యుటేషన్ పటిష్టత తనిఖీ"ని వర్తింపజేయండి: కోడ్లో కనీసం 5 చిన్న బ్రేక్లు చేయండి మరియు ఎన్ని పరీక్షలు ఎరుపు రంగులోకి మారతాయో కొలవండి. పట్టుకోని అవినీతికి కొత్త పరీక్షను జోడించండి. ఎన్ని అంతరాయాలు సంభవించాయో నివేదించండి (మ్యుటేషన్ స్కోర్ వంటివి).
చెక్లిస్ట్
- [ ] నేను అంగీకార నియమాలను అందించాను మరియు ఊహించిన విలువలను మాన్యువల్గా లెక్కించాను.
- [ ] పరీక్షలు కోడ్ నుండి ఆశించిన విలువను పొందలేదని నేను నిర్ధారించుకున్నాను.
- [ ] నేను AAA మరియు FIRST మార్గదర్శకాలను అనుసరించి స్వతంత్ర పరీక్షను ఏర్పాటు చేసాను.
- [ ] నేను బాహ్య డిపెండెన్సీలను ఎగతాళి చేసాను మరియు వాస్తవ తర్కాన్ని అమలు చేసాను.
- [ ] నేను పరిమితి, ప్రతికూల మరియు దోష కేసులను కవర్ చేసాను.
- [ ] కోడ్ (మ్యుటేషన్)ని విచ్ఛిన్నం చేయడం ద్వారా పరీక్షలు నిజంగా రక్షిస్తాయని నేను నిరూపించాను.