摘è¦åQ?/STRONG>å•å…ƒ‹¹‹è¯•是èÊY件测试的基础åQŒæœ¬æ–‡è¯¦¾l†çš„è®ø™¿°äº†å•元测试的两个æ¥éª¤äººå·¥é™æ€æ£€æŸ¥æ³•ä¸ŽåŠ¨æ€æ‰§è¡Œè·Ÿítªæ³•åQŒæ‰€éœ€æ‰§è¡Œçš„工作项目åŠç›¸å…³çš„ç–略和æ–ÒŽ(gu¨©)³•。通过对这两个æ¥éª¤çš„æ˜qîC½œè€…将多年的å•元测试ç»éªŒåŠ‹¹‹è¯•ç†è®ºæ³¨å…¥äºŽå…¨æ–‡ã€?BR> 关键è¯?å•å…ƒ‹¹‹è¯•ã€äh工检查ã€ç™½ç›’æµ‹è¯•ã€æµ‹è¯•用例ã€è·Ÿítªè°ƒè¯?BR> 1 概述
å•å…ƒ‹¹‹è¯•是针对èÊY件设计的最ž®å•ä½â€”â€”ç¨‹åºæ¨¡å—,˜q›è¡Œæ£ç¡®æ€§æ£€éªŒçš„‹¹‹è¯•工作。其目的在于å‘现æ¯ä¸ª½E‹åºæ¨¡å—内部å¯èƒ½å˜åœ¨çš„差错ã€?BR> å•å…ƒ‹¹‹è¯•也是½E‹åºå‘˜çš„一™å¹åŸºæœ¬èŒè´£ï¼Œ½E‹åºå‘˜å¿…™åÕd¯¹è‡ªå·±æ‰€¾~–写的代ç ä¿æŒè®¤çœŸè´Ÿè´£çš„æ€åº¦åQŒè¿™æ˜¯ä¹Ÿ½E‹åºå‘˜çš„基本èŒä¸šç´ è´¨ä¹‹ä¸€ã€‚åŒæ—¶å•元测试能力也是程åºå‘˜çš„一™å¹åŸºæœ¬èƒ½åŠ›ï¼Œèƒ½åŠ›çš„é«˜ä½Žç›´æŽ¥åª„å“到½E‹åºå‘˜çš„工作效率与èÊY件的质é‡ã€?BR> 在编ç çš„˜q‡ç¨‹ä¸ä½œå•å…ƒ‹¹‹è¯•åQŒå…¶èŠÞp´¹æ˜¯æœ€ž®çš„åQŒè€Œå›žæŠ¥å´ç‰¹åˆ«ä¼˜åŽšçš„ã€‚åœ¨¾~–ç 的过½E‹ä¸è€ƒè™‘‹¹‹è¯•问题åQŒå¾—到的ž®†æ˜¯æ›´ä¼˜è´¨çš„代ç åQŒå› 为在˜q™æ—¶æ‚(zh¨¨n)¨å¯¹ä»£ç 应该åšäº›ä»€ä¹ˆäº†è§£å¾—最清楚。如果丘q™æ ·åšï¼Œè€Œæ˜¯ä¸€ç›´ç‰åˆ°æŸä¸ªæ¨¡å—崩溃了åQŒåˆ°é‚£æ—¶æ‚(zh¨¨n)¨å¯èƒ½å·²¾l忘è®îCº†ä»£ç æ˜¯æ€Žæ ·å·¥ä½œçš„ã€‚å³ä½¿æ˜¯åœ¨å¼ºå¤§çš„工作压力下,æ‚(zh¨¨n)¨ä¹Ÿ˜q˜å¿…™å»é‡æ–°æŠŠå®ƒå¼„清楚åQŒè¿™åˆè¦èŠÞp´¹è®¸å¤šæ—‰™—´ã€‚进一æ¥è¯´åQŒè¿™æ ·åšå‡ºçš„æ›´æ£å¾€å¾€ä¸ä¼šé‚£ä¹ˆå½Õdº•åQŒå¯èƒ½æ›´è„†å¼±åQŒå› 为æ?zh¨¨n)¨å”¤å›žçš„ç†è§£å¯èƒ½ä¸é‚£ä¹ˆå®Œå…¨ã€?BR> é€šå¸¸åˆæ ¼çš„代ç 应该具备以下性质åQ𿣼‹®æ€§ã€æ¸…晰性ã€è§„范性ã€ä¸€è‡´æ€§ã€é«˜æ•ˆæ€§ç‰åQˆæ ¹æ®ä¼˜å…ˆçñ”别排åºï¼‰ã€?BR> 1. æ£ç¡®æ€§æ˜¯æŒ‡ä»£ç 逻辑必须æ£ç¡®åQŒèƒ½å¤Ÿå®žçŽ°é¢„æœŸçš„åŠŸèƒ½ã€?BR> 2. 清晰性是指代ç å¿…™åÈ®€æ˜Žã€æ˜“懂,注释准确没有æ§ä¹‰ã€?BR> 3. 规范性是指代ç å¿…™åȬ¦åˆä¼ä¸šæˆ–部门所定义的共åŒè§„范包括命å规则,代ç é£Žæ ¼½{‰ç‰ã€?BR> 4. 一致性是指代ç å¿…™åÕdœ¨å‘½å上(如:相åŒåŠŸèƒ½çš„å˜é‡å°½é‡é‡‡ç”¨ç›¸åŒçš„æ ‡ç¤º½W¦ï¼‰ã€é£Žæ ég¸Šéƒ½ä¿æŒç»Ÿä¸€ã€?BR> 5. 高效性是指代ç ä¸ä½†è¦æ»¡èƒö以上性质åQŒè€Œä¸”需è¦å°½å¯èƒ½é™ä½Žä»£ç 的执行时间ã€?BR> 2 å•å…ƒ‹¹‹è¯•æ¥éª¤
在代ç 编写完æˆåŽçš„å•元测试工作主è¦åˆ†ä¸ÞZ¸¤ä¸ªæ¥éª¤äh工陿€æ£€æŸ¥å’ŒåŠ¨æ€æ‰§è¡Œè·Ÿítªã€?BR> äººå·¥é™æ€æ£€æŸ¥æ˜¯‹¹‹è¯•的第一æ¥ï¼Œ˜q™ä¸ªé˜¶æ®µå·¥ä½œä¸»è¦æ˜¯ä¿è¯ä»£ç 算法的逻辑æ£ç¡®æ€§ï¼ˆž®½é‡é€šè¿‡äººå·¥‹‚€æŸ¥å‘çŽîC»£ç 的逻辑错误åQ‰ã€æ¸…晰性ã€è§„范性ã€ä¸€è‡´æ€§ã€ç®—æ³•é«˜æ•ˆæ€§ã€‚åÆˆž®½å¯èƒ½çš„å‘现½E‹åºä¸æ²¡æœ‰å‘现的错误ã€?BR> ½W¬äºŒæ¥æ˜¯é€šè¿‡è®¾è®¡‹¹‹è¯•用例åQŒæ‰§è¡Œå¾…‹¹‹ç¨‹åºæ¥è·Ÿè¸ªæ¯”较实际¾l“果与预期结果æ¥å‘现错误。ç»éªŒè¡¨æ˜Žï¼Œä½¿ç”¨äººå·¥é™æ€æ£€æŸ¥æ³•能够有效的å‘çŽ?0%åˆ?0%的逻辑设计和编ç 错误。但是代ç ä¸ä»ä¼šæœ‰å¤§é‡çš„éšæ€§é”™è¯¯æ— 法通过视觉‹‚€æŸ¥å‘玎ͼŒå¿…é¡»é€šè¿‡è·Ÿè¸ªè°ƒè¯•æ³•ç»†å¿ƒåˆ†æžæ‰èƒ½å¤Ÿæ•æ‰åˆ°ã€‚所以,动æ€è·Ÿítªè°ƒè¯•方法也æˆäº†å•å…ƒ‹¹‹è¯•çš„é‡ç‚¹ä¸Žéš„¡‚¹ã€?BR> 3 人工‹‚€æŸ?/STRONG>
通常在äh工检查阶ŒDµå¿…™åÀL‰§è¡Œä»¥ä¸‹é¡¹ç›®çš„‹zÕdЍåQ?BR> ½W¬ä¸€ã€?‹‚€æŸ¥ç®—法的逻辑æ£ç¡®æ€§ï¼›¼‹®å®šæ‰€¾~–写的代ç ç®—æ³•ã€æ•°æ®ç»“构定义(如:队列ã€å †æ ˆç‰åQ‰æ˜¯å¦å®žçŽîCº†æ¨¡å—æˆ–æ–¹æ³•æ‰€è¦æ±‚的功能ã€?BR> ½W¬äºŒã€?æ¨¡å—æŽ¥å£çš„æ£¼‹®æ€§æ£€æŸ¥ï¼›¼‹®å®šå½¢å¼å‚æ•°ä¸ªæ•°ã€æ•°æ®ç±»åž‹ã€é¡ºåºæ˜¯å¦æ£¼‹®ï¼›¼‹®å®š˜q”回值类型劘q”回值的æ£ç¡®æ€§ã€?BR> ½W¬ä¸‰ã€?è¾“å…¥å‚æ•°æœ‰æ²¡æœ‰ä½œæ£ç¡®æ€§æ£€æŸ¥ï¼›å¦‚果没有作棼‹®æ€§æ£€æŸ¥ï¼Œ¼‹®å®šè¯¥å‚数是å¦çš„¼‹®æ— 需åšå‚数棼‹®æ€§æ£€æŸ¥ï¼Œå¦åˆ™è¯äh·»åŠ ä¸Šå‚æ•°çš„æ£¼‹®æ€§æ£€æŸ¥ã€‚ç»éªŒè¡¨æ˜Žï¼Œ¾~ºå°‘傿•°æ£ç¡®æ€§æ£€æŸ¥çš„ä»£ç æ˜¯é€ æˆè½¯äšg¾pÈ»Ÿä¸ç¨³å®šçš„主è¦åŽŸå› ä¹‹ä¸€ã€?BR> ½W¬å››ã€?调用其他æ–ÒŽ(gu¨©)³•接å£çš„æ£¼‹®æ€§ï¼›‹‚€æŸ¥å®žå‚类型棼‹®ä¸Žå¦ã€ä¼ å…¥çš„å‚æ•°å€¼æ£¼‹®ä¸Žå¦ã€ä¸ªæ•°æ£¼‹®ä¸Žå¦ï¼Œç‰¹åˆ«æ˜¯å…·æœ‰å¤šæ€çš„æ–ÒŽ(gu¨©)³•。返回值棼‹®ä¸Žå¦ï¼Œæœ‰æ²¡æœ‰è¯¯è§£è¿”å›žå€¼æ‰€è¡¨ç¤ºçš„æ„æ€ã€‚最好对æ¯ä¸ªè¢«è°ƒç”¨çš„æ–ÒŽ(gu¨©)³•的返回值用显湿代ç 作棼‹®æ€§æ£€æŸ¥ï¼Œå¦‚果被调用方法出现异常或错误½E‹åºåº”该¾l™äºˆå馈åQŒåƈæ·ÕdŠ é€‚å½“çš„å‡ºé”™å¤„ç†ä»£ç ã€?BR> ½W¬äº”ã€?出错处ç†åQ›æ¨¡å—代ç è¦æ±‚能预è§å‡ºé”™çš„æ¡ä»Óž¼Œòq¶è®¾¾|®é€‚当的出错处ç†ï¼Œä»¥ä¾¿åœ¨ä¸€æ—¦ç¨‹åºå‡ºé”™æ—¶åQŒèƒ½å¯¹å‡ºé”™ç¨‹åºé‡åšå®‰æŽ’,ä¿è¯å…‰™€»è¾‘的棼‹®æ€§ï¼Œ˜q™ç§å‡ºé”™å¤„ç†åº”当是模å—功能的一部分。若出现下列情况之一åQŒåˆ™è¡¨æ˜Žæ¨¡å—的错误处ç†åŠŸèƒ½åŒ…å«æœ‰é”™è¯¯æˆ–ç¼ºé™øP¼šå‡ºé”™çš„æ˜q°éš¾ä»¥ç†è§£ï¼›å‡ºé”™çš„æ˜qîC¸‘³ä»¥å¯šw”™è¯¯å®šä½ï¼Œä¸èƒöä»¥ç¡®å®šå‡ºé”™çš„åŽŸå› åQ›æ˜¾½Cºçš„错误信æ¯ä¸Žå®žé™…çš„é”™è¯¯åŽŸå› ä¸ç¬¦åQ›å¯¹é”™è¯¯æ¡äšg的处ç†ä¸æ£ç¡®åQ›åœ¨å¯šw”™è¯¯è¿›è¡Œå¤„ç†ä¹‹å‰ï¼Œé”™è¯¯æ¡äšgå·²ç»å¼•è“v¾pÈ»Ÿçš„干预ç‰ã€?BR> ½W¬å…ã€?ä¿è¯è¡¨è¾¾å¼ã€SQLè¯å¥çš„æ£¼‹®æ€§ï¼›‹‚€æŸ¥æ‰€¾~–写的SQLè¯å¥çš„è¯æ³•ã€é€»è¾‘的棼‹®æ€§ã€‚对表达å¼åº”该ä¿è¯ä¸å«äºŒä¹‰æ€§ï¼Œå¯¹äºŽå®ÒŽ(gu¨©)˜“产生æ§ä¹‰çš„è¡¨è¾‘Ö¼æˆ–è¿½Ž—ç¬¦ä¼˜å…ˆ¾U§ï¼ˆå¦‚:ã€?ã€?ã€?》ã€?&&ã€||ã€?+ã€?--½{‰ï¼‰å¯ä»¥é‡‡ç”¨æ‰©å·â€œï¼ˆåQ‰â€è¿½Ž—符é¿å…二义性,˜q™æ ·ä¸€æ–šw¢èƒ½å¤Ÿä¿è¯ä»£ç 的棼‹®å¯é ï¼ŒåŒæ—¶ä¹Ÿèƒ½å¤Ÿæé«˜ä»£ç çš„å¯è¯»æ€§ã€?BR> ½W¬ä¸ƒã€?‹‚€æŸ¥å¸¸é‡æˆ–全局å˜é‡ä½¿ç”¨çš„æ£¼‹®æ€§ï¼›¼‹®å®šæ‰€ä½¿ç”¨çš„叏釿ˆ–全局å˜é‡çš„å–值和数倹{€æ•°æ®ç±»åž‹ï¼›ä¿è¯å¸”R‡æ¯æ¬¡å¼•用åŒå®ƒçš„å–倹{€æ•°å€¼å’Œ¾cÕdž‹çš„一致性ã€?BR> ½W¬å…«ã€?表示½W¦å®šä¹‰çš„规范一致性;ä¿è¯å˜é‡å‘½å能够è§å知æ„åQŒåƈ且简‹z但ä¸å®œ˜q‡é•¿æˆ–过çŸã€è§„范ã€å®¹æ˜“è®°å¿†ã€æœ€å¥½èƒ½å¤Ÿæ‹¼è¯…R€‚åÆˆž®½é‡ä¿è¯ç”¨ç›¸åŒçš„表示½W¦ä»£è¡¨ç›¸åŒåŠŸèƒ½ï¼Œä¸è¦ž®†ä¸åŒçš„功能用相åŒçš„表示½W¦è¡¨½Cºï¼›æ›´ä¸è¦ç”¨ç›¸åŒçš„表½Cºç¬¦ä»£è¡¨ä¸åŒçš„功能æ„义ã€?BR> ½W¬ä¹(ji¨¦)ã€?½E‹åºé£Žæ ¼çš„一致性ã€è§„范性;代ç 必须能ä¿è¯ç¬¦åˆä¼ä¸šè§„范,ä¿è¯æ‰€æœ‰æˆå‘˜çš„代ç é£Žæ ¼ä¸€è‡´ã€è§„范ã€å·¥æ•´ã€‚例如对数组åšåó@环,ä¸è¦ä¸€ä¼šå„¿é‡‡ç”¨ä¸‹æ ‡å˜é‡ä»Žä¸‹åˆîC¸Šçš„æ–¹å¼ï¼ˆå¦?for(I=0;I++åQ›I<10)åQ‰ï¼Œä¸€ä¼šå„¿åˆé‡‡ç”¨ä»Žä¸Šåˆ°ä¸‹çš„æ–¹å¼(å¦?for(I=10;I--;I>0))åQ›åº”该尽é‡é‡‡ç”¨ç»Ÿä¸€çš„æ–¹å¼ï¼Œæˆ–则¾lŸä¸€ä»Žä¸‹åˆîC¸ŠåQŒæˆ–则统一从上åˆîC¸‹ã€‚å¾è®®é‡‡ç”¨for循环和While循环åQŒä¸è¦é‡‡ç”¨do{}while循环½{‰ã€?BR> ½W¬åã€?‹‚€æŸ¥ç¨‹åºä¸ä½¿ç”¨åˆ°çš„¼œžç§˜æ•°å—是å¦é‡‡ç”¨äº†è¡¨½Cºç¬¦å®šä¹‰ã€‚神¿U˜çš„æ•°å—包括å„ç§å¸¸æ•°ã€æ•°¾l„的大å°ã€å—½W¦ä½¾|®ã€å˜æ¢å› å以åŠç¨‹åºä¸å‡ºçŽ°çš„å…¶ä»–ä»¥æ–‡å—å½¢å¼å†™å‡ºçš„æ•°å€¹{€‚在½E‹åºæºä»£ç 里åQŒä¸€ä¸ªå…·æœ‰åŽŸæœ¬åÅžå¼çš„æ•°å¯¹å…¶æœ¬íw«çš„é‡è¦æ€§æˆ–作用没æä¾›ä“Q何指½Cºæ€§ä¿¡æ¯ï¼Œå®ƒä»¬ä¹Ÿå¯¼è‡´ç¨‹åºéš¾ä»¥ç†è§£å’Œä¿®æ”¹ã€‚对于这¾cÈ¥ž¿U˜æ•°å—å¿…™å»é‡‡ç”¨ç›¸åº”çš„æ ‡é‡æ¥è¡¨½Cºï¼›å¦‚果该数å—在整个¾pÈ»Ÿä¸éƒ½å¯èƒ½ä½¿ç”¨åˆ°åŠ¡å¿…å°†å®ƒå®šä¹‰äØ“å…¨å±€å¸”R‡åQ›å¦‚果该¼œžç§˜æ•°å—在一个类ä¸ä‹É用寞®†å…¶å®šä¹‰ä¸ºç±»çš„属性(AttributeåQ?如果该神¿U˜æ•°å—åªåœ¨ä¸€ä¸ªæ–¹æ³•ä¸å‡ºçŽ°åŠ¡å¿…ž®†å…¶å®šä¹‰ä¸ºå±€éƒ¨å˜é‡æˆ–帔R‡ã€?BR> ½W¬å一ã€?‹‚€æŸ¥ä»£ç 是å¦å¯ä»¥ä¼˜åŒ–ã€ç®—æ³•æ•ˆçŽ‡æ˜¯å¦æœ€é«˜ã€‚如åQšSQLè¯å¥æ˜¯å¦å¯ä»¥ä¼˜åŒ–åQŒæ˜¯å¦å¯ä»¥ç”¨1æ¡SQLè¯å¥ä»£æ›¿½E‹åºä¸çš„多æ¡SQLè¯å¥çš„功能,循环是å¦å¿…è¦åQŒåó@环ä¸çš„è¯å¥æ˜¯å¦å¯ä»¥æŠ½å‡ºåˆ°å¾ªçޝ之外½{‰ã€?BR> ½W¬å二ã€?‹‚€æŸ¥æ?zh¨¨n)¨çš„ç¨‹åºæ˜¯å¦æ¸…晰简‹z容易ç†è§£ã€‚注æ„:冗长的程åºåƈä¸ä¸€å®šä¸æ˜¯æ¸…æ™°çš„ã€?BR> ½W¬å三ã€?‹‚€æŸ¥æ–¹æ³•内部注释是å¦å®Œæ•ß_¼›æ˜¯å¦æ¸…æ™°½Ž€‹zï¼›æ˜¯å¦æ£ç¡®çš„åæ˜ 了代ç 的功能,错误的注释比没有注释更糟åQ›æ˜¯å¦åšäº†å¤šä½™çš„æ³¨é‡ŠåQ›å¯¹äºŽç®€å•çš„ä¸€çœ‹å°±æ‡‚çš„ä»£ç æ²¡æœ‰å¿…è¦æ³¨é‡Šã€?BR> ½W¬åå››ã€?‹‚€æŸ¥æ³¨é‡Šæ–‡æ¡£æ˜¯å¦å®Œæ•ß_¼›å¯¹åŒ…ã€ç±»ã€å±žæ€§ã€æ–¹æ³•功能ã€å‚æ•°ã€è¿”å›žå€¼çš„æ³¨é‡Šæ˜¯å¦æ£ç¡®ä¸”容易ç†è§£ï¼›æ˜¯å¦ä¼šè½äº†æˆ–多了æŸä¸ªå‚æ•°çš„æ³¨é‡Šï¼Œå‚æ•°¾cÕdž‹æ˜¯å¦æ£ç¡®åQŒå‚æ•°çš„é™å®šå€¼æ˜¯å¦æ£¼‹®ã€‚特别是对于形å¼å‚数与返回å€ég¸å…³äºŽ¼œžç§˜æ•°å€¼çš„æ³¨é‡ŠåQŒå¦‚åQšç±»åž‹å‚æ•?应该指出 1.代表什么,2.代表什么,3.代表什么ç‰ã€‚对于返回结果集(Result Set)的注释,应该注释¾l“果集ä¸åŒ…å«é‚£äº›å—段åŠå—ŒD늱»åž‹ã€å—ŒDµé¡ºåºç‰ã€?BR> 4 åŠ¨æ€æ‰§è¡Œè·Ÿít?/STRONG>
åŠ¨æ€æ‰§è¡Œæµ‹è¯•é€šå¸¸åˆ†äØ“é»‘ç›’‹¹‹è¯•与白盒测试。黑盒测试指已知产å“的功能设计规æ û|¼Œå¯ä»¥˜q›è¡Œ‹¹‹è¯•è¯æ˜Žæ¯ä¸ªå®žçŽ°äº†çš„åŠŸèƒ½æ˜¯å¦½W¦åˆè¦æ±‚。白盒测试指已知产å“的内部工作过½E‹ï¼Œå¯ä»¥é€šè¿‡‹¹‹è¯•è¯æ˜Žæ¯ç§å†…部æ“作是妽W¦åˆè®¾è®¡è§„æ ¼çš„è¦æ±‚,所有内部æˆåˆ†æ˜¯å¦å·²¾l绘q‡æ£€æŸ¥ã€?BR> 对于å•å…ƒ‹¹‹è¯•æ¥è¯´ä¸»è¦åº”该采用白盒‹¹‹è¯•法对æ¯ä¸ªæ¨¡å—的内部作跟踪‹‚€æŸ¥æµ‹è¯•。对于å•å…ƒç™½ç›’æµ‹è¯•ï¼Œåº”è¯¥å¯¹ç¨‹åºæ¨¡å—进行如下检查:
1. å¯ÒŽ(gu¨©)¨¡å—内所有独立的执行路径臛_°‘‹¹‹è¯•一‹Æ¡ï¼›
2. å¯ÒŽ(gu¨©)‰€æœ‰çš„逻辑判定åQŒå–“真â€ä¸Žâ€œå‡â€çš„ä¸¤ç§æƒ…况都至ž®‘执行一‹Æ¡ï¼›
3. 在åó@环的边界和è¿è¡Œç•Œé™å†…执行循环体;
4. ‹¹‹è¯•内部数æ®çš„æœ‰æ•ˆæ€§ç‰½{‰ã€?BR> å•元白盒跟踪‹¹‹è¯•åQŒé€šå¸¸éœ€è¦åšå¦‚下三项工作:
1. 设计‹¹‹è¯•用例åQ?BR> 2. 设计‹¹‹è¯•¾cÀL¨¡å—ï¼›
3. 跟踪调试ã€?BR> 4.1 ‹¹‹è¯•用例设计
é€šå¸¸åŠ¨æ€æ‰§è¡Œè·Ÿítªè°ƒè¯•是在编ç 阶ŒDµè¿›è¡Œçš„。在å¯ÒŽ(gu¨©)º½E‹åºä½œé™æ€äh工检查之åŽå°±å¯ä»¥å¼€å§‹è¿›è¡Œå•元测试的‹¹‹è¯•用例设计。利用设计文档,设计å¯ä»¥éªŒè¯½E‹åºåŠŸèƒ½ã€æ‰¾å‡ºç¨‹åºé”™è¯¯çš„多个‹¹‹è¯•用例ã€?BR> 4.1.1 ‹¹‹è¯•用例的设计基本原åˆ?BR> 设计‹¹‹è¯•用例基本的原则是åQ?BR> 1. 一个好的测试用例在于能够å‘现至今没有å‘现的错误åQ?BR> 2. ‹¹‹è¯•用例应由‹¹‹è¯•输入数æ®å’Œä¸Žä¹‹å¯¹åº”的预期输出¾l“æžœ˜q™ä¸¤éƒ¨åˆ†¾l„æˆåQ?BR> 3. 在测试用例设计时åQŒåº”当包å«åˆç†çš„输入æ¡äšgå’Œä¸åˆç†çš„输入æ¡ä»¶ã€?BR> 4.1.2 白盒‹¹‹è¯•的测试用例设è®?BR> 白盒‹¹‹è¯•‹¹‹è¯•用例一般采用逻辑覆盖法和基本路径法进行设计ã€?BR> 一ã€é€»è¾‘覆盖æ³?/STRONG>
逻辑覆盖是以½E‹åºå†…部的逻辑¾l“构为基¼‹€çš„æµ‹è¯•用例设计技术,˜q™ä¸€æ–ÒŽ(gu¨©)³•è¦æ±‚‹¹‹è¯•人员对程åºçš„逻辑¾l“构有清楚的了解。逻辑覆盖å¯åˆ†ä¸ºï¼šè¯å¥è¦†ç›–ã€åˆ¤å®šè¦†ç›–ã€æ¡ä»¶è¦†ç›–ã€åˆ¤å®?æ¡äšgè¦†ç›–ã€æ¡ä»¶ç»„åˆè¦†ç›–与路径覆盖ã€?BR> 1. è¯å¥è¦†ç›–ž®±æ˜¯è®¾è®¡è‹¥å¹²ä¸ªæµ‹è¯•用例,˜q行所‹¹‹ç¨‹åºï¼Œä½¿å¾—æ¯ä¸€å¯æ‰§è¡Œè¯å¥è‡³ž®‘执行一‹Æ¡ã€?BR> 2. 判定覆盖ž®±æ˜¯è®¾è®¡è‹¥å¹²ä¸ªæµ‹è¯•用例,˜q行所‹¹‹ç¨‹åºï¼Œä½¿å¾—½E‹åºä¸æ¯ä¸ªåˆ¤æ–çš„å–真分支和å–å‡åˆ†æ”¯è‡³ž®‘ç»åކ䏀‹Æ¡ã€?BR> 3. æ¡äšg覆盖ž®±æ˜¯è®¾è®¡è‹¥å¹²ä¸ªæµ‹è¯•用例,˜q行所‹¹‹ç¨‹åºï¼Œä½¿å¾—½E‹åºä¸æ¯ä¸ªåˆ¤æ–çš„æ¯ä¸ªæ¡äšgçš„å¯èƒ½å–倯D‡³ž®‘执行一‹Æ¡ã€?BR> 4. 判定--æ¡äšg覆盖ž®±æ˜¯è®¾è®¡‘›_¤Ÿçš„æµ‹è¯•用例,使得判æ–䏿¯ä¸ªæ¡ä»¶çš„æ‰€æœ‰å¯èƒ½å–倯D‡³ž®‘执行一‹Æ¡ï¼ŒåŒæ—¶æ¯ä¸ªåˆ¤æ–的所有å¯èƒ½åˆ¤æ–结果也臛_°‘执行一‹Æ¡ã€?BR> 5. æ¡äšg¾l„åˆè¦†ç›–ž®±æ˜¯è®¾è®¡‘›_¤Ÿçš„æµ‹è¯•用例,˜q行所‹¹‹ç¨‹åºï¼Œä½¿å¾—æ¯ä¸ªåˆ¤æ–的所有å¯èƒ½çš„æ¡äšgå–值组åˆè‡³ž®‘执行一‹Æ¡ã€?BR> 6. 路径‹¹‹è¯•ž®±æ˜¯è®¾è®¡‘›_¤Ÿçš„æµ‹è¯•用例,覆盖½E‹åºä¸æ‰€æœ‰å¯èƒ½çš„路径ã€?BR> æ¯ä¸€¿U覆盖方法都有其优缺点,˜q?¿U覆盖方法关¾p»ï¼Œå¦‚图1åQ?BR>

å›?
通常在设计测试用例时应该æ ÒŽ(gu¨©)®ä»£ç 模å—çš„å¤æ‚度åQŒé€‰æ‹©è¦†ç›–æ–ÒŽ(gu¨©)³•。一般的代ç çš„å¤æ‚åº¦ä¸Žæµ‹è¯•ç”¨ä¾‹è®¾è®¡çš„å¤æ‚åº¦æˆæ£æ¯”ã€‚å› æ¤ï¼Œè®¾è®¡äººå‘˜å¿…é¡»åšåˆ°æ¨¡å—或方法功能的å•一性ã€é«˜å†…èšæ€§ï¼Œä½¿å¾—æ–ÒŽ(gu¨©)³•或函æ•îC»£ç å°½å¯èƒ½çš„简å•ï¼›˜q™æ ·ž®†å¯å¤§å¤§æé«˜?g¨°u)¹‹è¯•用例设计的容易度åQŒæé«˜æµ‹è¯•用例的覆盖½E‹åº¦ã€?BR> 二ã€åŸºæœ¬èµ\径法
基本路径‹¹‹è¯•æ³•æ˜¯åœ¨ç¨‹åºæŽ§åˆ¶æµå›„¡š„åŸºç¡€ä¸Šï¼Œé€šè¿‡åˆ†æžæŽ§åˆ¶æž„é€ çš„çŽ¯èµ\夿‚æ€§ï¼Œå¯¼å‡ºåŸºæœ¬å¯æ‰§è¡Œèµ\径集åˆï¼Œä»Žè€Œè®¾è®¡æµ‹è¯•用例的æ–ÒŽ(gu¨©)³•。设计出的测试用例è¦ä¿è¯åœ¨æµ‹è¯•丽E‹åºçš„æ¯ä¸ªå¯æ‰§è¡Œè¯å¥è‡›_°‘执行一‹Æ¡ã€‚基本èµ\径测试法包括以下5个方é¢ï¼š
1. ½E‹åºçš„æŽ§åˆ¶æµå›¾ï¼šæè¿°½E‹åºæŽ§åˆ¶‹¹çš„一¿U图½Cºæ–¹æ³•ã€?BR> 2. ½E‹åºçŽ¯å¢ƒå¤æ‚性:McCabe夿‚性度é‡ï¼›ä»Žç¨‹åºçš„环èµ\夿‚性å¯å¯¼å‡º½E‹åºåŸºæœ¬è·¯å¾„集åˆä¸çš„ç‹¬ç«‹è·¯å¾„æ¡æ•°åQŒè¿™æ˜¯ç¡®å®šç¨‹åºä¸æ¯ä¸ªå¯æ‰§è¡Œè¯å¥è‡³ž®‘执行例ơ所必须的测试用例数目的上界ã€?BR> 3. 导出‹¹‹è¯•用例ã€?BR> 4. 准备‹¹‹è¯•用例åQŒç¡®ä¿åŸºæœ¬èµ\径集ä¸çš„æ¯ä¸€æ¡èµ\径的执行ã€?BR> 5. 囑ÖŞ矩阵åQšæ˜¯åœ¨åŸºæœ¬èµ\径测试ä¸èµ¯‚¾…助作用的软äšg工具åQŒåˆ©ç”¨å®ƒå¯ä»¥å®žçŽ°è‡ªåŠ¨åœ°ç¡®å®šä¸€ä¸ªåŸºæœ¬èµ\径集ã€?BR> å¦å¤–åQŒå¯¹äºŽæµ‹è¯•用例的选择除了满èƒöæ‰€é€‰æ‹©çš„è¦†ç›–ç¨‹åº¦ï¼ˆæˆ–è¦†ç›–æ ‡å‡†ï¼‰å¤–è¿˜éœ€è¦å°½å¯èƒ½çš„é‡‡ç”¨è¾¹ç•Œå€¼åˆ†æžæ³•ã€é”™è¯¯æŽ¨‹¹‹æ³•½{‰å¸¸ç”¨åœ°è®¾è®¡æ–ÒŽ(gu¨©)³•ã€‚é‡‡ç”¨è¾¹ç•Œå€¼åˆ†æžæ³•设计åˆç†çš„输入æ¡ä»¶ä¸Žä¸åˆç†çš„输入æ¡äšgåQ›æ¡ä»¶è¾¹ç•Œæµ‹è¯•ç”¨ä¾‹åº”è¯¥åŒ…æ‹¬è¾“å…¥å‚æ•°çš„边界与æ¡ä»¶è¾¹ç•Œï¼ˆif,whileåQŒforåQŒswitch ,SQL Whereå好{‰ï¼‰ã€‚错误推‹¹‹æ³•åQŒåˆ—丑ևº½E‹åºä¸æ‰€æœ‰å¯èƒ½çš„错误和容易å‘生错误的ç‰ÒŽ(gu¨©)®Šæƒ…况åQŒæ ¹æ®å®ƒä»¬é€‰æ‹©‹¹‹è¯•用例åQ›åœ¨¾~–ç ã€å•元测试阶ŒDµå¯ä»¥å‘现很多常è§çš„错误和疑似错误,对于˜q™äº›é”™è¯¯åº”该作é‡ç‚ÒŽ(gu¨©)µ‹è¯•,òq¶è®¾è®¡ç›¸åº”çš„‹¹‹è¯•用例ã€?BR> 4.1.3 å•å…ƒ‹¹‹è¯•è®¡åˆ’è¡¨æ ¼
在设计测试用例时å¯ä»¥å‚考如下表æ û|¼Œæ‹Ÿå®šå¯ÒŽ(gu¨©)¯ä¸ªç±»(æˆ–æ¨¡å—æˆ–åŒ?的测试计划。表1åQŒæ˜¯å¯ÒŽ(gu¨©)¯ä¸ªç±»åQˆæˆ–æ¨¡å—æˆ–包åQ‰ä½œ‹¹‹è¯•计划的表å¤ß_¼Œå®ƒæŒ‡æ˜Žæœ¬‹¹‹è¯•计划是针寚w‚£ä¸ªæ¨¡å—åŠç›¸å…³æ–‡äšg的。表2是针对表1指定模嗋¹‹è¯•用例而对应的å表åQŒæ¯ä¸ªæµ‹è¯•用例å¯ä»¥æ‹¥æœ‰ä¸€ä¸ªå表;å•å…ƒ‹¹‹è¯•¾l“æžœå表留作执行‹¹‹è¯•ç”¨ä¾‹æ—¶æ ¹æ®å®žé™…结果填写ã€?BR> åç³»¾lŸå. PackageName. JavaClassName
å•å…ƒ‹¹‹è¯•计划 |
æ ‡è¯† |
æ ¼å¼åQ?BR> “å¾pÈ»Ÿå? jsp_filenameåQˆå«ç›®å½•ä¸é—´ç”¨\分开å›_¯åQ‰â€?
或�
“å¾pÈ»Ÿå? PackageName. JavaClassNameâ€? |
¾l„äšg功能™å?/TD>
| 如:¾l„äšgå®Œæˆ â€œæ–°å¢žè„“(chu¨¤ng)åâ€çš„功能 |
针对概è¦/详细设计文äšgå?/TD>
| 如:1.1版本公告部分详细设计说明�/TD> |
ç‰©ç†æ–‡äšgå?/TD>
| jsp_filenameåQˆå«ç›®å½•åQ‰ï¼›
packageName. JavaClassName | è¡?
å•å…ƒ‹¹‹è¯•å项001
下é¢è¡¨æ ¼ä¸ºé’ˆå¯¹ä¸Šé¢è¡¨æ ¼â€œå¾pÈ»Ÿå? PackageName. JavaClassNameâ€è€Œå¯¹åº”çš„å表åQŒæ¯ä¸ªæµ‹è¯•ç”¨ä¾‹ç”¨ä¸€å¼ å表:
¾~–å· |
.001 注:â€? ¾~–å·â€?部分è¦ä»Ž001¾~–å·å¼€å§‹ä¸€ç›´åˆ°999åQŒä¸ªäºø™‡ªè¡Œç¼–å?/TD> |
½E‹åºè®¾è®¡äººå‘˜ |
如:葛志� |
‹¹‹è¯•人员 |
如:葛志� |
‹¹‹è¯•目的 |
如:寚w”™è¯¯é€»è¾‘输入‹‚€éª? |
‹¹‹è¯•内容æè¿° |
如:对于public int fun3åQˆString p1, int p2 åQ‰çš„输入‹‚€éªŒï¼Œå¦‚æžœ p1 == null ,½E‹åºä¸æ£€éªŒåˆ°åQŒåº”该记录到¾pÈ»Ÿ logfile, return â€?; |
输入期望 |
P1 == null |
åŠŸèƒ½å¤„ç†æœŸæœ›æè¿° |
Logfile 多一æ¡åކå²è®°å½•,æ–ÒŽ(gu¨©)³•return -1åQ?/TD> |
输出期望 |
Return � |
å•å…ƒ‹¹‹è¯•¾l“æžœ |
å®žé™…è¾“å…¥æ•°æ® |
P1 = null |
å®žé™…å¤„ç†æƒ…况æè¿° |
½E‹åºæ²¡æœ‰˜q›è¡Œp1 == null 的验è¯ï¼Œæ²¡æœ‰åŠæ—¶return â€?åQŒè€Œæ˜¯˜q行åˆ?p1.aaa( ) æ–ÒŽ(gu¨©)³•时出çŽ?null pointer 异常ã€?/TD> |
实际输出 |
没有å†?logfile æ–‡äšgåQ?/TD> |
‹¹‹è¯•¾l“论 |
æ£å¸¸ / 异常 |
è¡?
4.2 ‹¹‹è¯•¾c»è®¾è®?BR> ä¸€ä¸ªæ¨¡å—æˆ–一个方法(MethodåQ‰åÆˆä¸æ˜¯ä¸€ä¸ªç‹¬ç«‹çš„½E‹åºåQŒåœ¨è€ƒè™‘‹¹‹è¯•它时è¦åŒæ—¶è€ƒè™‘它和外界的蔾p»ï¼Œç”¨äº›è¾…助模å—åŽÀL¨¡æ‹Ÿä¸Žæ‰€‹¹‹æ¨¡å—相è”系的其他模å—。这些辅助模å—分ä¸ÞZ¸¤¿U:
1. 驱动模å—åQˆdriveråQ?相当于所‹¹‹æ¨¡å—çš„ä¸È¨‹åºã€‚它接收‹¹‹è¯•æ•°æ®åQŒæŠŠ˜q™äº›æ•°æ®ä¼ é€ç»™æ‰€‹¹‹æ¨¡å—,最åŽå†è¾“出实际‹¹‹è¯•¾l“æžœã€?BR> 2. 桩模å—(stubåQ?用于代替所‹¹‹æ¨¡å—è°ƒç”¨çš„åæ¨¡å—。桩模å—å¯ä»¥åšå°‘é‡çš„æ•°æ®æ“作åQŒä¸éœ€è¦æŠŠåæ¨¡å—æ‰€æœ‰åŠŸèƒ½éƒ½å¸¦è¿›æ¥ï¼Œä½†ä¸å®¹è®¸ä»€ä¹ˆäº‹æƒ…也ä¸åšã€?BR> 所‹¹‹æ¨¡å—与它相关的驱动模å—åŠæ¡©æ¨¡å—å…±åŒæž„æˆäº†ä¸€ä¸ªâ€œæµ‹è¯•环境â€ï¼Œå¦‚图2。驱动模å—和桩模å—çš„¾~–写会给‹¹‹è¯•带æ¥é¢å¤–çš„å¼€é”€ã€‚å› ä¸ºå®ƒä»¬åœ¨è½¯äšg交付时ä¸ä½œäؓ产å“的一部分一åŒäº¤ä»˜ï¼Œè€Œä¸”它们的编写需è¦ä¸€å®šçš„工作é‡ã€‚特别是桩模å—,ä¸èƒ½åªç®€å•地¾l™å‡ºâ€œæ›¾¾l进入â€çš„ä¿¡æ¯ã€‚äØ“äº†èƒ½å¤Ÿæ£¼‹®çš„‹¹‹è¯•软äšgåQŒæ¡©æ¨¡å—å¯èƒ½éœ€è¦æ¨¡æ‹Ÿå®žé™…忍¡å—的功能,˜q™æ ·æ¡©æ¨¡å—的建立ž®×ƒ¸æ˜¯å¾ˆè½ÀL¾äº†ã€?/SPAN>

å›? å•å…ƒ‹¹‹è¯•的测试环å¢?BR> ¾~–å†™æ¡©æ¨¡å—æ˜¯å›°éš¾è´ÒŽ(gu¨©)—¶çš„,其实也是完全å¯ä»¥é¿å…¾~–写桩模å—çš„åQ›åªéœ€åœ¨é¡¹ç›®è¿›åº¦ç®¡ç†æ—¶ž®†å®žé™…桩模å—的代ç 编写工作安排在被测模å—å‰ç¼–写å³å¯ã€‚而且˜q™æ ·å¯ä»¥æé«˜?g¨°u)¹‹è¯•工作的效率,æé«˜å®žé™…桩模å—çš„‹¹‹è¯•频率从而更有效的ä¿è¯äñ”å“的质é‡ã€‚但是,ä¸ÞZº†ä¿è¯èƒ½å¤Ÿå‘上一层çñ”æä¾›½E›_®šå¯é 的实际桩模å—åQŒäØ“åŽç®‹æ¨¡å—‹¹‹è¯•打下良好的基¼‹€åQŒé©±åŠ¨æ¨¡å—还是必ä¸å¯ž®‘çš„ã€?BR> 对于æ¯ä¸€ä¸ªåŒ…或å¾pÈ»Ÿæˆ‘们å¯ä»¥æ ÒŽ(gu¨©)®æ‰€¾~–写的测试用例楾~–写一个测试模å—ç±»æ¥åšé©±åŠ¨æ¨¡å—åQŒç”¨äºŽæµ‹è¯•åŒ…ä¸æ‰€æœ‰çš„待测试模å—。而最好ä¸è¦åœ¨æ¯ä¸ª¾cÖM¸ç”¨ä¸€ä¸ªæµ‹è¯•函数的æ–ÒŽ(gu¨©)³•åQŒæ¥‹¹‹è¯•跟踪¾cÖM¸æ‰€æœ‰çš„æ–ÒŽ(gu¨©)³•。这æ ïLš„好处在于åQ?BR> 1. èƒ½å¤ŸåŒæ—¶‹¹‹è¯•åŒ…ä¸æ‰€æœ‰çš„æ–ÒŽ(gu¨©)³•或模å—,也å¯ä»¥æ–¹ä¾¿çš„‹¹‹è¯•è·Ÿè¸ªæŒ‡å®šçš„æ¨¡å—æˆ–æ–ÒŽ(gu¨©)³•ã€?BR> 2. 能够è”åˆä½¿ç”¨æ‰€æœ‰æµ‹è¯•用例对åŒä¸€ŒDµä»£ç 执行测试,å‘现问题ã€?BR> 3. 便以回归‹¹‹è¯•åQŒå½“æŸä¸ªæ¨¡å—作了修改之åŽåQŒåªè¦æ‰§è¡Œæµ‹è¯•ç±»ž®±å¯ä»¥æ‰§è¡Œæ‰€æœ‰è¢«‹¹‹çš„æ¨¡å—æˆ–æ–¹æ³•ã€‚è¿™æ ·ä¸ä½†èƒ½å¤Ÿæ–¹ä¾¿å¾—‹‚€æŸ¥ã€è·Ÿítªæ‰€ä¿®æ”¹çš„代ç ,而且能够‹‚€æŸ¥å‡ºä¿®æ”¹å¯¹åŒ…内相å…Ïx¨¡å—或æ–ÒŽ(gu¨©)³•æ‰€é€ æˆçš„媄å“,使修改引˜q›çš„é”™è¯¯å¾—ä»¥åŠæ—¶å‘现ã€?BR> 4. å¤ç”¨‹¹‹è¯•æ–ÒŽ(gu¨©)³•åQŒä‹É‹¹‹è¯•å•å…ƒä¿æŒæŒä¹…性,òq¶å¯ä»¥ç”¨æ—¢æœ‰çš„æµ‹è¯•楾~–写相关‹¹‹è¯•ã€?BR> 5. ž®†æµ‹è¯•代ç 与产å“代ç 分开åQŒä‹Éä»£ç æ›´æ¸…æ™°ã€ç®€‹zï¼›æé«˜?g¨°u)¹‹è¯•代ç 与被‹¹‹ä»£ç çš„å¯ç»´æŠ¤æ€§ã€?BR> 4.3 跟踪调试
跟踪调试ä¸ä½†æ˜¯æ·±å…¥æµ‹è¯•代ç 的最ä½Ïx–¹æ³•,而且也是½E‹åºè°ƒè¯•å‘现错误æ ÒŽ(gu¨©)ºçš„æœ‰åˆ©å·¥å…—÷€?BR> ‹¹‹è¯•¾c»è®¾è®¡å®ŒæˆåŽåQŒæœ€å¥½èƒ½å€ŸåŠ©ä»£ç æŽ’é”™å·¥å…·æ¥è·Ÿítªè°ƒè¯•å¾…‹¹‹ä»£ç 段以深入的‹‚€æŸ¥ä»£ç 的逻辑错误。现有的代ç å¼€å‘工典P¼ˆå¦?JBuilderåQ‰ä¸€èˆ¬éƒ½é›†æˆäº†è¿™¾cÀLޒ错工兗÷€‚排错工具一般由执行控制½E‹åºã€æ‰§è¡ŒçŠ¶æ€æŸ¥è¯¢ç¨‹åºã€è·Ÿítªç¨‹åºç»„æˆã€‚执行控制程åºåŒ…括æ–ç‚¹å®šä¹‰ã€æ–ç‚ÒŽ(gu¨©)’¤é”€ã€å•æ¥æ‰§è¡Œã€æ–ç‚ÒŽ(gu¨©)‰§è¡Œã€æ¡ä»¶æ‰§è¡Œç‰åŠŸèƒ½ã€‚æ‰§è¡ŒçŠ¶æ€æŸ¥è¯¢ç¨‹åºåŒ…括寄å˜å™¨ã€å †æ ˆçжæ€ã€å˜é‡ã€ä»£ç ç‰ä¸Žç¨‹åºç›¸å…³çš„å„ç§çжæ€ä¿¡æ¯çš„æŸ¥è¯¢ã€‚è·Ÿítªç¨‹åºç”¨ä»¥è·Ÿítªç¨‹åºæ‰§è¡Œè¿‡½E‹ä¸æ‰€¾l历的事件åºåˆ—(如:分支ã€å½E‹åºè°ƒç”¨½{‰ï¼‰ã€‚程åºå‘˜å¯é€šè¿‡å¯¹ç¨‹åºæ‰§è¡Œè¿‡½E‹ä¸å„ç§çжæ€çš„判别˜q›è¡Œ½E‹åºé”™è¯¯çš„识别ã€å®šä½åŠæ”ÒŽ(gu¨©)£ã€?BR> 对于模å—çš„å•元跟ítªè°ƒè¯•,最好能够åšåˆ°å¯¹è¢«æµ‹æ¨¡å—的毋ơ修改,都对æ¯ä¸ª‹¹‹è¯•用例˜q›è¡Œè·Ÿè¸ªæ‰§è¡Œä¸€é以排除所有å¯èƒ½å‡ºçŽ°æˆ–å¼•è¿›çš„é”™è¯¯ã€‚åœ¨æ—‰™—´æœ‰é™çš„æƒ…况下也必™å»è°ƒç”¨é©±åŠ¨æ¨¡å—对所有的‹¹‹è¯•用例执行一‹Æ¡ï¼Œòq¶å¯¹å‡ºçŽ°é”™è¯¯æˆ–å¼‚å¸¸çš„‹¹‹è¯•用例跟踪执行一‹Æ¡ï¼Œä»¥å‘现问题的æ ÒŽ(gu¨©)ºã€?
排错˜q‡ç¨‹å¾€å¾€æ˜¯ä¸€ä¸ªè‰°è‹¦çš„˜q‡ç¨‹åQŒç‰¹åˆ«æ˜¯é‚£ç§½Ž—æ³•å¤æ‚ã€è°ƒç”¨å模å—较多的模å—ï¼Œå¯¹äºŽé”™è¯¯çš„å®šä½æ¥è¯´åÆˆä¸æ˜¯ä¸€ä»¶å®¹æ˜“的事情。尽½Ž¡æŽ’错䏿˜¯ä¸€é—¨å¥½å¦çš„æŠ€æœ¯ï¼ˆæœ‰æ—¶äºÞZ»¬æ›´æ„¿æ„ç§°ä¹‹äØ“è‰ºæœ¯åQ‰ï¼Œä½†è¿˜æ˜¯æœ‰è‹¥å¹²è¡Œä¹‹æœ‰æ•ˆçš„æ–¹æ³•å’Œ½{–ç•¥åQŒä¸‹é¢ä»‹¾lå‡ ¿U排错时应该采用的方法ç–ç•¥ã€?BR> 1. æ–点讄¡½®åQŒè®¾¾|®æ–点对æºç¨‹åºå®žè¡Œæ–点跟ítªå°†èƒ½å¤Ÿå¤§å¤§æé«˜æŽ’错的效率。通常æ–点的设¾|®é™¤äº†æ ¹æ®ç»éªŒä¸Žé”™è¯¯ä¿¡æ¯æ¥è®¾¾|®å¤–åQŒè¿˜åº”é‡ç‚¹è€ƒè™‘ä»¥ä¸‹å‡ ç§¾c»è¡Œçš„è¯å¥ã€?BR> 1åQ?函数调用è¯å¥ã€‚å函数的调用è¯å¥æ˜¯‹¹‹è¯•çš„é‡ç‚¹ï¼Œä¸€æ–šw¢ç”׃ºŽåœ¨è°ƒç”¨å函数时å¯èƒ½å¼•èµähŽ¥å£å¼•用错误,å¦ä¸€æ–šw¢å¯èƒ½æ˜¯å函数本èín的错误ã€?BR> 2åQ?判定转移/循环è¯å¥ã€‚判定è¯å¥å¸¸å¸æ€¼šç”׃ºŽè¾¹ç•Œå€ég¸Žæ¯”较优先¾U§ç‰é—®é¢˜å¼•è“vé”™è¯¯æˆ–å¤±æ•ˆè€Œä½œå‡ºé”™è¯¯çš„è½¬ç§»ã€‚å› æ¤ï¼Œå¯¹äºŽåˆ¤å®šè½¬ç§»/循环è¯å¥ä¹Ÿæ˜¯ä¸€ä¸ªé‡è¦çš„‹¹‹è¯•ç‚V€?BR> 3åQ?SQLè¯å¥ã€‚对于数æ®åº“çš„åº”ç”¨ç¨‹åºæ¥è¯ß_¼ŒSQLè¯å¥å¸¸å¸¸ä¼šåœ¨æ¨¡å—ä¸å 比较é‡è¦çš„业务逻辑åQŒè€Œä¸”æ¯”è¾ƒå¤æ‚ã€‚å› æ¤ï¼Œå®ƒä¹Ÿå±žäºŽæ¯”较å®ÒŽ(gu¨©)˜“出现错误的è¯å¥ã€?BR> 4åQ?夿‚½Ž—法ŒDüc€‚å‡ºé”™çš„æ¦‚çŽ‡å¸æ€¸Ž½Ž—æ³•çš„å¤æ‚åº¦æˆæ£æ¯”ã€‚æ‰€ä»¥è¶Šå¤æ‚的算法越需è¦ä½œé‡ç‚¹è·Ÿè¸ªåQŒå¦‚递归ã€å›žæœ”ç‰½Ž—æ³•ã€?BR> 2. å¯ç–‘å˜é‡æŸ¥çœ‹åQŒåœ¨è·Ÿè¸ªæ‰§è¡Œçжæ€ä¸‹å½“程åºåœæ¢åœ¨æŸæ¡è¯å¥æ—¶å¯ä»¥æŸ¥çœ‹å˜é‡çš„当å‰å€¼å’Œå¯¹è±¡çš„当å‰å±žæ€§ã€‚通过å¯ÒŽ(gu¨©)¯”˜q™äº›å˜é‡å½“å‰å€ég¸Žé¢„期值å¯ä»¥è½»æ„¡š„定佽E‹åºé—®é¢˜æ ÒŽ(gu¨©)ºã€?BR> 3. SQLè¯å¥æ‰§è¡Œ‹‚€æŸ¥ï¼Œåœ¨è·Ÿítªæ‰§è¡Œæˆ–˜q行状æ€ä¸‹ž®†ç–‘似错误的SQLè¯å¥æ‰“å°å‡ºæ¥åQŒé‡æ–°åœ¨æ•°æ®åº“SQL查询分æžå™¨ï¼ˆå¦‚:Oracle SQL PlusåQ‰ä¸è·Ÿè¸ªæ‰§è¡Œå¯ä»¥è¾ƒé«˜æ•ˆçš„‹‚€æŸ¥çº æ£SQLè¯å¥é”™è¯¯ã€?BR> 4. 注愾Ÿ¤é›†çŽ°è±¡åQŒç»éªŒè¡¨æ˜Žæµ‹è¯•厽E‹åºä¸æ®‹å˜çš„错误数目与该½E‹åºä¸å·²å‘现的错误数目或‹‚€é”™çŽ‡æˆæ£æ¯”ã€‚æ ¹æ®è¿™ä¸ªè§„律,应当寚w”™è¯¯ç¾¤é›†çš„½E‹åºŒDµè¿›è¡Œé‡ç‚ÒŽ(gu¨©)µ‹è¯•,以æé«˜æµ‹è¯•投资的效益。如果å‘现æŸä¸€ä»£ç ŒDµä¼¼ä¹Žæ¯”å…¶ä»–½E‹åºæ¨¡å—更多的错误們֑æ—Óž¼Œåˆ™åº”当花费较多的旉™—´å’Œä»£ä»ähµ‹è¯•è¿™ä¸ªç¨‹åºæ¨¡å—ã€?BR> |