Spec Debt మీరు సరిదిద్దినంత మాత్రాన మాయమైపోదు. అది కేవలం ఒక చోటు నుండి మరో చోటుకి మారుతుంది.
ఒక సమస్యను పరిష్కరించడం అంటే అది పూర్తిగా తొలగిపోవడం అని కాదు. కొన్నిసార్లు, మీరు దానిని కేవలం వేరే చోటికి మారుస్తారు మాత్రమే.
నేను ఇటీవల spec debt కోసం ఒక ప్రాజెక్ట్ను ఆడిట్ చేశాను. ఇవి సూచనలలో ఉండే లోపాలు, ఇవి బగ్స్కు లేదా తప్పుడు AI ప్రవర్తనకు దారితీస్తాయి. నేను ఏడు నిర్దిష్ట అంశాలను సరిదిద్దాను. ఆ ఫిక్స్ల తర్వాత, టెస్ట్లు పాస్ అయ్యాయి. అంతా బాగున్నట్లుగా (green) కనిపించింది.
కానీ ఆ అప్పు (debt) మాయం కాలేదు. అది feature files నుండి step definitions లోకి మారిపోయింది.
ఈ అంశాలను సరిదిద్దడం ద్వారా నేను నేర్చుకున్న విషయాలు ఇక్కడ ఉన్నాయి:
- ఖచ్చితత్వం ముఖ్యం. "the response is fast" అని చెప్పే బదులు, "the response returns within 12 seconds of the order submission" అని చెప్పండి. ఇది సమయాన్ని ఖచ్చితంగా నిర్ణయిస్తుంది.
- అస్పష్టతను నివారించండి. "Retried 2 times" అనేది అస్పష్టంగా ఉంటుంది. దాని అర్థం మొత్తం 2 ప్రయత్నాలా లేదా 3 ఆ? ఖచ్చితత్వం కోసం "no more than 2 charge requests total" అని ఉపయోగించండి.
- మెకానిజం పేరు చెప్పండి. "the inventory is released" అని చెప్పడం అస్పష్టంగా ఉంటుంది. "the inventory service receives a release request for item X" అని స్పష్టంగా పేర్కొనండి.
- తప్పుడు హామీలను తొలగించండి. ఒక ఫీచర్ ఇంకా అందుబాటులో లేనందున ఒక స్టెప్ పాస్ అయితే, ఆ స్టెప్ను తొలగించండి. లేని ఫ్లో (flow) కోసం పాస్ అయిన టెస్ట్ అనేది ఒక అబద్ధం.
- "correct" ను నిర్వచించండి. ఖచ్చితమైన విలువలు (hard values) లేకుండా "correct" లేదా "proper" వంటి పదాలను ఎప్పుడూ ఉపయోగించకండి. "contains the right id" అని చెప్పే బదులు "contains order_id 123" అని ఉపయోగించండి.
ఈ సమస్యలను గుర్తించడానికి నేను ఒక ఫ్రేమ్వర్క్ను రూపొందించాను. ప్రతి సినారియో కోసం ఈ ఐదు ప్రశ్నలను అడగండి:
- ఈ సినారియోకు బాధ్యత ఎవరిది?
- ఇది ఏ నిర్ణయాలను అసంపూర్తిగా వదిలేస్తుంది?
- ఇక్కడ అన్ని పదాలకు నిర్వచనాలు ఉన్నాయా?
- ఇది ప్రవర్తనను (behavior) వివరిస్తుందా లేదా ఇంప్లిమెంటేషన్ను (implementation) వివరిస్తుందా?
- ఈ వివరణలో ఏమి లోపించింది?
అతిపెద్ద ఉచ్చు టెక్స్ట్ మరియు కోడ్ మధ్య ఉండే అంతరం. మీరు మీ specలో ఒక పరిపూర్ణమైన, ఖచ్చితమైన సూచనను వ్రాయవచ్చు. కానీ మీ అంతర్లీన కోడ్ ఆ టెస్ట్ను పాస్ చేయడానికి ఏదైనా షార్ట్కట్ ఉపయోగిస్తే, మీకు ఇంకా అప్పు (debt) ఉన్నట్లే.
Spec "create an order via API" అని చెబుతుంది. కానీ కోడ్ సమయాన్ని ఆదా చేయడానికి నేరుగా డేటాబేస్లోకి ఆర్డర్ను ఇంజెక్ట్ చేస్తుంది. టెస్ట్ పాస్ అవుతుంది, కానీ అప్పు రిక్వైర్మెంట్ (requirement) నుండి ఇంప్లిమెంటేషన్ (implementation) లోకి మారిపోయింది.
మొదటిసారే పరిపూర్ణమైన specలను వ్రాయడానికి ప్రయత్నించకండి. వాటిని వ్రాయండి, ఆడిట్ చేయండి మరియు సరిదిద్దండి.
Source: https://dev.to/diyaburman/spec-debt-doesnt-disappear-when-you-fix-it-it-migrates-d25
Optional learning community: https://t.me/GyaanSetuAi
