dān yuán cè shì shì zài ruǎn jiàn kāi fā guò chéng zhōng yào jìn xíng de zuì dī jí bié de cè shì huó dòng, zài dān yuán cè shì huó dòng zhōng, ruǎn jiàn de dú lì dān yuán jiāng zài yǔ chéng xù de qí tā bù fēn xiāng gé lí de qíng kuàng xià jìn xíng cè shì。
zài yī zhǒng chuán tǒng de jié gòu huà biān chéng yǔ yán zhōng, bǐ rú c, yào jìn xíng cè shì de dān yuán yī bān shì hán shù huò zǐ guò chéng。 zài xiàng c++ zhè yàng de miàn xiàng duì xiàng de yǔ yán zhōng, yào jìn xíng cè shì de jī běn dān yuán shì lèi。 duì ada yǔ yán lái shuō, kāi fā rén yuán kě yǐ xuǎn zé shì zài dú lì de guò chéng hé hán shù, hái shì zài ada bāo de jí bié shàng jìn xíng dān yuán cè shì 。 dān yuán cè shì de yuán zé tóng yàng bèi kuò zhǎn dào dì sì dài yǔ yán (4gl) de kāi fā zhōng, zài zhè lǐ jī běn dān yuán bèi diǎn xíng dì huàfēn wéi yī gè cài dān huò xiǎn shì jiè miàn。
dān yuán cè shì bù jǐn jǐn shì zuò wéi wú cuò biān mǎ yī zhǒng fǔ zhù shǒu duàn zài yī cì xìng de kāi fā guò chéng zhōng shǐ yòng, dān yuán cè shì bì xū shì kě chóngfù de, wú lùn shì zài ruǎn jiàn xiū gǎi, huò shì yí zhí dào xīn de yùn xíng huán jìng de guò chéng zhōng。 yīn cǐ, suǒ yòu de cè shì dū bì xū zài zhěng gè ruǎn jiàn xì tǒng de shēng mìng zhōu qī zhōng jìn xíng wéi hù。
jīng cháng yǔ dān yuán cè shì lián xì qǐ lái de lìng wài yī xiē kāi fā huó dòng bāo kuò dài mǎ zǒu dú (codereview), jìng tài fēn xī (staticanalysis) hé dòng tài fēn xī (dynamicanalysis)。 jìng tài fēn xī jiù shì duì ruǎn jiàn de yuán dài mǎ jìn xíng yán dú, chá zhǎo cuò wù huò shōu jí yī xiē dù liàng shù jù, bìng bù xū yào duì dài mǎ jìn xíng biān yì hé zhí xíng。 dòng tài fēn xī jiù shì tōng guò guān chá ruǎn jiàn yùn xíng shí de dòng zuò, lái tí gōng zhí xíng gēn zōng, shí jiān fēn xī, yǐ jí cè shì fù gài dù fāng miàn de xìn xī。
dān yuán cè shì
zhōng kē yǒng lián gāo jí jì shù péi xùn zhōng xīn( www.itisedu.com)
dān yuán cè shì ( mó kuài cè shì) shì kāi fā zhě biān xiě de yī xiǎo duàn dài mǎ, yòng yú jiǎn yàn bèi cè dài mǎ de yī gè hěn xiǎo de、 hěn míng què de gōng néng shì fǒu zhèng què。 tōng cháng 'ér yán, yī gè dān yuán cè shì shì yòng yú pàn duàn mǒu gè tè dìng tiáo jiàn( huò zhě chǎng jǐng) xià mǒu gè tè dìng hán shù de xíng wéi。 lì rú, nǐ kě néng bǎ yī gè hěn dà de zhí fàng rù yī gè yòu xù list zhōng qù, rán hòu què rèn gāi zhí chū xiàn zài list de wěi bù。 huò zhě, nǐ kě néng huì cóng zì fú chuàn zhōng shān chú pǐ pèi mǒu zhǒng mó shì de zì fú, rán hòu què rèn zì fú chuàn què shí bù zài bāo hán zhè xiē zì fú liǎo。
dān yuán cè shì shì yóu chéng xù yuán zì jǐ lái wán chéng, zuì zhōng shòu yì de yě shì chéng xù yuán zì jǐ。 kě yǐ zhè me shuō, chéng xù yuán yòu zé rèn biān xiě gōng néng dài mǎ, tóng shí yě jiù yòu zé rèn wéi zì jǐ de dài mǎ biān xiě dān yuán cè shì 。 zhí xíng dān yuán cè shì , jiù shì wèile zhèng míng zhè duàn dài mǎ de xíng wéi hé wǒ men qī wàng de yī zhì。
gōng chǎng zài zǔ zhuāng yī tái diàn shì jī zhī qián, huì duì měi gè yuán jiàn dū jìn xíng cè shì, zhè, jiù shì dān yuán cè shì 。
qí shí wǒ men měi tiān dōuzài zuò dān yuán cè shì 。 nǐ xiě liǎo yī gè hán shù, chú liǎo jí jiǎn dān de wài, zǒng shì yào zhí xíng yī xià, kàn kàn gōng néng shì fǒu zhèng cháng, yòu shí hái yào xiǎng bàn fǎ shū chū xiē shù jù, rú dàn chū xìn xī chuāng kǒu shénme de, zhè, yě shì dān yuán cè shì , lǎo nà bǎ zhè zhǒng dān yuán cè shì chēng wéi lín shí dān yuán cè shì 。 zhǐ jìn xíng liǎo lín shí dān yuán cè shì de ruǎn jiàn, zhēn duì dài mǎ de cè shì hěn bù wán zhěng, dài mǎ fù gài shuài yào chāo guò 70% dōuhěn kùn nán, wèi fù gài de dài mǎ kě néng yí liú dà liàng de xì xiǎo de cuò wù, zhè xiē cuò wù hái huì hù xiāng yǐng xiǎng, dāng bug bào lù chū lái de shí hòu nán yú tiáoshì, dà fú dù tí gāo hòu qī cè shì hé wéi hù chéng běn, yě jiàng dī liǎo kāi fā shāng de jìng zhēng lì。 kě yǐ shuō, jìn xíng chōng fēn de dān yuán cè shì , shì tí gāo ruǎn jiàn zhì liàng, jiàng dī kāi fā chéng běn de bì yóu zhī lù。
duì yú chéng xù yuán lái shuō, rú guǒ yǎng chéng liǎo duì zì jǐ xiě de dài mǎ jìn xíng dān yuán cè shì de xí guàn, bù dàn kě yǐ xiě chū gāo zhì liàng de dài mǎ, ér qiě hái néng tí gāo biān chéng shuǐ píng。
yào jìn xíng chōng fēn de dān yuán cè shì , yìng zhuān mén biān xiě cè shì dài mǎ, bìng yǔ chǎn pǐn dài mǎ gé lí。 lǎo nà rèn wéi, bǐ jiào jiǎn dān de bàn fǎ shì wéi chǎn pǐn gōng chéng jiàn lì duì yìng de cè shì gōng chéng, wéi měi gè lèi jiàn lì duì yìng de cè shì lèi, wéi měi gè hán shù( hěn jiǎn dān de chú wài) jiàn lì cè shì hán shù。 shǒu xiān jiù jǐ gè gài niàn tán tán lǎo nà de kàn fǎ。
yī bān rèn wéi, zài jié gòu huà chéng xù shí dài, dān yuán cè shì suǒ shuō de dān yuán shì zhǐ hán shù, zài dāng jīn de miàn xiàng duì xiàng shí dài, dān yuán cè shì suǒ shuō de dān yuán shì zhǐ lèi。 yǐ lǎo nà de shí jiàn lái kàn, yǐ lèi zuò wéi cè shì dān wèi, fù zá dù gāo, kě cāo zuò xìng jiào chā, yīn cǐ réng rán zhù zhāng yǐ hán shù zuò wéi dān yuán cè shì de cè shì dān wèi, dàn kě yǐ yòng yī gè cè shì lèi lái zǔ zhì mǒu gè lèi de suǒ yòu cè shì hán shù。 dān yuán cè shì bù yìng guòfèn qiáng diào miàn xiàng duì xiàng, yīn wéi jú bù dài mǎ yǐ rán shì jié gòu huà de。 dān yuán cè shì de gōng zuò liàng jiào dà, jiǎn dān shí yòng gāo xiào cái shì yìng dào lǐ。
yòu yī zhǒng kàn fǎ shì, zhǐ cè shì lèi de jiē kǒu ( gōng yòu hán shù ), bù cè shì qí tā hán shù, cóng miàn xiàng duì xiàng jiǎo dù lái kàn, què shí yòu qí dào lǐ, dàn shì, cè shì de mù de shì zhǎo cuò bìng zuì zhōng pái cuò, yīn cǐ, zhǐ yào shì bāo hán cuò wù de kě néng xìng jiào dà de hán shù dōuyào cè shì, gēn hán shù shì fǒu sī yòu méi yòu guān xì。 duì yú c++ lái shuō, kě yǐ yòng yī zhǒng jiǎn dān de fāng fǎ qū gé xū cè shì de hán shù: jiǎn dān de hán shù rú shù jù dú xiě hán shù de shí xiàn zài tóu wén jiàn zhōng biān xiě (inline hán shù ), suǒ yòu zài yuán wén jiàn biān xiě shí xiàn de hán shù dōuyào jìn xíng cè shì ( gòu zào hán shù hé xī gòu hán shù chú wài )。
wèishénme yào shǐ yòng dān yuán cè shì
wǒ men biān xiě dài mǎ shí, yī dìng huì fǎn fù tiáoshì bǎo zhèng tā néng gòu biān yì tōng guò。 rú guǒ shì biān yì méi yòu tōng guò de dài mǎ, méi yòu rèn hé rén huì yuàn yì jiāo fù gěi zì jǐ de lǎo bǎn。 dàn dài mǎ tōng guò biān yì, zhǐ shì shuō míng liǎo tā de yǔ fǎ zhèng què; wǒ men què wú fǎ bǎo zhèng tā de yǔ yì yě yī dìng zhèng què, méi yòu rèn hé rén kě yǐ qīng yì chéng nuò zhè duàn dài mǎ de xíng wéi yī dìng shì zhèng què de。
xìng yùn, dān yuán cè shì huì wèiwǒ men de chéng nuò zuò bǎo zhèng。 biān xiě dān yuán cè shì jiù shì yòng lái yàn zhèng zhè duàn dài mǎ de xíng wéi shì fǒu yǔ wǒ men qī wàng de yī zhì。 yòu liǎo dān yuán cè shì , wǒ men kě yǐ zì xìn de jiāo fù zì jǐ de dài mǎ, ér méi yòu rèn hé de hòu gù zhī yōu。
shénme shí hòu cè shì? dān yuán cè shì yuè zǎo yuè hǎo, zǎo dào shénme chéng dù? xp kāi fā lǐ lùn jiǎng jiū tdd, jí cè shì qū dòng kāi fā, xiān biān xiě cè shì dài mǎ, zài jìn xíng kāi fā。 zài shí jì de gōng zuò zhōng, kě yǐ bù bì guòfèn qiáng diào xiān shénme hòu shénme, zhòng yào de shì gāo xiào hé gǎn jué shū shì。 cóng lǎo nà de jīng yàn lái kàn, xiān biān xiě chǎn pǐn hán shù de kuàng jià, rán hòu biān xiě cè shì hán shù, zhēn duì chǎn pǐn hán shù de gōng néng biān xiě cè shì yòng lì, rán hòu biān xiě chǎn pǐn hán shù de dài mǎ, měi xiě yī gè gōng néng diǎn dū yùn xíng cè shì, suí shí bǔ chōng cè shì yòng lì。 suǒ wèi xiān biān xiě chǎn pǐn hán shù de kuàng jià, shì zhǐ xiān biān xiě hán shù kōng de shí xiàn, yòu fǎn huí zhí de suí biàn fǎn huí yī gè zhí, biān yì tōng guò hòu zài biān xiě cè shì dài mǎ, zhè shí, hán shù míng、 cān shù biǎo、 fǎn huí lèi xíng dū yìng gāi què dìng xià lái liǎo, suǒ biān xiě de cè shì dài mǎ yǐ hòu xū xiū gǎi de kě néng xìng bǐ jiào xiǎo。
yóu shuí cè shì? dān yuán cè shì yǔ qí tā cè shì bù tóng, dān yuán cè shì kě kàn zuò shì biān mǎ gōng zuò de yī bù fēn, yīnggāi yóu chéng xù yuán wán chéng, yě jiù shì shuō, jīng guò liǎo dān yuán cè shì de dài mǎ cái shì yǐ wán chéng de dài mǎ, tí jiāo chǎn pǐn dài mǎ shí yě yào tóng shí tí jiāo cè shì dài mǎ。 cè shì bù mén kě yǐ zuò yī dìng chéng dù de shěn hé。
guān yú zhuāng dài mǎ, lǎo nà rèn wéi, dān yuán cè shì yìng bì miǎn biān xiě zhuāng dài mǎ。 zhuāng dài mǎ jiù shì yòng lái dài tì mǒu xiē dài mǎ de dài mǎ, lì rú, chǎn pǐn hán shù huò cè shì hán shù diào yòng liǎo yī gè wèi biān xiě de hán shù, kě yǐ biān xiě zhuāng hán shù lái dài tì gāi bèi diào yòng de hán shù, zhuāng dài mǎ yě yòng yú shí xiàn cè shì gé lí。 cǎi yòng yóu dǐ xiàng shàng de fāng shì jìn xíng kāi fā, dǐ céng de dài mǎ xiān kāi fā bìng xiān cè shì, kě yǐ bì miǎn biān xiě zhuāng dài mǎ, zhè yàng zuò de hǎo chù yòu: jiǎn shǎo liǎo gōng zuò liàng; cè shì shàng céng hán shù shí, yě shì duì xià céng hán shù de jiànjiē cè shì; dāng xià céng hán shù xiū gǎi shí, tōng guò huí guī cè shì kě yǐ què rèn xiū gǎi shì fǒu dǎo zhì shàng céng hán shù chǎn shēng cuò wù。
zài yī zhǒng chuán tǒng de jié gòu huà biān chéng yǔ yán zhōng, bǐ rú c, yào jìn xíng cè shì de dān yuán yī bān shì hán shù huò zǐ guò chéng。 zài xiàng c++ zhè yàng de miàn xiàng duì xiàng de yǔ yán zhōng, yào jìn xíng cè shì de jī běn dān yuán shì lèi。 duì ada yǔ yán lái shuō, kāi fā rén yuán kě yǐ xuǎn zé shì zài dú lì de guò chéng hé hán shù, hái shì zài ada bāo de jí bié shàng jìn xíng dān yuán cè shì 。 dān yuán cè shì de yuán zé tóng yàng bèi kuò zhǎn dào dì sì dài yǔ yán (4gl) de kāi fā zhōng, zài zhè lǐ jī běn dān yuán bèi diǎn xíng dì huàfēn wéi yī gè cài dān huò xiǎn shì jiè miàn。
dān yuán cè shì bù jǐn jǐn shì zuò wéi wú cuò biān mǎ yī zhǒng fǔ zhù shǒu duàn zài yī cì xìng de kāi fā guò chéng zhōng shǐ yòng, dān yuán cè shì bì xū shì kě chóngfù de, wú lùn shì zài ruǎn jiàn xiū gǎi, huò shì yí zhí dào xīn de yùn xíng huán jìng de guò chéng zhōng。 yīn cǐ, suǒ yòu de cè shì dū bì xū zài zhěng gè ruǎn jiàn xì tǒng de shēng mìng zhōu qī zhōng jìn xíng wéi hù。
jīng cháng yǔ dān yuán cè shì lián xì qǐ lái de lìng wài yī xiē kāi fā huó dòng bāo kuò dài mǎ zǒu dú (codereview), jìng tài fēn xī (staticanalysis) hé dòng tài fēn xī (dynamicanalysis)。 jìng tài fēn xī jiù shì duì ruǎn jiàn de yuán dài mǎ jìn xíng yán dú, chá zhǎo cuò wù huò shōu jí yī xiē dù liàng shù jù, bìng bù xū yào duì dài mǎ jìn xíng biān yì hé zhí xíng。 dòng tài fēn xī jiù shì tōng guò guān chá ruǎn jiàn yùn xíng shí de dòng zuò, lái tí gōng zhí xíng gēn zōng, shí jiān fēn xī, yǐ jí cè shì fù gài dù fāng miàn de xìn xī。
yī xiē liú xíng de wù jiě
zài míng què liǎo shénme shì dān yuán cè shì yǐ hòu, wǒ men kě yǐ jìn xíng " fǎn diào lùn zhèng " liǎo。 zài xià miàn de zhāng jié lǐ, wǒ men liè chū liǎo yī xiē fǎn duì dān yuán cè shì de pǔ biàn de lùn diǎn。 rán hòu yòng chōng fēn de lǐ yóu lái zhèng míng zhè xiē lùn diǎn shì bù zú qǔ de。
tā làng fèi liǎo tài duō de shí jiān
yī dàn biān mǎ wán chéng, kāi fā rén yuán zǒng shì huì pò qiē xī wàng jìn xíng ruǎn jiàn de jí chéng gōng zuò, zhè yàng tā men jiù néng gòu kàn dào shí jì de xì tǒng kāi shǐ qǐ dòng gōng zuò liǎo。 zhè zài wài biǎo shàng kàn lái shì yī xiàng míng xiǎn de jìn bù, ér xiàng dān yuán cè shì zhè yàng de huó dòng yě xǔ huì bèi kàn zuò shì tōng wǎng zhè gè jiē duàn diǎn de dào lù shàng de zhàng 'ài, tuī chí liǎo duì zhěng gè xì tǒng jìn xíng lián diào zhè zhǒng zhēn zhèng yòu yì sī de gōng zuò qǐ dòng de shí jiān。
zài zhè zhǒng kāi fā bù zhòu zhōng, zhēn shí yì yì shàng de jìn bù bèi wài biǎo shàng de jìn bù qǔ dài liǎo。 xì tǒng néng gòu zhèng cháng gōng zuò de kě néng xìng shì hěn xiǎo de, gèng duō de qíng kuàng shì chōng mǎn liǎo gè shì gè yàng de bug。 zài shí jiàn zhōng, zhè yàng yī zhǒng kāi fā bù zhòu cháng cháng huì dǎo zhì zhè yàng de jiēguǒ: ruǎn jiàn shèn zhì wú fǎ yùn xíng。 gèng jìn yī bù de jiēguǒ shì dà liàng de shí jiān jiāng bèi huā fèi zài gēn zōng nà xiē bāo hán zài dú lì dān yuán lǐ de jiǎn dān de bug shàng miàn, zài gè bié qíng kuàng xià, zhè xiē bug yě xǔ shì suǒ suì hé wēi bù zú dào de, dàn shì zǒng de lái shuō, tā men huì dǎo zhì zài ruǎn jiàn jí chéng wéi yī gè xì tǒng shí zēng jiā 'é wài de gōng qī, ér qiě dāng zhè gè xì tǒng tóu rù shǐ yòng shí yě wú fǎ què bǎo tā néng gòu kě kào yùn xíng。
zài shí jiàn gōng zuò zhōng, jìn xíng liǎo wán zhěng jìhuà de dān yuán cè shì hé biān xiě shí jì de dài mǎ suǒ huā fèi de jīng lì dà zhì shàng shì xiāng tóng de。 yī dàn wán chéng liǎo zhè xiē dān yuán cè shì gōng zuò, hěn duō bug jiāng bèi jiū zhèng, zài què xìn tā men shǒu tóu yōng yòu wěn dìng kě kào de bù jiàn de qíng kuàng xià, kāi fā rén yuán néng gòu jìn xíng gèng gāo xiào de xì tǒng jí chéng gōng zuò。 zhè cái shì zhēn shí yì yì shàng de jìn bù, suǒ yǐ shuō wán zhěng jìhuà xià de dān yuán cè shì shì duì shí jiān de gèng gāo xiào de lì yòng。 ér tiáoshì rén yuán de bù shòu kòng hé sǎnmàn de gōng zuò fāng shì zhǐ huì huā fèi gèng duō de shí jiān 'ér qǔ dé hěn shǎo de hǎo chù。
shǐ yòng adatest hé cantata zhè yàng de zhī chí gōng jù kě yǐ shǐ dān yuán cè shì gèng jiā jiǎn dān hé yòu xiào。 dàn zhè bù shì bì xū de, dān yuán cè shì jí shǐ shì zài méi yòu gōng jù zhī chí de qíng kuàng xià yě shì yī xiàng fēi cháng yòu yì yì de huó dòng。
tā jǐn jǐn shì zhèng míng zhè xiē dài mǎ zuò liǎo shénme
zhè shì nà xiē méi yòu shǒu xiān wéi měi gè dān yuán biān xiě yī gè xiáng xì de guī gé shuō míng 'ér zhí jiē tiào dào biān mǎ jiē duàn de kāi fā rén yuán tí chū de yī tiáo pǔ biàn de bào yuàn, dāng biān mǎ wán chéng yǐ hòu bìng qiě miàn lín dài mǎ cè shì rèn wù de shí hòu, tā men jiù yuè dú zhè xiē dài mǎ bìng zhǎo chū tā shí jì shàng zuò liǎo shénme, bǎ tā men de cè shì gōng zuò jī yú yǐ jīng xiě hǎo de dài mǎ de jī chǔ shàng。 dāng rán, tā men wú fǎ zhèng míng rèn hé shì qíng。 suǒ yòu de zhè xiē cè shì gōng zuò néng gòu biǎo míng de shì qíng jiù shì biān yì qì gōng zuò zhèng cháng。 shì de, tā men yě xǔ néng gòu zhuā zhù ( xī wàng néng gòu ) hǎn jiàn de biān yì qì bug, dàn shì tā men néng gòu zuò de jǐn jǐn shì zhè xiē。
rú guǒ tā men shǒu xiān xiě hǎo yī gè xiáng xì de guī gé shuō míng, cè shì néng gòu yǐ guī gé shuō míng wéi jī chǔ。 dài mǎ jiù néng gòu zhēn duì tā de guī gé shuō míng, ér bù shì zhēn duì zì shēn jìn xíng cè shì。 zhè yàng de cè shì réng rán néng gòu zhuā zhù biān yì qì de bug, tóng shí yě néng zhǎo dào gèng duō de biān mǎ cuò wù, shèn zhì shì yī xiē guī gé shuō míng zhōng de cuò wù。 hǎo de guī gé shuō míng kě yǐ shǐ cè shì de zhì liàng gèng gāo, suǒ yǐ zuì hòu de jié lùn shì gāo zhì liàng de cè shì xū yào gāo zhì liàng de guī gé shuō míng。
zài shí jiàn zhōng huì chū xiàn zhè yàng de qíng kuàng: yī gè kāi fā rén yuán yào miàn duì cè shì yī gè dān yuán shí zhǐ gěi chū dān yuán de dài mǎ 'ér méi yòu guī gé shuō míng zhè yàng chī lì bù tǎo hǎo de rèn wù。 nǐ zěn yàng zuò cái huì yòu gèng duō de shōu huò, ér bù jǐn jǐn shì fā xiàn biān yì qì de bug? dì yī bù shì lǐ jiě zhè gè dān yuán yuán běn yào zuò shénme, --- bù shì tā shí jì shàng zuò liǎo shénme。 bǐ jiào yòu xiào de fāng fǎ shì dǎo tuī chū yī gè gài yào de guī gé shuō míng。 zhè gè guò chéng de zhù yào shū rù tiáo jiàn shì yào yuè dú nà xiē chéng xù dài mǎ hé zhù shì, zhù yào zhēn duì zhè gè dān yuán, jí diào yòng tā hé bèi tā diào yòng de xiāng guān dài mǎ。 huà chū liú chéng tú shì fēi cháng yòu bāng zhù de, nǐ kě yǐ yòng shǒu gōng huò shǐ yòng mǒu zhǒng gōng jù。 kě yǐ zǔ zhì duì zhè gè gài yào guī gé shuō míng de zǒu dú (review), yǐ què bǎo duì zhè gè dān yuán de shuō míng méi yòu jī běn de cuò wù, yòu liǎo zhè zhǒng zuì xiǎo chéng dù de dài mǎ shēn céng shuō míng, jiù kě yǐ yòng tā lái shè jì dān yuán cè shì liǎo。
wǒ shì gè hěn bàng de chéng xù yuán, wǒ shì bù shì kě yǐ bù jìn xíng dān yuán cè shì ?
zài měi gè kāi fā zǔ zhì zhōng dū zhì shǎo yòu yī gè zhè yàng de kāi fā rén yuán, tā fēi cháng shàn cháng yú biān chéng, tā men kāi fā de ruǎn jiàn zǒng shì zài dì yī shí jiān jiù kě yǐ zhèng cháng yùn xíng, yīn cǐ bù xū yào jìn xíng cè shì。 nǐ shì fǒu jīng cháng tīng dào zhè yàng de jiè kǒu?
zài zhēn shí shì jiè lǐ, měi gè rén dū huì fàn cuò wù。 jí shǐ mǒu gè kāi fā rén yuán kě yǐ bào zhe zhè zhǒng tài dù zài hěn shǎo de yī xiē jiǎn dān de chéng xù zhōng yìng fù guò qù。 dàn zhēn zhèng de ruǎn jiàn xì tǒng shì fēi cháng fù zá de。 zhēn zhèng de ruǎn jiàn xì tǒng bù kě yǐ jì xī wàng yú méi yòu jìn xíng guǎng fàn de cè shì hé bug xiū gǎi guò chéng jiù kě yǐ zhèng cháng gōng zuò。
biān mǎ bù shì yī gè kě yǐ yī cì xìng tōng guò de guò chéng。 zài zhēn shí shì jiè zhōng, ruǎn jiàn chǎn pǐn bì xū jìn xíng wéi hù yǐ duì cāo zuò xū qiú de gǎi biàn zuò chū fǎn yìng, bìng qiě yào duì zuì chū de kāi fā gōng zuò yí liú xià lái de bug jìn xíng xiū gǎi。 nǐ xī wàng yǐ kào nà xiē yuán shǐ zuò zhě jìn xíng xiū gǎi má? zhè xiē zhì zào chū zhè xiē wèi jīng cè shì de yuán shǐ dài mǎ de zī shēn zhuān jiā men hái huì jì xù zài qí tā dì fāng zhì zào zhè yàng de dài mǎ。 zài kāi fā rén yuán zuò chū xiū gǎi hòu jìn xíng kě chóngfù de dān yuán cè shì kě yǐ bì miǎn chǎn shēng nà xiē lìng rén bù kuài de fù zuò yòng。
bù guǎn zěn yàng, jí chéng cè shì jiāng huì zhuā zhù suǒ yòu de bug
wǒ men yǐ jīng zài qián miàn de tǎo lùn zhōng cóng yī gè cè miàn duì zhè gè wèn tí jìn xíng liǎo bù fēn de chǎn shù。 zhè gè lùn diǎn bù chéng lì de yuán yīn zài yú guī mó yuè dà de dài mǎ jí chéng yì wèi zhe fù zá xìng jiù yuè gāo。 rú guǒ ruǎn jiàn de dān yuán méi yòu shì xiān jìn xíng cè shì, kāi fā rén yuán hěn kě néng huì huā fèi dà liàng de shí jiān jǐn jǐn shì wèile shǐ ruǎn jiàn néng gòu yùn xíng, ér rèn hé shí jì de cè shì fāng 'àn dōuwú fǎ zhí xíng。
yī dàn ruǎn jiàn kě yǐ yùn xíng liǎo, kāi fā rén yuán yòu yào miàn duì zhè yàng de wèn tí: zài kǎo lǜ ruǎn jiàn quán jú fù zá xìng de qián tí xià duì měi gè dān yuán jìn xíng quán miàn de cè shì。 zhè shì yī jiàn fēi cháng kùn nán de shì qíng, shèn zhì zài chuàng zào yī zhǒng dān yuán diào yòng de cè shì tiáo jiàn de shí hòu, yào quán miàn de kǎo lǜ dān yuán de bèi diào yòng shí de gè zhǒng rù kǒu cān shù。 zài ruǎn jiàn jí chéng jiē duàn, duì dān yuán gōng néng quán miàn cè shì de fù zá chéng dù yuǎn yuǎn de chāo guò dú lì jìn xíng de dān yuán cè shì guò chéng。
zuì hòu de jiēguǒ shì cè shì jiāng wú fǎ dá dào tā suǒ yīnggāi yòu de quán miàn xìng。 yī xiē quē xiàn jiāng bèi yí lòu, bìng qiě hěn duō bug jiāng bèi hū lüè guò qù。
ràng wǒ men lèi bǐ yī xià, jiǎ shè wǒ men yào qīng xǐ yī tái yǐ jīng wán quán zhuāng pèi hǎo de shí wù jiā gōng jī qì ! wú lùn nǐ pēn liǎo duō shǎo shuǐ hé qīng jié jì, yī xiē shí wù de xiǎo suì piàn hái shì huì nián zài jī qì de sǐ jiǎo wèi zhì, zhǐ yòu rèn qí fǔ làn bìng děng dài yǐ hòu zài xiǎng bàn fǎ。 dàn wǒ men huàn gè jiǎo dù xiǎng xiǎng, rú guǒ zhè tái jī qì shì chāi kāi de, zhè xiē sǐ jiǎo yě xǔ jiù bù cún zài huò zhě gèng róng yì jiē chù dào liǎo, bìng qiě měi yī bù fēn dōukě yǐ háo bù fèi lì de jìn xíng qīng xǐ。
tā de chéng běn xiàolǜ bù gāo
yī gè tè dìng de kāi fā zǔ zhì huò ruǎn jiàn yìng yòng xì tǒng de cè shì shuǐ píng qǔ jué yú duì nà xiē wèi fā xiàn de bug de qián zài hòu guǒ de zhòng shì chéng dù。 zhè zhǒng hòu guǒ de yán zhòng chéng dù kě yǐ cóng yī gè bug yǐn qǐ de xiǎo xiǎo de bù biàn dào fā shēng duō cì de sǐ jī de qíng kuàng。 zhè zhǒng hòu guǒ kě néng cháng cháng huì bèi ruǎn jiàn de kāi fā rén yuán suǒ hū shì ( dàn shì yòng hù kě bù huì zhè yàng ), zhè zhǒng qíng kuàng huì cháng qī de sǔn hài zhè xiē xiàng yòng hù tí jiāo dài yòu bug de ruǎn jiàn de kāi fā zǔ zhì de xìn yù, bìng qiě huì dǎo zhì duì wèi lái de shì chǎng chǎn shēng fù miàn de yǐng xiǎng。 xiāng fǎn dì, yī gè kě kào de ruǎn jiàn xì tǒng de liáng hǎo de shēng yù jiāng yòu zhù yú yī gè kāi fā zǔ zhì huò qǔ wèi lái de shì chǎng。
hěn duō yán jiū chéng guǒ biǎo míng, wú lùn shénme shí hòu zuò chū xiū gǎi dōuyào jìn xíng wán zhěng de huí guī cè shì, zài shēng mìng zhōu qī zhōng jìn zǎo dì duì ruǎn jiàn chǎn pǐn jìn xíng cè shì jiāng shǐ xiàolǜ hé zhì liàng dé dào zuì hǎo de bǎo zhèng。 bug fā xiàn de yuè wǎn, xiū gǎi tā suǒ xū de fèi yòng jiù yuè gāo, yīn cǐ cóng jīng jì jiǎo dù lái kàn, yīnggāi jìn kě néng zǎo de chá zhǎo hé xiū gǎi bug。 zài xiū gǎi fèi yòng biàn de guò gāo zhī qián, dān yuán cè shì shì yī gè zài zǎo qī zhuā zhù bug de jī huì。
xiāng bǐ hòu jiē duàn de cè shì, dān yuán cè shì de chuàng jiàn gèng jiǎn dān, wéi hù gèng róng yì, bìng qiě kě yǐ gèng fāng biàn de jìn xíng chóngfù。 cóng quán chéng de fèi yòng lái kǎo lǜ, xiāng bǐ qǐ nà xiē fù zá qiě kuàng rì chí jiǔ de jí chéng cè shì, huò shì bù wěn dìng de ruǎn jiàn xì tǒng lái shuō, dān yuán cè shì suǒ xū de fèi yòng shì hěn dī de。
yī xiē tú biǎo
zhè xiē tú biǎo zhāi zì << shí yòng ruǎn jiàn dù liàng >>(capersjones, mcgraw-hill1991), tā liè chū liǎo zhǔn bèi cè shì, zhí xíng cè shì, hé xiū gǎi quē xiàn suǒ huā fèi de shí jiān ( yǐ yī gè gōng néng diǎn wéi jī zhǔn ), zhè xiē shù jù xiǎn shì dān yuán cè shì de chéng běn xiàolǜ dà yuē shì jí chéng cè shì de liǎng bèi xì tǒng cè shì de sān bèi ( cān jiàn tiáo xíng tú )。
( shù yǔ yù cè shì (fieldtest) yì sī shì zài ruǎn jiàn tóu rù shǐ yòng yǐ hòu, zhēn duì mǒu gè lǐng yù suǒ zuò de suǒ yòu cè shì huó dòng )
zhè gè tú biǎo bìng bù biǎo shì kāi fā rén yuán bù yìng gāi jìn xíng hòu jiē duàn de cè shì huó dòng, zhè cì cè shì huó dòng réng rán shì bì xū de。 tā de zhēn zhèng yì sī shì jìn kě néng zǎo de pái chú jìn kě néng duō de bug kě yǐ jiǎn shǎo hòu jiē duàn cè shì de fèi yòng。
qí tā de yī xiē tú biǎo xiǎn shì gāo dá 50% de wéi hù gōng zuò liàng bèi huā zài nà xiē zǒng shì huì yòu de bug de xiū gǎi shàng miàn。 rú guǒ zhè xiē bug zài kāi fā jiē duàn bèi pái chú diào de huà, zhè xiē gōng zuò liàng jiù kě yǐ jié shěng xià lái。 dāng kǎo lǜ dào ruǎn jiàn wéi hù fèi yòng kě néng huì bǐ zuì chū de kāi fā fèi yòng gāo chū shù bèi de shí hòu, zhè zhǒng qián zài de duì 50% ruǎn jiàn wéi hù fèi yòng de jié shěng jiāng duì zhěng gè ruǎn jiàn shēng mìng zhōu qī fèi yòng chǎn shēng zhòng dà de yǐng xiǎng。
jié lùn
jīng yàn biǎo míng yī gè jìn zé de dān yuán cè shì fāng fǎ jiāng huì zài ruǎn jiàn kāi fā de mǒu gè jiē duàn fā xiàn hěn duō de bug, bìng qiě xiū gǎi tā men de chéng běn yě hěn dī。 zài ruǎn jiàn kāi fā de hòu qī jiē duàn, bug de fā xiàn bìng xiū gǎi jiāng huì biàn dé gèng jiā kùn nán, bìng yào xiāo hào dà liàng de shí jiān hé kāi fā fèi yòng。 wú lùn shénme shí hòu zuò chū xiū gǎi dōuyào jìn xíng wán zhěng de huí guī cè shì, zài shēng mìng zhōu qī zhōng jìn zǎo dì duì ruǎn jiàn chǎn pǐn jìn xíng cè shì jiāng shǐ xiàolǜ hé zhì liàng dé dào zuì hǎo de bǎo zhèng。 zài tí gōng liǎo jīng guò cè shì de dān yuán de qíng kuàng xià, xì tǒng jí chéng guò chéng jiāng huì dà dà dì jiǎn huà。 kāi fā rén yuán kě yǐ jiāng jīng lì jí zhōng zài dān yuán zhī jiān de jiāo hù zuò yòng hé quán jú de gōng néng shí xiàn shàng, ér bù shì xiàn rù chōng mǎn hěn duō bug de dān yuán zhī zhōng bù néng zì bá。
shǐ cè shì gōng zuò de xiào lì fā huī dào zuì dà huà de guān jiàn zài yú xuǎn zé zhèng què de cè shì cè lüè, zhè qí zhōng bāo hán liǎo wán quán de dān yuán cè shì de gài niàn, yǐ jí duì cè shì guò chéng de liáng hǎo de guǎn lǐ, hái yòu shìdàng dì shǐ yòng xiàng adatest hé cantata zhè yàng de gōng jù lái zhī chí cè shì guò chéng。 zhè xiē huó dòng kě yǐ chǎn shēng zhè yàng de jiēguǒ: zài huā fèi gèng dī de kāi fā fèi yòng de qíng kuàng xià dé dào gèng wěn dìng de ruǎn jiàn。 gèng jìn yī bù de hǎo chù shì jiǎn huà liǎo wéi hù guò chéng bìng jiàng dī liǎo shēng mìng zhōu qī de fèi yòng。 yòu xiào de dān yuán cè shì shì tuī xíng quán jú zhì liàng wén huà de yī bù fēn, ér zhè zhǒng zhì liàng wén huà jiāng huì wéi ruǎn jiàn kāi fā zhě dài lái wú xiàn de shāng jī。
dān yuán cè shì de yōu diǎn
1、 tā shì yī zhǒng yàn zhèng xíng wéi。
chéng xù zhōng de měi yī xiàng gōng néng dōushì cè shì lái yàn zhèng tā de zhèng què xìng。 tā wéi yǐ hòu de kāi fā tí gōng zhī huǎn。 jiù suàn shì kāi fā hòu qī, wǒ men yě kě yǐ qīng sōng de zēng jiā gōng néng huò gēnggǎi chéng xù jié gòu, ér bù yòng dān xīn zhè gè guò chéng zhōng huì pò huài zhòng yào de dōng xī。 ér qiě tā wéi dài mǎ de zhòng gòu tí gōng liǎo bǎo zhàng。 zhè yàng, wǒ men jiù kě yǐ gèng zì yóu de duì chéng xù jìn xíng gǎi jìn。
2、 tā shì yī zhǒng shè jì xíng wéi。
biān xiě dān yuán cè shì jiāng shǐ wǒ men cóng diào yòng zhě guān chá、 sī kǎo。 tè bié shì xiān xiě cè shì( test-first), pò shǐ wǒ men bǎ chéng xù shè jì chéng yì yú diào yòng hé kě cè shì de, jí pò shǐ wǒ men jiě chú ruǎn jiàn zhōng de 'ǒu hé。
3、 tā shì yī zhǒng biān xiě wén dàng de xíng wéi。
dān yuán cè shì shì yī zhǒng wú jià de wén dàng, tā shì zhǎn shì hán shù huò lèi rú hé shǐ yòng de zuì jiā wén dàng。 zhè fèn wén dàng shì kě biān yì、 kě yùn xíng de, bìng qiě tā bǎo chí zuì xīn, yǒng yuǎn yǔ dài mǎ tóng bù。
4、 tā jù yòu huí guī xìng。
zì dòng huà de dān yuán cè shì bì miǎn liǎo dài mǎ chū xiàn huí guī, biān xiě wán chéng zhī hòu, kě yǐ suí shí suí dì de kuài sù yùn xíng cè shì。
dān yuán cè shì de fàn chóu
rú guǒ yào gěi dān yuán cè shì dìng yì yī gè míng què de fàn chóu, zhǐ chū nǎ xiē gōng néng shì shǔ yú dān yuán cè shì , zhè sì hū hěn nán。 dàn xià miàn tǎo lùn de sì gè wèn tí, jī běn shàng kě yǐ shuō míng dān yuán cè shì de fàn chóu, dān yuán cè shì suǒ yào zuò de gōng zuò。
1、 tā de xíng wéi hé wǒ qī wàng de yī zhì má?
zhè shì dān yuán cè shì zuì gēn běn de mùdì, wǒ men jiù shì yòng dān yuán cè shì de dài mǎ lái zhèng míng tā suǒ zuò de jiù shì wǒ men suǒ qī wàng de。
2、 tā de xíng wéi yī zhí hé wǒ qī wàng de yī zhì má?
biān xiě dān yuán cè shì , rú guǒ zhǐ cè shì dài mǎ de yī tiáo zhèng què lù jìng, ràng tā zhèng què zǒu yī biàn, bìng bù suàn shì zhēn zhèng de wán chéng。 ruǎn jiàn kāi fā shì yī gè xiàng fù zá de gōng chéng, zài cè shì mǒu duàn dài mǎ de xíng wéi shì fǒu hé nǐ de qī wàng yī zhì shí, nǐ xū yào què rèn: zài rèn hé qíng kuàng xià, zhè duàn dài mǎ shì fǒu dū hé nǐ de qī wàng yī zhì; pì rú cān shù hěn kě yí、 yìng pán méi yòu shèng yú kōng jiān、 huǎn chōng qū yì chū、 wǎng luò diào xiàn de shí hòu。
3、 wǒ kě yǐ yǐ lài dān yuán cè shì má?
bù néng yǐ lài de dài mǎ shì méi yòu duō dà yòng chù de。 jì rán dān yuán cè shì shì yòng lái bǎo zhèng dài mǎ de zhèng què xìng, nà me dān yuán cè shì yě yī dìng yào zhí dé yǐ lài。
4、 dān yuán cè shì shuō míng wǒ de yì tú liǎo má?
dān yuán cè shì néng gòu bāng wǒ men chōng fēn liǎo jiě dài mǎ de yòng fǎ, cóng xiào guǒ shàng 'ér yán, dān yuán cè shì jiù xiàng shì néng zhí xíng de wén dàng, shuō míng liǎo zài nǐ yòng gè zhǒng tiáo jiàn diào yòng dài mǎ shí, nǐ suǒ néng qī wàng zhè duàn dài mǎ wán chéng de gōng néng。
bù xiě cè shì de jiè kǒu
dào zhè lǐ, wǒ men yǐ jīng liè jǔ liǎo shǐ yòng dān yuán cè shì de zhǒng zhǒng lǐ yóu。 yě xǔ, měi gè réndōu tóng yì, shì de, gāi zuò gèng duō de cè shì。 zhè zhǒng rén rén tóng yì de shì qíng hái duō zhe ní, shì de, gāi duō chī shū cài, gāi jiè yān, gāi duō xiū xī, gāi duō duàn liàn …… zhè bìng bù yì wèi zhe wǒ men zhōng de suǒ yòu rén dū huì zhè me qù zuò, bù shì má?
1、 biān xiě dān yuán cè shì tài huā shí jiān liǎo。
wǒ men zhī dào, zài kāi fā shí yuè zǎo fā xiàn bug, jiù néng jié shěng gèng duō de shí jiān, jiàng dī gèng duō de fēng xiǎn。
xià tú biǎo zhāi zì << shí yòng ruǎn jiàn dù liàng >>(capersjones, mcgraw-hill1991), tā liè chū liǎo zhǔn bèi cè shì, zhí xíng cè shì, hé xiū gǎi quē xiàn suǒ huā fèi de shí jiān ( yǐ yī gè gōng néng diǎn wéi jī zhǔn ), zhè xiē shù jù xiǎn shì dān yuán cè shì de chéng běn xiàolǜ dà yuē shì jí chéng cè shì de liǎng bèi, shì xì tǒng cè shì de sān bèi ( cān jiàn tiáo xíng tú )。
shù yǔ: yù cè shì (fieldtest) yì sī shì zài ruǎn jiàn tóu rù shǐ yòng yǐ hòu, zhēn duì mǒu gè lǐng yù suǒ zuò de suǒ yòu cè shì huó dòng。
rú guǒ nǐ réng rán rèn wéi zài biān xiě chǎn pǐn dài mǎ de shí hòu, hái shì méi yòu shí jiànbiān xiě cè shì dài mǎ, nà me qǐng xiān kǎo lǜ xià miàn zhè xiē wèn tí:
1)、 duì yú suǒ biān xiě de dài mǎ, nǐ zài tiáoshì shàng miàn huā liǎo duō shǎo shí jiān。
2)、 duì yú yǐ qián nǐ zì rèn wéi zhèng què de dài mǎ, ér shí jì shàng zhè xiē dài mǎ què cún zài zhòng dà de bug, nǐ huā liǎo duō shǎo shí jiān zài chóngxīn què rèn zhè xiē dài mǎ shàng miàn。
3)、 duì yú yī gè bié rén bào gào de bug, nǐ huā liǎo duō shǎo shí jiān cái zhǎo chū dǎo zhì zhè gè bug de yuán mǎ wèi zhì。
huí dá wán zhè xiē wèn tí, nǐ yī dìng bù zài yǐ “ tài huā shí jiān ” zuò wéi jù jué dān yuán cè shì de jiè kǒu。
2、 yùn xíng cè shì de shí jiān tài cháng liǎo。
hé shì de cè shì shì bù huì ràng zhè zhǒng qíng kuàng fā shēng de。 shí jì shàng, dà duō shù cè shì de zhí xíng dōushì fēi cháng kuài de, yīn cǐ nǐ zài jǐ miǎo zhī nèi jiù kě yǐ yùn xíng chéng qiān shàng wàn gè cè shì。 dàn shì yòu shí mǒu xiē cè shì huì huā fèi hěn cháng de shí jiān。 zhè shí, xū yào bǎ zhè xiē hào shí de cè shì hé qí tā cè shì fēn kāi。 tōng cháng kě yǐ měi tiān yùn xíng zhè zhǒng cè shì yī cì, huò zhě jǐ tiān yī cì。
3、 cè shì dài mǎ bìng bù shì wǒ de gōng zuò。
nǐ de gōng zuò jiù shì bǎo zhèng dài mǎ néng gòu zhèng què de wán chéng nǐ de xíng wéi, qià qià xiāng fǎn, cè shì dài mǎ zhèng shì nǐ bù kě quē shǎo de gōng zuò。
4、 wǒ bìng bù qīng chǔ dài mǎ de xíng wéi, suǒ yǐ yě jiù wú cóng cè shì。
rú guǒ nǐ shí zài bù qīng chǔ dài mǎ de xíng wéi, nà me gū jì xiàn zài bìng bù shì biān mǎ de shí hòu。 rú guǒ nǐ bìng bù zhī dào dài mǎ de xíng wéi, nà me nǐ yòu rú hé zhī dào nǐ biān xiě de dài mǎ shì zhèng què de ní ?
5、 dàn shì zhè xiē dài mǎ dōunéng gòu biān yì tōng guò。
wǒ men qián miàn yǐ jīng shuō guò, dài mǎ tōng guò biān yì zhǐ shì yàn zhèng tā de yǔ fǎ tōng guò。 dàn bìng bù néng bǎo zhèng tā de xíng wéi jiù yī dìng zhèng què。
6、 gōng sī qǐng wǒ lái shì wéi liǎo xiě dài mǎ, ér bù shì xiě cè shì。
gōng sī fù gěi nǐ xīn shuǐ shì wéi liǎo ràng nǐ biān xiě chǎn pǐn dài mǎ, ér dān yuán cè shì dà tǐ shàng shì yī gè gōng jù, shì yī gè hé biān ji qì、 kāi fā huán jìng、 biān yì qì děng chǔyú tóng yī wèi zhì de gōng jù。
7、 rú guǒ wǒ ràng cè shì yuán huò zhě qa( qualityassurance) rén yuán méi yòu gōng zuò, nà me wǒ huì jué dé hěn nèi jiù。
nǐ bìng bù xū yào dān xīn zhè xiē。 qǐng jì zhù, wǒ men zài cǐ zhǐ shì tán lùn dān yuán cè shì , ér tā zhǐ shì yī zhǒng zhēn duì yuán mǎ de、 dī céng cì de, wéi chéng xù yuán 'ér shè jì de cè shì。 zài zhěng gè xiàng mù zhōng, hái yòu qí tā de hěn duō cè shì xū yào zhè xiē rén lái wán chéng, rú: gōng néng cè shì、 yàn shōu cè shì、 xìng néng cè shì、 huán jìng cè shì、 yòu xiào xìng cè shì、 zhèng què xìng cè shì、 zhèng guī fēn xī děng děng。
8、 wǒ de gōng sī bìng bù huì ràng wǒ zài zhēn shí xì tǒng zhōng yùn xíng dān yuán cè shì 。
wǒ men suǒ tǎo lùn de zhǐ shì zhēn duì kāi fā zhě de dān yuán cè shì 。 yě jiù shì shuō, rú guǒ nǐ kě yǐ zài qí tā de huán jìng xià( lì rú zài zhèng shì de chǎn pǐn xì tǒng zhōng) yùn xíng zhè xiē cè shì de huà, nà me tā men jiù bù zài shì dān yuán cè shì , ér shì qí tā lèi xíng de cè shì liǎo。 shí jì shàng, nǐ kě yǐ zài nǐ de běn jī yùn xíng dān yuán cè shì , shǐ yòng nǐ zì jǐ de shù jù kù, huò zhě shǐ yòng mock duì xiàng。
cè shì dài mǎ biān xiě
duō shù jiǎng shù dān yuán cè shì de wén zhāng dōushì yǐ java wéi lì, běn wén yǐ c++ wéi lì, hòu bàn bù fēn suǒ jiè shào de dān yuán cè shì gōng jù yě zhǐ jiè shào c++ dān yuán cè shì gōng jù。 xià miàn de shì lì dài mǎ de kāi fā huán jìng shì vc6.0。
chǎn pǐn lèi:
classcmyclass
{
public:
intadd(inti,intj);
cmyclass();
virtual~cmyclass();
private:
intmage;// nián líng
cstringmphase;// nián líng jiē duàn, rú " shàonián ", " qīng nián "
};
jiàn lì duì yìng de cè shì lèi cmyclasstester, wèile jié yuē biān fú, zhǐ liè chū yuán wén jiàn de dài mǎ:
voidcmyclasstester::casebegin()
{
//pobj shì cmyclasstester lèi de chéng yuán biàn liàng, shì bèi cè shì lèi de duì xiàng de zhǐ zhēn,
// wéi qiú jiǎn dān, suǒ yòu de cè shì lèi dōukě yǐ yòng pobj mìng míng bèi cè shì duì xiàng de zhǐ zhēn。
pobj=newcmyclass();
}
voidcmyclasstester::caseend()
{
_delete_pobj;
}
cè shì lèi de hán shù casebegin() hé caseend() jiàn lì hé xiāo huǐ bèi cè shì duì xiàng, měi gè cè shì yòng lì de kāi tóu dōuyào diào yòng casebegin(), jié wěi dōuyào diào yòng caseend()。
jiē xià lái, wǒ men jiàn lì shì lì de chǎn pǐn hán shù:
intcmyclass::add(inti,intj)
{
returni+j;
}
hé duì yìng de cè shì hán shù:
voidcmyclasstester::add_int_int()
{
}
bǎ cān shù biǎo zuò wéi hán shù míng de yī bù fēn, zhè yàng dāng chū xiàn zhòng zài de bèi cè shì hán shù shí, cè shì hán shù bù huì chǎn shēng mìng míng chōng tū。 xià miàn tiān jiā cè shì yòng lì:
voidcmyclasstester::add_int_int()
{
// dì yī gè cè shì yòng lì
casebegin();{//1
inti=0;//2
intj=0;//3
intret=pobj->add(i,j);//4
assert(ret==0);//5
}caseend();//6
}
dì 1 hé dì 6 xíng jiàn lì hé xiāo huǐ bèi cè shì duì xiàng, suǒ jiā de {} shì wéi liǎo ràng měi gè cè shì yòng lì de dài mǎ yòu yī gè dú lì de yù, yǐ biàn duō gè cè shì yòng lì shǐ yòng xiāng tóng de biàn liàng míng。
dì 2 hé dì 3 xíng shì dìng yì shū rù shù jù, dì 4 xíng shì diào yòng bèi cè shì hán shù, zhè xiē róng yì lǐ jiě, bù zuò jìn yī bù jiě shì。 dì 5 xíng shì yù qī shū chū, tā de tè diǎn shì dāng shí jì shū chū yǔ yù qī shū chū bù tóng shí zì dòng bào cuò, assert shì vc de duàn yán hóng, yě kě yǐ shǐ yòng qí tā lèi sì gōng néng de hóng, shǐ yòng cè shì gōng jù jìn xíng dān yuán cè shì shí, kě yǐ shǐ yòng gāi gōng jù dìng yì de duàn yán hóng。
shì lì zhōng de gé shì xiǎn dé hěn bù jiǎn jié, 2、 3、 4、 5 xíng kě yǐ hé xiě wéi yīháng: assert(pobj->add(0,0)==0); dàn zhè zhǒng bù jiǎn jié de gé shì què shì lǎo nà jí lì tuī jiàn de, yīn wéi tā yī mù liǎo rán, yì yú jiàn lì duō gè cè shì yòng lì, bìng qiě jù yòu hěn hǎo de shì yìng xìng, tóng shí, yě shì jí jiā de dài mǎ wén dàng, zǒng zhī, lǎo nà jiàn yì: shū rù shù jù hé yù qī shū chū yào zì chéng yī kuài。
jiàn lì liǎo dì yī gè cè shì yòng lì hòu, yìng biān yì bìng yùn xíng cè shì, yǐ pái chú yǔ fǎ cuò wù, rán hòu, shǐ yòng kǎo bèi / xiū gǎi de bàn fǎ jiàn lì qí tā cè shì yòng lì。 yóu yú gè gè cè shì yòng lì zhī jiān de chā bié wǎng wǎng hěn xiǎo, tōng cháng zhǐ xū xiū gǎi yī liǎng gè shù jù, kǎo bèi / xiū gǎi shì jiàn lì duō gè cè shì yòng lì de zuì kuài jié bàn fǎ。
cè shì yòng lì
xià miàn shuō shuō cè shì yòng lì、 shū rù shù jù jí yù qī shū chū。 shū rù shù jù shì cè shì yòng lì de hé xīn, lǎo nà duì shū rù shù jù de dìng yì shì: bèi cè shì hán shù suǒ dú qǔ de wài bù shù jù jí zhè xiē shù jù de chū shǐ zhí。 wài bù shù jù shì duì yú bèi cè shì hán shù lái shuō de, shí jì shàng jiù shì chú liǎo jú bù biàn liàng yǐ wài de qí tā shù jù, lǎo nà bǎ zhè xiē shù jù fēn wéi jǐ lèi: cān shù、 chéng yuán biàn liàng、 quán jú biàn liàng、 io méi tǐ。 io méi tǐ shì zhǐ wén jiàn、 shù jù kù huò qí tā chǔ cún huò chuán shū shù jù de méi tǐ, lì rú, bèi cè shì hán shù yào cóng wén jiàn huò shù jù kù dú qǔ shù jù, nà me, wén jiàn huò shù jù kù zhōng de yuán shǐ shù jù yě shǔ yú shū rù shù jù。 yī gè hán shù wú lùn duō fù zá, dōuwú fēi shì duì zhè jǐ lèi shù jù de dú qǔ、 jì suàn hé xiě rù。 yù qī shū chū shì zhǐ: fǎn huí zhí jí bèi cè shì hán shù suǒ xiě rù de wài bù shù jù de jiēguǒ zhí。 fǎn huí zhí jiù bù yòng shuō liǎo, bèi cè shì hán shù jìn xíng liǎo xiě cāo zuò de cān shù ( shū chū cān shù )、 chéng yuán biàn liàng、 quán jú biàn liàng、 io méi tǐ, tā men de yù qī de jiēguǒ zhí dōushì yù qī shū chū。 yī gè cè shì yòng lì, jiù shì shè dìng shū rù shù jù, yùn xíng bèi cè shì hán shù, rán hòu pàn duàn shí jì shū chū shì fǒu fú hé yù qī。 xià miàn jǔ yī gè yǔ chéng yuán biàn liàng yòu guān de lì zǐ:
chǎn pǐn hán shù:
voidcmyclass::grow(intyears)
{
mage+=years;
if(mage<10)
mphase=" ér tóng ";
elseif(mage<20)
mphase=" shàonián ";
elseif(mage<45)
mphase=" qīng nián ";
elseif(mage<60)
mphase=" zhōng nián ";
else
mphase=" lǎo nián ";
}
cè shì hán shù zhōng de yī gè cè shì yòng lì:
casebegin();{
intyears=1;
pobj->mage=8;
pobj->grow(years);
assert(pobj->mage==9);
assert(pobj->mphase==" ér tóng ");
}caseend();
zài shū rù shù jù zhōng duì bèi cè shì lèi de chéng yuán biàn liàng mage jìn xíng fù zhí, zài yù qī shū chū zhōng duàn yán chéng yuán biàn liàng de zhí。 xiàn zài kě yǐ kàn dào lǎo nà suǒ tuī jiàn de gé shì de hǎo chù liǎo bā, zhè zhǒng gé shì kě yǐ shì yìng hěn fù zá de cè shì。 zài shū rù shù jù bù fēn hái kě yǐ diào yòng qí tā chéng yuán hán shù, lì rú: zhí xíng bèi cè shì hán shù qián kě néng xū yào dú qǔ wén jiàn zhōng de shù jù bǎo cún dào chéng yuán biàn liàng, huò xū yào lián jiē shù jù kù, lǎo nà bǎ zhè xiē cāo zuò chēng wéi chū shǐ huà cāo zuò。 lì rú, shàng lì zhōng assert(...) zhī qián kě yǐ jiā pobj->openfile();。 wèile fǎng wèn sī yòu chéng yuán, kě yǐ jiāng cè shì lèi dìng yì wéi chǎn pǐn lèi de yǒu yuán lèi。 lì rú, dìng yì yī gè hóng:
#defineunit_test(cls)friendclasscls##tester;
rán hòu zài chǎn pǐn lèi shēng míng zhōng jiā yīháng dài mǎ: unit_test(classname)。
xià miàn tán tán cè shì yòng lì shè jì。 qián miàn yǐ jīng shuō liǎo, cè shì yòng lì de hé xīn shì shū rù shù jù。 yù qī shū chū shì yǐ jù shū rù shù jù hé chéng xù gōng néng lái què dìng de, yě jiù shì shuō, duì yú mǒu yī chéng xù, shū rù shù jù què dìng liǎo, yù qī shū chū yě jiù kě yǐ què dìng liǎo, zhì yú shēng chéng / xiāo huǐ bèi cè shì duì xiàng hé yùn xíng cè shì de yǔ jù, shì suǒ yòu cè shì yòng lì dōudà tóng xiǎo yì de, yīn cǐ, wǒ men tǎo lùn cè shì yòng lì shí, zhǐ tǎo lùn shū rù shù jù。
qián miàn shuō guò, shū rù shù jù bāo kuò sì lèi: cān shù、 chéng yuán biàn liàng、 quán jú biàn liàng、 io méi tǐ, zhè sì lèi shù jù zhōng, zhǐ yào suǒ cè shì de chéng xù xū yào zhí xíng dú cāo zuò de, jiù yào shè dìng qí chū shǐ zhí, qí zhōng, qián liǎng lèi bǐ jiào cháng yòng, hòu liǎng lèi jiào shǎo yòng。 xiǎn rán, bǎ shū rù shù jù de suǒ yòu kě néng qǔ zhí dū jìn xíng cè shì, shì bù kě néng yě shì wú yì yì de, wǒ men yīnggāi yòng yī dìng de guī zé xuǎn zé yòu dài biǎo xìng de shù jù zuò wéi shū rù shù jù, zhù yào yòu sān zhǒng: zhèng cháng shū rù, biān jiè shū rù, fēi fǎ shū rù, měi zhǒng shū rù hái kě yǐ fēn lèi, yě jiù shì píng cháng shuō de děng jià lèi fǎ, měi lèi qǔ yī gè shù jù zuò wéi shū rù shù jù, rú guǒ cè shì tōng guò, kě yǐ kěn dìng tóng lèi de qí tā shū rù yě shì kě yǐ tōng guò de。 xià miàn jǔ lì shuō míng:
zhèng cháng shū rù
lì rú zì fú chuàn de trim hán shù, gōng néng shì jiāng zì fú chuàn qián hòu de kònggé qù chú, nà me zhèng cháng de shū rù kě yǐ yòu sì lèi: qián miàn yòu kōng gé; hòu miàn yòu kōng gé; qián hòu jūn yòu kònggé; qián hòu jūn wú kōng gé。
biān jiè shū rù
shàng lì zhōng kōng zì fú chuàn kě yǐ kàn zuò shì biān jiè shū rù。
zài rú yī gè biǎo shì nián líng de cān shù, tā de yòu xiào fàn wéi shì 0-100, nà me biān jiè shū rù yòu liǎng gè: 0 hé 100。
fēi fǎ shū rù
fēi fǎ shū rù shì zhèng cháng qǔ zhí fàn wéi yǐ wài de shù jù, huò shǐ dài mǎ bù néng wán chéng zhèng cháng gōng néng de shū rù, rú shàng lì zhōng biǎo shì nián líng de cān shù, xiǎo yú 0 huò dà yú 100 dōushì fēi fǎ shū rù, zài rú yī gè jìn xíng wén jiàn cāo zuò de hán shù, fēi fǎ shū rù yòu zhè me jǐ lèi: wén jiàn bù cún zài; mù lù bù cún zài; wén jiàn zhèng zài bèi qí tā chéng xù dǎ kāi; quán xiàn cuò wù。
rú guǒ hán shù shǐ yòng liǎo wài bù shù jù, zé zhèng cháng shū rù shì kěn dìng huì yòu de, ér biān jiè shū rù hé fēi fǎ shū rù bù shì suǒ yòu hán shù dōuyòu。 yī bān qíng kuàng xià, jí shǐ méi yòu shè jì wén dàng, kǎo lǜ yǐ shàng sān zhǒng shū rù yě kě yǐ zhǎo chū hán shù de jī běn gōng néng diǎn。 shí jì shàng, dān yuán cè shì yǔ dài mǎ biān xiě shì“ yī tǐ liǎng miàn” de guān xì, biān mǎ shí duì shàng shù sān zhǒng shū rù dōushì bì xū kǎo lǜ de, fǒu zé dài mǎ de jiàn zhuàng xìng jiù huì chéng wèn tí。
bái hé fù gài
shàng miàn suǒ shuō de cè shì shù jù dōushì zhēn duì chéng xù de gōng néng lái shè jì de, jiù shì suǒ wèi de hēi hé cè shì。 dān yuán cè shì hái xū yào cóng lìng yī gè jiǎo dù lái shè jì cè shì shù jù, jí zhēn duì chéng xù de luó ji jié gòu lái shè jì cè shì yòng lì, jiù shì suǒ wèi de bái hé cè shì。 zài lǎo nà kàn lái, rú guǒ hēi hé cè shì shì zú gòu chōng fēn de, nà me bái hé cè shì jiù méi yòu bì yào, kě xī“ zú gòu chōng fēn” zhǐ shì yī zhǒng lǐ xiǎng zhuàng tài, lì rú: zhēn de shì suǒ yòu gōng néng diǎn dū cè shì liǎo má? chéng xù de gōng néng diǎn shì rén wéi de dìng yì, cháng cháng shì bù quán miàn de; gè gè shū rù shù jù zhī jiān, yòu xiē zǔ hé kě néng huì chǎn shēng wèn tí, zěn yàng bǎo zhèng zhè xiē zǔ hé dū jīng guò liǎo cè shì? nán yú héng liàng cè shì de wán zhěng xìng shì hēi hé cè shì de zhù yào quē xiàn, ér bái hé cè shì qià qià jù yòu yì yú héng liàng cè shì wán zhěng xìng de yōu diǎn, liǎng zhě zhī jiān jù yòu jí hǎo de hù bǔ xìng, lì rú: wán chéng gōng néng cè shì hòu tǒng jì yǔ jù fù gài shuài, rú guǒ yǔ jù fù gài wèi wán chéng, hěn kě néng shì wèi fù gài de yǔ jù suǒ duì yìng de gōng néng diǎn wèi cè shì。
bái hé cè shì zhēn duì chéng xù de luó ji jié gòu shè jì cè shì yòng lì, yòng luó ji fù gài shuài lái héng liàng cè shì de wán zhěng xìng。 luó ji dān wèi zhù yào yòu: yǔ jù、 fēn zhī、 tiáo jiàn、 tiáo jiàn zhí、 tiáo jiàn zhí zǔ hé, lù jìng。 yǔ jù fù gài jiù shì fù gài suǒ yòu de yǔ jù, qí tā lèi tuī。 lìng wài hái yòu yī zhǒng pàn dìng tiáo jiàn fù gài, qí shí shì fēn zhī fù gài yǔ tiáo jiàn fù gài de zǔ hé, zài cǐ bù zuò tǎo lùn。 gēn tiáo jiàn yòu guān de fù gài jiù yòu sān zhǒng, jiě shì yī xià: tiáo jiàn fù gài shì zhǐ fù gài suǒ yòu de tiáo jiàn biǎo dá shì, jí suǒ yòu de tiáo jiàn biǎo dá shì dū zhì shǎo jì suàn yī cì, bù kǎo lǜ jì suàn jiēguǒ; tiáo jiàn zhí fù gài shì zhǐ fù gài tiáo jiàn de suǒ yòu kě néng qǔ zhí, jí měi gè tiáo jiàn de qǔ zhēn zhí hé qǔ jiǎ zhí dōuyào zhì shǎo jì suàn yī cì; tiáo jiàn zhí zǔ hé fù gài shì zhǐ fù gài suǒ yòu tiáo jiàn qǔ zhí de suǒ yòu kě néng zǔ hé。 lǎo nà zuò guò yī xiē cū qiǎn de yán jiū, fā xiàn yǔ tiáo jiàn zhí jiē yòu guān de cuò wù zhù yào shì luó ji cāo zuò fú cuò wù, lì rú: || xiě chéng &&, lòu liǎo xiě ! shénme de, cǎi yòng fēn zhī fù gài yǔ tiáo jiàn fù gài de zǔ hé, jī běn shàng kě yǐ fā xiàn zhè xiē cuò wù, lìng yī fāng miàn, tiáo jiàn zhí fù gài yǔ tiáo jiàn zhí zǔ hé fù gài wǎng wǎng xū yào dà liàng de cè shì yòng lì, yīn cǐ, zài lǎo nà kàn lái, tiáo jiàn zhí fù gài hé tiáo jiàn zhí zǔ hé fù gài de xiào fèi bǐ piān dī。 lǎo nà rèn wéi xiào fèi bǐ jiào gāo qiě wán zhěng xìng yě zú gòu de cè shì yào qiú shì zhè yàng de: wán chéng gōng néng cè shì, wán chéng yǔ jù fù gài、 tiáo jiàn fù gài、 fēn zhī fù gài、 lù jìng fù gài。 zuò guò dān yuán cè shì de péng yǒu kǒng pà huì duì lǎo nà tí chū de cè shì yào qiú jǐyǔ yī gè zì de píng jià: yùn! huò zhě liǎng gè zì de píng jià: kuáng yùn! yīn wéi zhè sì hū shì bù kě néng de yào qiú, yào dá dào zhè zhǒng cè shì wán zhěng xìng, qí cè shì chéng běn shì bù kě xiǎng xiàng de, bù guò, chū jiā rén bù dǎ guàng yǔ, lǎo nà zhī suǒ yǐ tí chū zhè zhǒng cè shì yào qiú, shì yīn wéi lì yòng yī xiē gōng jù, kě yǐ zài jiào dī de chéng běn xià dá dào zhè zhǒng cè shì yào qiú, hòu miàn jiāng huì zuò jìn yī bù jiè shào。
guān yú bái hé cè shì yòng lì de shè jì, chéng xù cè shì lǐng yù de shū jí yī bān dōuyòu jiǎng shù, pǔ tōng fāng fǎ shì huà chū chéng xù de luó ji jié gòu tú rú chéng xù liú chéng tú huò kòng zhì liú tú, gēn jù luó ji jié gòu tú shè jì cè shì yòng lì, zhè xiē shì chún cuì de bái hé cè shì, bù shì lǎo nà xiǎng tuī jiàn de fāng shì。 lǎo nà suǒ tuī jiàn de fāng fǎ shì: xiān wán chéng hēi hé cè shì, rán hòu tǒng jì bái hé fù gài shuài, zhēn duì wèi fù gài de luó ji dān wèi shè jì cè shì yòng lì fù gài tā, lì rú, xiān jiǎn chá shì fǒu yòu yǔ jù wèi fù gài, yòu de huà shè jì cè shì yòng lì fù gài tā, rán hòu yòng tóng yàng fāng fǎ wán chéng tiáo jiàn fù gài、 fēn zhī fù gài hé lù jìng fù gài, zhè yàng de huà, jì jiǎn yàn liǎo hēi hé cè shì de wán zhěng xìng, yòu bì miǎn liǎo chóngfù de gōng zuò, yòng jiào shǎo de shí jiān chéng běn dá dào fēi cháng gāo de cè shì wán zhěng xìng。 bù guò, zhè xiē gōng zuò kě bù shì shǒu gōng néng wán chéng de, bì xū jiè zhù yú gōng jù, hòu miàn huì jiè shào kě yǐ wán chéng zhè xiē gōng zuò de cè shì gōng jù。
dān yuán cè shì gōng jù
xiàn zài kāi shǐ jiè shào dān yuán cè shì gōng jù, lǎo nà zhǐ jiè shào sān zhǒng, dōushì yòng yú c++ yǔ yán de。
shǒu xiān shì cppunit, zhè shì c++ dān yuán cè shì gōng jù de bí zǔ, miǎn fèi de kāi yuán de dān yuán cè shì kuàng jià。 yóu yú yǐ yòu yī zhòng gāo rén xiě liǎo bù shǎo guān yú cppunit de hěn hǎo de wén zhāng, lǎo nà jiù bù xiàn chǒu liǎo, xiǎng liǎo jiě cppunit de péng yǒu, jiàn yì dú yī xià cpluser suǒ zuò de《 cppunit cè shì kuàng jià rù mén》, wǎng zhǐ shì: http://blog.csdn.net/cpluser/archive/2004/09/21/111522.aspx。 gāi wén yě tí gōng liǎo cppunit de xià zài dì zhǐ。
rán hòu jiè shào c++test, zhè shì parasoft gōng sī de chǎn pǐn。 [ c++test shì yī gè gōng néng qiáng dà de zì dòng huà c/c++ dān yuán jí cè shì gōng jù, kě yǐ zì dòng cè shì rèn hé c/c++ hán shù、 lèi, zì dòng shēng chéng cè shì yòng lì、 cè shì qū dòng hán shù huò zhuāng hán shù, zài zì dòng huà de huán jìng xià jí qí róng yì kuài sù de jiāng dān yuán jí de cè shì fù gài shuài dá dào 100% ]。[] nèi de wén zì yǐn zì http://www.superst.com.cn/softwares_testing_c_cpptest, zhè shì huá táng gōng sī de wǎng yè。 lǎo nà xiǎng xiě xiē jiè shào c++test de wén zì, dàn fā xiàn wú fǎ chāo yuè huá táng gōng sī de wǎng yè shàng de jiè shào, suǒ yǐ yě jiù shěng diǎn shì liǎo, xiǎng liǎo jiě c++test de péng yǒu, jiàn yì fǎng wèn gāi gōng sī de wǎng zhàn。 huá táng gōng sī dài lǐ c++test, xiǎng yào gòu mǎi huò suǒ qǔ bào jià、 shì yòng bǎn dōukě yǐ zhǎo tā men。
zuì hòu jiè shào visualunit, jiǎn chēng vu, zhè shì guó chǎn de dān yuán cè shì gōng jù, jù shuō shēn qǐng liǎo duō xiàng zhuān lì, yōng yòu yī pī chuàng xīn de jì shù, bù guò lǎo nà zhǐ guān xīn shì bù shì yòu yòng hé hǎo yòng。[ zì dòng shēng chéng cè shì dài mǎ kuài sù jiàn lì gōng néng cè shì yòng lì chéng xù xíng wéi yī mù liǎo rán jí gāo de cè shì wán zhěng xìng gāo xiào wán chéng bái hé fù gài kuài sù pái cuò gāo xiào tiáoshì xiáng jìn de cè shì bào gào]。[] nèi de wén zì shì vu kāi fā shāng de wǎng yè shàng zhāi lù de, wǎng zhǐ shì: http://www.unitware.cn。 qián miàn suǒ shù cè shì yào qiú: wán chéng gōng néng cè shì, wán chéng yǔ jù fù gài、 tiáo jiàn fù gài、 fēn zhī fù gài、 lù jìng fù gài, yòng vu kě yǐ qīng sōng shí xiàn, hái yòu yī diǎn zhí dé yī tí: shǐ yòng vu hái néng tí gāo biān mǎ de xiàolǜ, zǒng tǐ lái shuō, zài wán chéng dān yuán cè shì de tóng shí, biān mǎ tiáoshì de shí jiān hái néng dà fú dù suō duǎn。 suàn liǎo, bù xiǎng zài jiǎng liǎo, lǎo nà xiǎn bǎi lǐ lùn、 jiè shào jīng yàn hái shì yòu xīng qù de, yīn wéi kě yǐ mǎn zú lǎo nà hàowéirénshī de xū róng xīn, dàn jiè shào gōng jù jiù jué dé suǒ rán wú wèi liǎo, bì jìng gōng jù hǎo bù hǎo yòng, hé bù hé yòng, yào shì guò cái zhī dào, hái shì zì jǐ qù kāi fā shāng de wǎng zhàn kàn bā, kě yǐ xià zài yǎn shì bǎn, hái yòu yǎn shì kè jiàn。 |