?????????????????????????????????????????壬???????????     

???????????????????????д???С?δ?????????鱻???????????С??????????????????????????????????????????????ж????????????????????????????????????????????磬?????????????????????????list ???????????????????list ??β???????????????????????????????????????????????????????????????Щ??????

      ???????????????????????????????????????????????????????????????α?д??????????????????????????д??????????е?????????????????δ???????????????????????

      ??????????????????????????????????в???????????????

????????????????????????????д????????????????????????????????£??????????????????????????????Щ??????絯????????????????????????????????????????????????????????????????????????????????????????????????????????????70%?????????δ?????????????????????С???????Щ?????????????BUG?????????????????????????????????????????????????????????????????????????г????????????????????????????????????????·??

??????????????????????????????д???????е???????????????????д?????????????????????????????

????????г???????????????д?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????λ????????????????????????????????????????????????λ?????????????????????????????????в??????????????????????????????????????????????????????????????????????????Ч??????????

?????????????????????????(???к???)???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????й????????C++?????????????????????????????????????????????????д????????????????б?д(inline????)??????????????д?????????????в???(????????????????????)??

?????????????

    ?????д?????????????????????????????????????????????????????????κ??????????????????塣????????????????????????????????????????????????????????????????κ??????????????δ??????????????????

    ??????????????????????????????д??????????????????δ??????????????????????????????????????????????????????????????????κε???????

????????????????????????????絽??????XP???????????TDD?????????????????????д???????????п???????????????У????????????????????????????????Ч??о?????????????????????????д????????????????д????????????????????????д??????????????д?????????????д???????????в??????????????????????ν???д??????????????????д????????????з?????????????????????????????д?????????????????????????????????????????????????????д????????????????????????С??

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????д?????????????????????Щ???????????磬????????????????????????δ??д????????????д???????????????????????????????????????????????????????????п?????????????????????????????????д????????????????У???????????????????????????????2??????????????2?????????????????????????????????????????????

    ????????????????????У?????C??????в??????????????????????????C++???????????????????У? ????в????????????????Ada???????????????????????????????????????????????Ada???????????е?????????????????????????????????????(4GL)??????У??????????????????????????????????????檔

?????????????????????????????????????????????????????????????????????????????????????????????????????μ????л?????????С????????е???????????????????????????????н????????

?????????????????????????????Щ?????????????????(Code review)?????????(Static analysis)????????(Dynamic analysis)??????????????????????????ж???????????????Щ???????????????????????б??????С?????????????????????????????????????и????????????????????????????????

?Щ???е????

??????????????????????????????????"???????"????????????????????г????Щ??????????????????????ó??????????????Щ????????????

      ??????????????
????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????ε???·???????? ??????????????????????????????????????????????

??????????????????У??????????????????????????????????????????????????????С??????????????????????????Bug????????У??????????????賣?????????????????????????????С?????????????????????佫?????????????Щ??????????????????Bug???棬?????????£???ЩBug?????????????????????????????????????????????????????????????????? ???????????????????????????????????С?

??????????????У????????????????????????д?????????????????????????????????????????Щ???????????????Bug??????????????????????????????????????????£??????????????и???Ч??????????????????????????????????????????????μ?????????????????Ч?????á???????????????????????????????????????????ú????????

???????AdaTEST??Cantata???????????????????????????????Ч????????????????????????????й??????????????????????????????

      ?????????????Щ??????????
??????????Щ????????????????д???????????????????????????ε??????????????????????? ?????????????????????????????????????????Щ??????????????????????????????????????????д?????????????????????????????κ????顣???е???Щ?????????????????????????????????????????????????????(??????)???????????Bug????????????????????????Щ??

???????????????д??????????????????????????????????????????????????????????????????????????в?????????????????????????????Bug????????????????????????????Щ???????е??????????????????????????????????????????????????????????????????????

??????????л??????????????? ????????????????????????????????????????й???????????????????????????????????и???????????????????????????Bug???????????????????????????? --- ??????????????????? ?????Ч?????????????????????????????????????????????????????Щ???????????? ?????????????? ??????????????????????????????????????а???????????????????????????? ??????????????????????????(Review)??????????????????????л???????? ????????С?????????????????????????????????????

      ??????????????? ??????????????е???????
?????????????????ж??????????????????????????????ó???????????????????????????????????????У???????????в????????????????????????

?????????????????????????????????????????????????????????????Щ????????????????? ????????????????????????????????????????????????н??й???????Bug???????????????????

?????????????????????????????????????????У??????????????????????????????????????? ???????????????????????????Bug???????????????????Щ?????????????? ??Щ???????Щδ?????????????????????????????????????????????????????????????????п???????????????????????Щ????????????á?

      ?????????? ???????????????е?Bug
??????????????????????д??????????????????????????????????????????????????????????????ζ??????????????????????????????в?????????????????????????????????????????????У????κ??????????????????С?

???????????????????????????????????????????? ????????????????????????????????????????? ??????????????????飬????????????????????????????????????????????????????????????????????????Σ???????????????????????????????????е???????????

????????????????????????????е????????Щ?????????????????Bug????????????

???????????????£???????????????????????????????????!???????????????????????Щ????С????????????????????λ?????????丯?ò?????????????????????????????????????????????? ??Щ???????????????????????????????????????????????????????????

      ??????Ч?????
???????????????????????????????????????????Щδ?????Bug?????????????????????????????????????Bug?????СС???????????ε????????????????????????????????????????????(????????????????)??????????????????Щ???????????Bug?????????????????????????????δ?????г???????????????????????????????????????????????????????????????δ?????г???

????????о???????????????????????????????????????????????????????о??????????????в?????Ч?????????????????Bug????????????????????????????????y???????? ??t???????????????Bug???????????????????????????????????????Bug?????

?????????ε????????????????????????????????????????????????????????????????????? ???????Щ????????????????????????????????????????????????????????????

      ?Щ???
??????Щ??????<<??????????>>(Capers Jones??McGraw-Hill 1991)?????г?????????????в??????????????????????(??????????????)????Щ?????????????????Ч????????????????? ???????????(?μ??????)??


 

(?????????(Field test)??????????????????????????????????????в????)

???????????????????????????y??к??ε?????????β??????????????????????????????????????????????Bug?????????β??????á?

???????????Щ?????????50%???????????????????Щ??????е?Bug????????檔?????ЩBug???????α????????????Щ??????????????????????????????????????????????????????????????????????50%??????????????????????????????????ò??????????

????

????????????????????????????????????????????????η??????Bug????????????????????????????????????Σ?Bug????????????????????????????????????????????á??????????????????????????????????????????????о??????????????в?????Ч????????????????? ??????????????????????£?????????????????????????????????????????????????????ú??????????????????????????????Bug??????в?????Ρ?

??????????????Ч?????????????????????????????????????а???????????????????????????????????????????????????????AdaTEST??Cantata???????????????????????Щ????????????????????????????????????????μ???????????????????????????????????????????????????????á???Ч????????????????????????????????????????????????????????????????????????

???????????

1?????????????????
    ?????е?????????????????????????????????????????????????????????????????????????????????????????????????????????л??????????????????????????????????????????????????????????????и????

2?????????????????
    ??д?????????????????????????????????д?????test-first?????????????????????????ú??????????????????????е?????

3??????????д??????????
    ?????????????????????????????????????????????????????????????????е?????????????£??????????????

4???????л?????
    ?????????????????????????飬??д???????????????????????в????

???????????


    ????????????????????????????????Щ???????????????????????????????????????????????????????????????????????????????????????

1?? ??????????????????????
    ?????????????????????????????????????????????????????????????????

2?? ????????????????????????
    ??д??????????????????????????·???????????????飬????????????????ɡ?????????????????????????????δ????????????????????????????????????κ?????£???δ?????????????????£???????????ɡ??????????????????????????????????

3?? ??????????????????
    ?????????????????ж??????????????????????????????????????????????????????????????

4?? ????????????????????
    ??????????????????????????÷?????Ч???????????????????????е??????????????????????????????????????????????δ???????????

??д???????


    ??????????????о????????????????????ɡ??????????????????????????????????????????????黹????????????????????y????????????????????????????ζ???????е????????????????????????

1?? ??д????????????????
    ?????????????????緢??BUG??????????????????????????
    ????????<<??????????>>(Capers Jones??McGraw-Hill 1991)?????г?????????????в??????????????????????(??????????????)????Щ?????????????????Ч????????????????????????????????(?μ??????)??

    ?????????(Field test)??????????????????????????????????????в??????
    ??????????????д??????????????????????д???????????????????????Щ????
        1????????????д???????????????濱????????
        2???????????????????????????????????Щ?????????????bug???????????????????????Щ???????檔
        3???????????????????bug???????????????????????bug ?????λ?á?
    ???????Щ???????????????????????????????????????

2?? ???в?????????????
    ???????????????????????????????????????????????ж????????????????????????????г????????????????????Щ??????????????????????????Щ????????????????????????????????????????????Σ??????????Ρ?

3?? ???????????????????
    ???????????????????????????????????????????????????????????????

4?? ??????????????????????????????
    ?????????????????????????????????????????????????????????????????????????????????д???????????????

5?? ??????Щ????????????????
    ????????????????????????????????????????????????????????????????????

6?? ??????????????д??????????д?????
    ?????????н???????????д??????????????????????????????????????????????????????????????????λ???????

7?? ??????ò????????QA??Quality Assurance???????й?????????????ú???Ρ?

    ?????????????Щ?????????????????????????????????????????????????ε????????????????????????????У?????????????????????Щ?????????磺???????????????????????????????????Ч??????????????????????????

8?? ???????????????????????????е???????
    ????????????????????????????????????????????????????????£?????????????????У???????Щ????????????????????????????????????????????????????????????????????е?????????????????????????????mock ????


????????д


?????????????????????????????Java???????????C++????????????????????????????????C++?????????????????????????????????VC6.0??

?????
class CMyClass
{
public:
    int Add(int i?? int j);
    CMyClass();
    virtual ~CMyClass();

private:
    int mAge;      //????
    CString mPhase; //?????Σ???"????"??"????"
};

??????????????CMyClassTester??????????????г??????????
void CMyClassTester::CaseBegin()
{
    //pObj??CMyClassTester????????????????????????????
    //?????????е????????????pObj?????????????????
    pObj = new CMyClass();
}

void CMyClassTester::CaseEnd()
{
    delete pObj;
}
??????????CaseBegin()??CaseEnd()????????????????????????????????????????CaseBegin()????β???????CaseEnd()??

????????????????????????????
int CMyClass::Add(int i?? int j)
{
    return i+j;
}
??????????????
void CMyClassTester::Add_int_int()
{
}
?????????????????????????????????????????????????????????????????????????????????????????
void CMyClassTester::Add_int_int()
{
    //?????????????
    CaseBegin();{              //1
    int i = 0;                //2
    int j = 0;                //3
    int ret = pObj->Add(i?? j); //4
    ASSERT(ret == 0);          //5
    }CaseEnd();                //6
}
??1???6?н??????????????????????{}????????????????????????????????????????????????????????????????

??2???3??????????????????4???????????????????Щ???????????????????????5????????????????????????????????????????????????ASSERT??VC?????????????????????????????ò????????е????????????????ù???????????

????????е?????ú?????2??????4??5?п????д???У?ASSERT(pObj->Add(0?? 0) == 0);???????????????????????????????????????????????????????????????????к????????????????????????????????????飺?????????????????????顣

????????????????????????????????в????????????????????????/??????????????????????????????????????????????????С?????????????????????????/??????????????????????????

????????


?????????????????????????????????????????????????????????????????????????????????????????????????????????Щ????????????????????????????????????????????????????????????????????????Щ?????????????????????????????????IOy?塣IOy????????????????????????????????y?壬???磬?????????????????????????????????????????????е??????????????????????????????????????????????????????????????д???????????????????????????????д???????????????????????????????????????????д?????????(???????)???????????????????IOy?壬????????????????????????????????????????趨????????????б??????????????ж??????????????????????????????????й???????
?????????
void CMyClass::Grow(int years)
{
    mAge += years;

    if(mAge < 10)
        mPhase = "???";
    else if(mAge <20)
        mPhase = "????";
    else if(mAge <45)
        mPhase = "????";
    else if(mAge <60)
        mPhase = "????";
    else
        mPhase = "????";
}

????????е??????????????
    CaseBegin();{
    int years = 1;
    pObj->mAge = 8;
    pObj->Grow(years);
    ASSERT( pObj->mAge == 9 );
    ASSERT( pObj->mPhase == "???" );
    }CaseEnd();
???????????ж???????????????mAge???и?????????????ж?????????????????????????????????????????????????????????????????????????????????????????????????????????磺??б???????????????????????е???????浽??????????????????????????????Щ?????????????????????磬?????? ASSERT( ...)???????pObj->OpenFile();??????????г????????????????????????????????磬?????????
#define UNIT_TEST(cls) friend class cls##Tester;
??????????????м???д???UNIT_TEST(ClassName)??

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????/????????????????в????????????в????????????С????????????????????????????????????????

??????????????????????????????????????????????????IOy?壬???????????У??????????????????ж??????????趨??????????У??????????????????????á????????????????????п??????????в???????????????????????????????????????????д????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????
???????????????Trim???????????????????????????????????????????????????????п???????п???????п??????????

???????????
?????????п?????????????????????
??????????????????????????????Ч??Χ??0-100????????????????????0??100??

???????????
?????????????????????Χ??????????????????????????????????????????б????????????С??0?????100???????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????е???????????????????????к??????С????????£????????????????????????????????????????????????????????????????????????д?????????桱????????????????????????????????????????????????????

??и???


????????????????????????????????????????????ν???в??????????????????????????????????????????????????????????????????????ν???в????????????????????в?????????????????в?????б????????????????????????????????磺????????й??????????????????????????????壬?????????????????????????????Щ???????????????????????Щ???????????????????????????????????в???????????????в???????????????????????????????????????м?????????????磺???????????????串??????????串??δ???????????δ???????????????????δ?????

??????в?????????????????????????????????????????????????????????????λ????У???????????????????????????????·??????串??????????е???????????????????????ж??????????????????????????????????????????????????????й??????????????????£???????????????????е????????????????е????????????????????Σ???????????????????????????????????????п????????????????????????????????????????Σ??????????????????????????????????п????????????????Щ??????о?????????????????й??????????????????????????磺||д??&&?????д!????????÷???????????????????????????????????Щ??????????棬?????????????????????????????????????????????????????????????????????????????????Ч??????????????Ч????????????????????????????????????????????????串????????????????????·??????????????????????????????????????????????????????????Σ????????????????????Σ?????????????????????????????????????????????????????????????????????????????????????????????????????????Щ?????????????????′??????????????潫??????????????

?????????в??????????????????????????鼮????н????????????????????????????????????????????????????????????????????????Щ???????в??????????????????????????????????????????????в???????????и?????????δ??????????λ?????????????????????磬????????????δ??????е????????????????????????????????????????????????????·????????????????????????в?????????????????????????????y???????????????????????????????????Щ????????????????????????????????????????????????Щ?????????????

??????????

??????????????????????к????????????????????????в??????AutoRunner?????????????????????TAR??????Ч??????????????????????????TestCenter