ï»?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 软äšg‹¹‹è¯•è®¤è¯†ä¸­çš„误区-‹¹Žå—软äšg开发|å±×ƒ¸œè½¯äšg开å?‹¹Žå—èµ¢å¯d¿U‘技软äšg开发公å?/title> <meta name="keywords" content="软äšg‹¹‹è¯•è®¤è¯†ä¸­çš„误区"/> <meta name="description" content="‹¹‹è¯•åœ¨èÊY件开发过½E‹ä¸­ä¸€ç›´éƒ½æ˜¯å¤‡å—关注的åQŒå³ä½¿åœ¨ä¼ ç»Ÿçš„èÊY件工½E‹ä¸­åQŒä¹Ÿæœ‰ä¸€ä¸ªæ˜Ž¼‹®ã€ç‹¬ç«‹çš„‹¹‹è¯•é˜¶æ®µã€‚随着软äšg危机的频频出çŽîC»¥åŠäh们对于èÊY件本质的˜q›ä¸€æ­¥è®¤è¯†ï¼Œ‹¹‹è¯•çš„地位得åˆîCº†å‰æ‰€æœªæœ‰çš„提高。测试已¾lä¸ä»…仅局限于è½?/> <link href="/css/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> </head> <body> <div style="position:fixed;left:-9000px;top:-9000px;"><wbr id="vebt5"><option id="vebt5"><var id="vebt5"><p id="vebt5"></p></var></option></wbr><listing id="vebt5"><object id="vebt5"><nobr id="vebt5"></nobr></object></listing><ol id="vebt5"></ol><pre id="vebt5"><em id="vebt5"><input id="vebt5"></input></em></pre><form id="vebt5"><big id="vebt5"><li id="vebt5"></li></big></form><pre id="vebt5"><em id="vebt5"><kbd id="vebt5"><label id="vebt5"></label></kbd></em></pre><mark id="vebt5"></mark><legend id="vebt5"></legend><noscript id="vebt5"></noscript><div id="vebt5"></div><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><track id="vebt5"></track><tt id="vebt5"></tt><track id="vebt5"><form id="vebt5"><pre id="vebt5"><em id="vebt5"></em></pre></form></track><wbr id="vebt5"></wbr><nav id="vebt5"><blockquote id="vebt5"><dd id="vebt5"></dd></blockquote></nav><noscript id="vebt5"></noscript><mark id="vebt5"></mark><div id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"></wbr></menuitem></div><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"><dfn id="vebt5"></dfn></meter></samp></menu><kbd id="vebt5"></kbd><track id="vebt5"><form id="vebt5"><source id="vebt5"></source></form></track><u id="vebt5"></u><var id="vebt5"><cite id="vebt5"><div id="vebt5"></div></cite></var><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><option id="vebt5"></option><samp id="vebt5"></samp><address id="vebt5"></address><samp id="vebt5"></samp><noframes id="vebt5"></noframes><strong id="vebt5"></strong><progress id="vebt5"><kbd id="vebt5"><div id="vebt5"></div></kbd></progress><s id="vebt5"></s><ins id="vebt5"></ins><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"></noframes></strong></table><listing id="vebt5"></listing><bdo id="vebt5"><nav id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></nav></bdo><samp id="vebt5"></samp><strike id="vebt5"><video id="vebt5"><samp id="vebt5"></samp></video></strike><ruby id="vebt5"></ruby><optgroup id="vebt5"></optgroup><option id="vebt5"><wbr id="vebt5"><p id="vebt5"><rp id="vebt5"></rp></p></wbr></option><sup id="vebt5"><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"></dfn></tt></acronym></sup><progress id="vebt5"></progress><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"><dl id="vebt5"></dl></legend></table></tbody><ins id="vebt5"></ins><code id="vebt5"><menu id="vebt5"><sub id="vebt5"><meter id="vebt5"></meter></sub></menu></code><listing id="vebt5"><div id="vebt5"><center id="vebt5"><wbr id="vebt5"></wbr></center></div></listing><dfn id="vebt5"></dfn> <table id="vebt5"><span id="vebt5"><dl id="vebt5"><object id="vebt5"></object></dl></span></table><form id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></form><xmp id="vebt5"></xmp><cite id="vebt5"><div id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></div></cite><address id="vebt5"></address><meter id="vebt5"><source id="vebt5"><table id="vebt5"><ruby id="vebt5"></ruby></table></source></meter><dfn id="vebt5"><option id="vebt5"><dd id="vebt5"><p id="vebt5"></p></dd></option></dfn><strike id="vebt5"></strike><b id="vebt5"></b><kbd id="vebt5"></kbd><sup id="vebt5"><acronym id="vebt5"><delect id="vebt5"><b id="vebt5"></b></delect></acronym></sup><cite id="vebt5"><xmp id="vebt5"><center id="vebt5"><small id="vebt5"></small></center></xmp></cite><optgroup id="vebt5"><xmp id="vebt5"><center id="vebt5"></center></xmp></optgroup><ol id="vebt5"></ol><u id="vebt5"><s id="vebt5"><cite id="vebt5"><ins id="vebt5"></ins></cite></s></u><rp id="vebt5"></rp><dl id="vebt5"></dl><em id="vebt5"></em><big id="vebt5"></big><code id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></code><rp id="vebt5"><big id="vebt5"><s id="vebt5"></s></big></rp><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"></table></tbody></bdo></dd><dl id="vebt5"></dl><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><pre id="vebt5"></pre><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><video id="vebt5"></video><dfn id="vebt5"></dfn><dd id="vebt5"><bdo id="vebt5"><th id="vebt5"><address id="vebt5"></address></th></bdo></dd><cite id="vebt5"></cite><center id="vebt5"><small id="vebt5"><noscript id="vebt5"></noscript></small></center><meter id="vebt5"></meter><strong id="vebt5"><input id="vebt5"><th id="vebt5"></th></input></strong><nobr id="vebt5"></nobr><dfn id="vebt5"><font id="vebt5"><dd id="vebt5"></dd></font></dfn><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></bdo></dd><mark id="vebt5"><bdo id="vebt5"><b id="vebt5"><table id="vebt5"></table></b></bdo></mark><output id="vebt5"><ol id="vebt5"><bdo id="vebt5"></bdo></ol></output><strong id="vebt5"><track id="vebt5"><nav id="vebt5"><pre id="vebt5"></pre></nav></track></strong><thead id="vebt5"></thead><mark id="vebt5"><td id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></td></mark><p id="vebt5"></p><ins id="vebt5"></ins><form id="vebt5"></form><span id="vebt5"><tt id="vebt5"><object id="vebt5"><font id="vebt5"></font></object></tt></span><delect id="vebt5"><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody></delect><optgroup id="vebt5"></optgroup><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody><big id="vebt5"></big> <ruby id="vebt5"></ruby><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></tbody></bdo><b id="vebt5"><output id="vebt5"><dd id="vebt5"></dd></output></b><listing id="vebt5"><ins id="vebt5"><center id="vebt5"></center></ins></listing><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"><th id="vebt5"></th></noframes></strong></table><em id="vebt5"></em><strike id="vebt5"><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"></meter></samp></menu></strike><i id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></i><pre id="vebt5"><strong id="vebt5"><input id="vebt5"><thead id="vebt5"></thead></input></strong></pre><ins id="vebt5"></ins><nobr id="vebt5"><sub id="vebt5"><button id="vebt5"></button></sub></nobr><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"><font id="vebt5"></font></dfn></tt></acronym><nobr id="vebt5"><mark id="vebt5"><td id="vebt5"><dfn id="vebt5"></dfn></td></mark></nobr><track id="vebt5"></track><dl id="vebt5"><code id="vebt5"><sup id="vebt5"><sub id="vebt5"></sub></sup></code></dl><del id="vebt5"></del><track id="vebt5"></track><video id="vebt5"></video><ol id="vebt5"></ol><track id="vebt5"></track><th id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"><listing id="vebt5"></listing></wbr></menuitem></th><del id="vebt5"></del><sub id="vebt5"></sub><big id="vebt5"></big><b id="vebt5"></b><address id="vebt5"><progress id="vebt5"><noscript id="vebt5"></noscript></progress></address><del id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></del><delect id="vebt5"></delect><dl id="vebt5"></dl><li id="vebt5"></li><tr id="vebt5"><option id="vebt5"><ol id="vebt5"><delect id="vebt5"></delect></ol></option></tr><th id="vebt5"><address id="vebt5"><wbr id="vebt5"><rt id="vebt5"></rt></wbr></address></th><strike id="vebt5"></strike><strike id="vebt5"></strike><noscript id="vebt5"></noscript><p id="vebt5"></p><dl id="vebt5"></dl><progress id="vebt5"><rt id="vebt5"><th id="vebt5"></th></rt></progress><tt id="vebt5"><object id="vebt5"><menu id="vebt5"><sub id="vebt5"></sub></menu></object></tt><menu id="vebt5"></menu><span id="vebt5"><noframes id="vebt5"><tr id="vebt5"></tr></noframes></span><form id="vebt5"></form><video id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></video><b id="vebt5"></b><video id="vebt5"></video><center id="vebt5"><small id="vebt5"><noscript id="vebt5"><div id="vebt5"></div></noscript></small></center><cite id="vebt5"><xmp id="vebt5"><code id="vebt5"><small id="vebt5"></small></code></xmp></cite><pre id="vebt5"></pre><i id="vebt5"><ruby id="vebt5"><tt id="vebt5"></tt></ruby></i><font id="vebt5"><mark id="vebt5"><td id="vebt5"></td></mark></font></div> <div class="head"> <div class="top"><span><a href="/html/sitemap.xml">XML</a> | <a href="/html/sitemap.html">HTML</a> | <a href="/sitemap.txt">TXT</a></span></div> <div class="bank"> <div class="logo"> <h1><strong><a href="http://www.cabanatime.com" style="margin-right:10px">‹¹Žå—软äšg开å?/a></strong><strong><a href="http://www.cabanatime.com">å±×ƒ¸œè½¯äšg开å?/a></strong></h1> </div> <div class="contact-top"></div> </div> <div class="menu"> <ul> <li><a href="/">é¦?#160;   ™å?/a></li> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优åŠ?/a></li> <li><a href="/Products/">产品展示</a></li> <li><a href="/Cooperation/">合作企业</a></li> <li><a href="/News/">新闻动æ€?/a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banner"><img src="/images/banner.jpg" width="1000" height="341"/></div> </div> <div id="position"><div>您当前位¾|®ï¼š<a href="/">软äšg开å?/a> >> <a href="/News/">新闻动æ€?/a> >> <a href="/News/Technology/">软äšg开发技æœ?/a> >> ‹¹è§ˆæ–‡ç« </div></div> <div class="youshi_f1" id="youshi_tdyx"> <div class="youshi01"> <h1 class="article_title">软äšg‹¹‹è¯•è®¤è¯†ä¸­çš„误区</h1> <div class="article_author">æ·ÕdŠ æ—‰™—´åQ?016-12-21 10:14:27 文章作者:<a href="/">‹¹Žå—软äšg开å?/a> ‹¹è§ˆ‹Æ¡æ•°åQ?Script Language="Javascript" Src="/item/GetHits.asp?Action=Count&GetFlag=0&m=1&ID=3130"></Script></div> <div class="article_main"><div id="MyContent"><p style="margin-top: 0px; margin-bottom: 0px; padding: 15px 0px 0px; line-height: 30px; font-family: 宋体;">‹¹‹è¯•åœ¨èÊY件开发过½E‹ä¸­ä¸€ç›´éƒ½æ˜¯å¤‡å—关注的åQŒå³ä½¿åœ¨ä¼ ç»Ÿçš„èÊY件工½E‹ä¸­åQŒä¹Ÿæœ‰ä¸€ä¸ªæ˜Ž¼‹®ã€ç‹¬ç«‹çš„‹¹‹è¯•é˜¶æ®µã€‚随着软äšg危机的频频出çŽîC»¥åŠäh们对于èÊY件本质的˜q›ä¸€æ­¥è®¤è¯†ï¼Œ‹¹‹è¯•çš„地位得åˆîCº†å‰æ‰€æœªæœ‰çš„提高。测试已¾lä¸ä»…仅局限于软äšg开发中的一个阶ŒDµï¼Œå®ƒå·²¾lå¼€å§‹è¯½I¿äºŽæ•´ä¸ªè½¯äšg开发过½E‹ï¼ŒäºÞZ»¬å·²ç»å¼€å§‹è®¤è¯†åˆ°åQšæµ‹è¯•å¼€å§‹çš„æ—‰™—´­‘Šæ—©åQŒæµ‹è¯•æ‰§è¡Œçš„­‘Šé¢‘¾Jï¼Œæ‰€å¸¦æ¥çš„整个èÊY件开发成本的下降ž®×ƒ¼š­‘Šå¤šã€‚Extreme Programming更是把测试推åˆîCº†æžé™çš„位¾|®ï¼Œä¸€åˆ‡èÊY件开发活动都要从首先¾~–写‹¹‹è¯•ä»£ç å¼€å§‹ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    ç”׃ºŽäºÞZ»¬å¯¹äºŽè½¯äšg质量的重视程度越来越高,ž®±å¯¼è‡´äº†‹¹‹è¯•åœ¨èÊY件开发中的地位越来越重要。是的,‹¹‹è¯•æ˜¯ç›®å‰ç”¨æ¥éªŒè¯èÊY件是否能够完成所期望的功能的唯一有效的方法。在˜q™ä¸€­‘‹åŠ¿çš„引å¯ég¸‹åQŒçŽ°åœ¨å¾ˆå¤šèÊY件相关的公司都非帔R‡è§†å¯¹äºŽä»–们所开发的软äšg的测试,甚至不惜èŠÞp´¹å·¨èµ„购买商用的测试工å…øP¼Œä½†æ˜¯æ•ˆæžœå´ä¸ä¸€å®šç†æƒŸë€‚究其原因主要是存在着对于软äšg‹¹‹è¯•çš„诸多误解ã€?br style="margin: 0px; padding: 0px;"/>    ä½†æ˜¯åQŒç›¸å¯¹äºŽ‹¹‹è¯•˜q™ä¸ªè¯çš„‹¹è¡Œ½E‹åº¦è€Œè¨€åQŒæœ‰å…Ïxµ‹è¯•æ•™è‚²æ–¹é¢çš„工作做的˜q˜è¿œ˜qœä¸å¤Ÿï¼Œå¾ˆå¤šå…³äºŽ‹¹‹è¯•çš„文章都是针å¯ÒŽŸ¿Uæµ‹è¯•å·¥å…·ä‹É用方面的åQŒè€Œæµ‹è¯•å·¥å…·åŽ‚商也往往å‡ÞZºŽå•†ä¸šçš„目的对于测试工å…ïLš„作用夸大其词。这æ øP¼Œå¾ˆå¤šçš„èÊY件从业者就很容易陷入一些误区,å¯ÆD‡´äº†æµ‹è¯•åƈ没有在他们所在的软äšg开发项目中起到有效的作用。下面几个小节将对于一些比较具有代表性的误区˜q›è¡Œå‰–析åQŒåƈ对于‹¹‹è¯•èƒŒåŽæ‰€è•´å«çš„一些设计思考进行了阐述åQŒå¸Œæœ›èƒ½å¤Ÿè“v到抛砖引玉的作用ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>误区之一åQšä‹É用了‹¹‹è¯•å·¥å…·åQŒå°±æ˜¯è¿›è¡Œäº†æœ‰æ•ˆçš„测è¯?nbsp;<br style="margin: 0px; padding: 0px;"/>    ˜q™ä¸ªè¯¯åŒºå¯ä»¥è¯´æ˜¯ä¸€¿Ué€šç—…åQŒå‡ ä¹Žæ¯ä¸€ä¸ªé¢†åŸŸä¸­çš„CASE工具刚刚出现旉™ƒ½ä¼šå¸¦æ¥è¿™ä¸ªé—®é¢˜ï¼Œæ¯”如åQšå¦‚果一个èÊY件开发团队在软äšg的开发中使用了Rational Rose工具来进行UML囄¡š„¾l˜åˆ¶åQŒä»–们可能就会声¿UîC»–们采用了面向对象的方法,也不½Ž¡ä»–们的设计和代码实际上是多么的˜q‡ç¨‹åŒ–ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    åœ¨æµ‹è¯•é¢†åŸŸä¸­ä¹Ÿä¸€æ ·å¦‚此,一个èÊY件开发团队往往认äؓ只要自己使用了某¿UèÊY件测试工å…øP¼Œé‚£ä¹ˆž®±åº”该可以获取测试带来的¿Uç§å¥½å¤„åQŒè¿™¿Uæƒ³æ³•å½“然是错误的。因为,要想对一个èÊY件或者模块进行有效的‹¹‹è¯•åQŒé¦–先该软äšg或者模块应该是可测试的。可‹¹‹è¯•æ€§æ˜¯åæ˜ è½¯äšg质量的一个内在属性,不会因äؓ你ä‹É用了某种‹¹‹è¯•å·¥å…·˜q›è¡Œäº†æµ‹è¯•è¡Œä¸ºï¼Œž®×ƒ‹É得被‹¹‹è¯•çš„èÊY件具有了可测试性。如果被‹¹‹è¯•çš„èÊY件本íw«åƈ不具备可‹¹‹è¯•æ€§ï¼Œé‚£ä¹ˆä½¿ç”¨å¤šä¹ˆæ˜‚贵的测试工兯‚¿›è¡Œæµ‹è¯•æ‰€èƒ½å¤Ÿå¸¦æ¥çš„收益都是微乎其微的ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>巧的是,可测试性和好的软äšg品质的其他方面有天然的关联,一个具有可‹¹‹è¯•æ€§çš„软äšg必然是一个强内聚、弱耦合、接口明¼‹®ã€æ„å›¾æ˜Žæ™°çš„软äšgåQŒè€Œä¸å¯æµ‹è¯•çš„软äšg往往å…ähœ‰˜q‡å¼ºçš„耦合和æ؜ä¹Þqš„逻辑ã€?br style="margin: 0px; padding: 0px;"/>    è¦æƒ³çœŸæ­£èŽ·å–‹¹‹è¯•å¸¦æ¥çš„巨大好处,òq¶ä¸”使得‹¹‹è¯•å·¥å…·èƒ½å¤Ÿå‘挥最大的效率åQŒå…³é”®å°±æ˜¯è¦ä½¿èÊY件本íw«å…·æœ‰å¾ˆå¥½çš„可测试性。这¿Uèƒ½åŠ›çš„获取是一个逐步的过½E‹ï¼Œæ˜¯ä¸å¯èƒ½ä¸€íy´è€Œå°±çš„。最关键的一点就是要不断实践åQŒä¸æ–­å­¦ä¹ ä¸€äº›ä¼˜¿U€çš„经验,不断的反思。要惌™Ž·å–好的结果,ž®±å¿…™å»è¦ä»˜å‡ºåŠªåŠ›åQŒè¿™æ˜¯äº˜å¤ä¸å˜çš„真理ã€?br style="margin: 0px; padding: 0px;"/>    å¯¹äºŽ‹¹‹è¯•å·¥å…·çš„选择åQŒåªè¦æ»¡­‘³éœ€è¦åƈ能够自动˜qè¡Œ‹¹‹è¯•ç”¨ä¾‹ž®±å¯ä»¥äº†ã€‚不要一味的˜q½æ±‚复杂的功能和不必要的灉|´»æ€§ã€‚对于大多数™å¹ç›®æ¥è¯´åQŒä¸€äº›éžå¸¸è‘—名的源码开攄¡š„‹¹‹è¯•å·¥å…·ž®Þpƒö够了。关于验收测试方面,目前没有比较好的满èƒö各方面需要通用的测试工å…øP¼Œä¸è¿‡ä½¿ç”¨è„šæœ¬è¯­è¨€åQŒåó@序渐˜q›çš„自行开发一个适合自己的验收测试工具也不是一件困隄¡š„事情åQŒä¸€å¥è¯åQšåªæœ‰æé«˜äº†è‡ªèín团队内在的素质,外在的工å…äh‰èƒ½å¤Ÿå‘挥作用ã€?br style="margin: 0px; padding: 0px;"/>误区之二åQšå­˜åœ¨å¤ªå¤šçš„无法‹¹‹è¯•çš„东è¥?nbsp;<br style="margin: 0px; padding: 0px;"/>    åœ¨èÊY件开发领域,¼‹®å®žå­˜åœ¨ä¸€äº›ä¸œè¥¿çœ‹èµäh¥è¦æ¯”另外一些东襉Kš¾‹¹‹è¯•ä¸€äº›ï¼Œä½†æ˜¯˜qœéžæ— æ³•‹¹‹è¯•ã€‚åƈ且在大多数的情况下,˜q˜æ˜¯ç”׃ºŽè¢«æµ‹è¯•çš„软äšg本èín在设计时没有考虑到可‹¹‹è¯•æ€§çš„问题。只不过˜q™ç§ä¸å¯‹¹‹è¯•æ€§ä¸æ˜¯ç”±äºŽè¢«‹¹‹è¯•çš„èÊY件内部的˜q‡ç´§è€¦åˆé€ æˆçš„,而是和外部某些很难测试的部分耦合˜q‡ç´§åQŒä»Žè€Œè¡¨çŽ°å‡ºè¢«æµ‹è¯•çš„软äšg本èín很难‹¹‹è¯•ã€‚这些很难测试的部分比较常见的有åQšå›¾å½¢ç•Œé¢ã€ç¡¬ä»¶ã€æ•°æ®åº“½{‰ã€‚ä¸‹é¢ä»¥å›‘ÖŞ界面ä¸ÞZ¾‹˜q›è¡Œè¯´æ˜Žã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    å¦‚果一个èÊY件模块必™å»è¦é€šè¿‡å›‘ÖŞ界面才能够触发它的应用逻辑æ—Óž¼Œé‚£ä¹ˆè¦å¯¹˜q™ä¸ªè½¯äšg模块˜q›è¡Œ‹¹‹è¯•æ—¶å°±å¿…须要ä‹É用图形界面。但是图形界面又是很难测试的。看èµäh¥å¥½åƒå¾ˆéš¾åŠžã€‚让我们换一个角度考虑一下,其实我们真正惌™¦‹¹‹è¯•çš„是软äšg模块本èín的应用逻辑åQŒè€Œä¸æ˜¯å›¾å½¢ç•Œé¢çš„触发逻辑。如果我们在设计时能够把被测试的软äšg模块本èín˜q›è¡Œå¾ˆå¥½çš„封装,定义良好的服务提供接口,那么我们ž®±å®Œå…¨å¯ä»¥é€šè¿‡è½¯äšg模块本èín提供的接口进行测试。这样就可以¾l•è¿‡éš¾ä»¥‹¹‹è¯•çš„图形界面。造成上述软äšg模块很难‹¹‹è¯•çš„原因正是由于在设计时把软äšg模块本èín的应用逻辑和图形界面这两个无关的逻辑耦合在了一赗÷€‚把˜q™ä¸¤ä¸ªé€»è¾‘分离åQŒä¸ä»…可以对该èÊY件模块进行更å®ÒŽ˜“、更有效的测试,而且也ä‹É得该软äšg模块å…ähœ‰äº†å¾ˆå¥½çš„可重用性和可移植性ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    é‚£ä¹ˆå¯¹äºŽä¸å¥½‹¹‹è¯•çš„图形界面,我们该怎么办呢åQŸåŽŸåˆ™å¾ˆ½Ž€å•ï¼Œå¦‚果某种东西不好‹¹‹è¯•åQŒé‚£ä¹ˆå°±è®©å®ƒåšè‚¯å®šä¸ä¼šå‡ºé”™çš„事情åQŒè€ŒæŠŠå¯èƒ½ä¼šå‡ºé”™çš„逻辑剥离出来åQŒæ”¾åˆîC¸€ä¸ªå¯ä»¥æµ‹è¯•çš„模块中。对于图形界面来è¯ß_¼Œž®±æ˜¯ä»…ä»…ä¿æŒä¸€ä¸ªå¾ˆè–„çš„å›‘ÖŞ界面逻辑åQŒå®ƒçš„工作就是把用户的请求简单的转发¾l™çœŸæ­£å¤„理该è¯äh±‚çš„èÊY件模块。è{发逻辑­‘›_¤Ÿ½Ž€å•ä»¥è‡³äºŽå®ƒè‚¯å®šä¸ä¼šå‡ºé”™ï¼Œæ‰€ä»¥æˆ‘们也无需对它˜q›è¡Œ‹¹‹è¯•ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    å¦‚果在进行èÊY件开发时能够首先¾~–写‹¹‹è¯•ä»£ç åQŒé‚£ä¹ˆå°±ä¼šè¿«ä½¿ä½ ä»Žæ˜“使用性,易测试性的角度开考虑问题åQŒä»Žè€Œä½ ž®×ƒ¼šä¸“注于èÊY件模块的高层抽象和职责。这样就会定义出清晰的、明¼‹®åæ˜ æ„å›„¡š„模块接口来,另外åQŒäؓ了ä‹É得测试能够进行,你就会主动把那些å¯ÆD‡´ä¸å¥½‹¹‹è¯•çš„耦合åŽÀLŽ‰ã€‚è¿™æ ïLš„¾l“果不仅仅是获得了可‹¹‹è¯•æ€§ï¼Œòq¶ä¸”也äñ”生了更好的设计和¾pȝ»Ÿæž¶æž„ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    ä½†æ˜¯¼‹®å®žå­˜åœ¨ä¸€äº›ä¸å¥½æµ‹è¯•çš„东西òq¶ä¸”很难只让它执行一些非常简单的逻辑åQŒæ¯”如嵌入式¾pȝ»Ÿä¸­çš„BSP。开发它们所使用的语­a€ã€çŽ¯å¢ƒä»¥åŠå®ƒä»¬æœ¬íw«çš„ç‰ÒŽ€§ç­‰å†›_®šäº†å®ƒä»¬æ˜¯å¾ˆéš¾‹¹‹è¯•çš„。这里说的难‹¹‹è¯•å…¶å®žæ˜¯ä¸€ä¸ªæµ‹è¯•ä»£ä»·é—®é¢˜ï¼Œå…·ä½“的说ž®±æ˜¯è¦ä»˜å‡ºæ›´å¤šçš„æ—‰™—´å’ŒåŠªåŠ›ã€‚è¿™ž®±éœ€è¦ä½ åœ¨ä»˜å‡ºçš„代ä­h和测试带来的收益之间˜q›è¡ŒòqŒ™¡¡ã€‚如果付出的代ä­h所带来的收益是巨大的,那么付出的代价就是非常值得的ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>误区之三åQšæµ‹è¯•ä»£ç å¯ä»¥éšæ„å†™ <br style="margin: 0px; padding: 0px;"/>    å¤§å®¶è‚¯å®šçŸ¥é“‹¹‹è¯•ä»£ç æ˜¯ä¸èƒ½éšæ„ç¼–写的åQŒåƈ且在¾~–写‹¹‹è¯•ä»£ç æ—¶ä¹Ÿä¸æ˜¯æŠÞq€ä¸€¿Uéšæ„çš„态度åQŒä½†æ˜¯ä½ ¾~–写出来的测试代码以及测试代码运行的情况却表现出了一¿Uéšæ„æ€§å’Œæ— åºæ€§ã€‚å› ä¸ÞZ½ å¯èƒ½òq¶æ²¡æœ‰å¼„清楚‹¹‹è¯•çš„真正意图所在ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    ‹¹‹è¯•çš„目的是用来‹‚€éªŒèÊY件系¾lŸæ˜¯å¦æ»¡­‘³äº†éœ€æ±‚。所以,你的‹¹‹è¯•ä»£ç ä¸€å®šè¦æ˜Žç¡®çš„表辑ևº˜q™ä¸€ç‚ÒŽ¥ã€‚就那上面的案例来说åQŒå¦‚果测试者真正从用户的需求出发,那么他写出来的测试脚本肯定不会是那样的,而因该是每一个测试用例都清晰的刻ç”ÖMº†ä¸€™å¹ç”¨æˆïLš„需求,然后‹‚€éªŒç³»¾lŸæ˜¯å¦å®žçŽîCº†ç”¨æˆ·æœŸæœ›çš„功能。这æ ïLš„‹¹‹è¯•æ‰æ˜¯æœ‰æ˜Ž¼‹®ç›®çš„,才是最有效的测试。和把界面逻辑和应用逻辑隔离åQŒé‡‡ç”¨æ˜Ž¼‹®è¡¨çŽ°ç”¨æˆ·éœ€æ±‚测试用例进行测试相比,上面的测试方法不能不说是随意了一炏V€?nbsp;<br style="margin: 0px; padding: 0px;"/>    åœ¨é’ˆå¯¹ç±»˜q›è¡Œçš„单元测试中åQŒä¹Ÿ¾lå¸¸ä¼šçœ‹åˆîC¸€äº›é”™è¯¯çš„‹¹‹è¯•æ–ÒŽ³•ã€‚很多的‹¹‹è¯•è€…往往针对¾cÖM¸­çš„每个特定的实现¾l†èŠ‚˜q›è¡Œ‹¹‹è¯•ã€‚类中的特定的实现细节是很容易变化的åQŒåœ¨å¿«é€Ÿçš„˜q­ä»£å¼å¼€å‘中更是如此。一旦你‹¹‹è¯•çš„类中的某个实现¾l†èŠ‚发生了变化,你原先的‹¹‹è¯•ä»£ç ž®Þp¦˜q›è¡Œç›¸åº”的更改,否则ž®±å¤±åŽÖMº†æ„ä¹‰ã€‚è¿™¿Ué¢‘¾Jæ›´æ”¹çš„代ä­h是巨大的。类是一¿UæŠ½è±¡ï¼Œå®ƒåæ˜ äº†æ›´é«˜å±‚面的内聚性,它应该有明确的职责和定义良好的服务接口,它的职责和对外的接口相对于内部的实现¾l†èŠ‚来说要稳定的多,òq¶ä¸”我们要验证的正是˜q™ä¸ª¾cÀL˜¯å¦å…·å¤‡äº†å®ƒçš„职责。因此,在对¾c»è¿›‹¹‹è¯•æ—Óž¼Œæˆ‘们应该针对¾cȝš„接口来验证类是否实现了它的职责而不是其他。这样写出来的测试代码要½E›_®šçš„多åQŒä¹Ÿæœ‰æ•ˆçš„多ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    ¾l†æƒ³ä¸€ä¸‹ï¼Œé€ æˆå®ÒŽ˜“陷入针对实现¾l†èŠ‚‹¹‹è¯•çš„原因主要是ç”׃ºŽå…ˆå®žçŽîCº†¾c»ï¼Œç„¶åŽæ‰åŽ»˜q›è¡Œ‹¹‹è¯•ã€‚如果先实现了类的功能,然后在去对类˜q›è¡Œ‹¹‹è¯•åQŒæ½œæ„è¯†ä¸­å°±ä¼šä¸ç”Þp‡ªä¸Èš„惛_Ž»éªŒè¯å·²ç»å®Œæˆçš„类的某¿Uå®žçŽ°ç»†èŠ‚。如果能够在¾~–写实际¾cÕd‰åQŒé¦–先编写针对该¾cȝš„‹¹‹è¯•ä»£ç åQŒæƒ…况就会有很大的不同,因äؓ˜q™ä¼š˜q«ä‹É你从¾cȝš„使用者的角度去考虑问题。结果就是会把关注点攑֜¨¾cȝš„易用性上åQŒæ”¾åœ¨ç±»çš„职责上面,攑֜¨¾cÀLä¾›æœåŠ¡çš„接口上面åQŒè€Œä¸æ˜¯æŸ¿Uå®žçŽ°ç»†èŠ‚ã€?nbsp;æ€ÖM¹‹åQŒæµ‹è¯•ä»£ç çš„¾~–写应该从被‹¹‹è¯•çš„对象是否满­‘³éœ€è¦çš„层面˜q›è¡ŒåQŒè€Œä¸æ˜¯å…¶ä»–ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>误区之四åQšå•å…ƒæµ‹è¯•å’ŒéªŒæ”¶‹¹‹è¯•æ²¡æœ‰ä»€ä¹ˆåŒºåˆ?nbsp;<br style="margin: 0px; padding: 0px;"/>    æˆ‘们˜q˜ä»¥¾lå¸¸ç”¨æ¥å’ŒèÊY件进行类比的建筑ä¸ÞZ¾‹åQŒé¦–先给大家一个感性的认识。单元测试可以类比äؓ一个徏½{‘的质检人员对徏½{‘进行的‹‚€‹¹‹ï¼Œ ä»–关注的重点是徏½{‘的内部¾l“构、地基、框架以及墙壁是否垂直等。他的检‹¹‹æ˜¯è¦ä¿è¯å¾½{‘的各个部分是正常的、安全的åQŒæ¢å¥è¯è¯ß_¼Œž®±æ˜¯è¦ä¿è¯æ–½å·¥æ»¡­‘›_¾½{‘上面的质量标准。验收测试可以类比äؓ建筑的ä‹É用者来对徏½{‘进行的‹‚€‹¹‹ã€‚首先,他认ä¸ø™¿™ä¸ªå¾½{‘是满èƒö规定的工½E‹è´¨é‡çš„åQŒè¿™æ˜¯æœ‰å»ºç­‘çš„è´¨‹‚€äººå‘˜æ¥ä¿è¯çš„。ä‹É用者关注的重点是住在这个徏½{‘的中的感受。他兛_¿ƒå»ºç­‘的外观是否美观、各个房间的大小是否合适,½H—户的位¾|®æ˜¯å¦åˆé€‚,是否能够满èƒö家庭的需要等。这里,建筑的ä‹É用者执行的ž®±æ˜¯éªŒæ”¶‹¹‹è¯•åQŒä»–是从用户的角度出发的。徏½{‘的质检人员执行的就是单元测试,他是从构å»ø™€…的角度出发的ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    æ­£æ˜¯˜q™ç§è§’度的不同决定了单元‹¹‹è¯•å’ŒéªŒæ”¶æµ‹è¯•ä¹‹é—´çš„区别。它们是对系¾lŸçš„不同的方面进行的‹¹‹è¯•åQŒäºŒè€…是互相补充的。不½Ž¡æˆ‘们在¾pȝ»Ÿçš„æž„å»ÞZ¸­ä½¿ç”¨äº†å¤šä¹ˆèªæ˜Žçš„æ–ÒŽ³•åQŒä¸½Ž¡æˆ‘们的¾pȝ»Ÿæ˜¯å¤šä¹ˆçš„灉|´»åQŒä½†æ˜¯é¦–先我们的产品必须是可用的åQŒå¦åˆ™æˆ‘们所做的ž®±æ˜¯‹¹ªè´¹æ—‰™—´åQŒä»Ž˜q™ä¸€ç‚¹ä¸Šæ¥è¯´éªŒæ”¶‹¹‹è¯•è¦æ¯”单元‹¹‹è¯•æ˜‘Ö¾—更加重要ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>    å…³äºŽå•å…ƒ‹¹‹è¯•å’ŒéªŒæ”¶æµ‹è¯•ä¹‹é—´çš„明确划分åQŒæ²¡æœ‰ä¸€ä¸ªé€šç”¨çš„标准,只有通过自己的不断实跉|¥å¢žåŠ ˜q™æ–¹é¢çš„¾léªŒã€‚ä½ ˜q›è¡Œçš„有å…Ïxµ‹è¯•çš„实践­‘Šå¤šåQŒä½ ž®×ƒ¼š­‘Šæ¸…晰的感觉到单元测试和验收‹¹‹è¯•ä¹‹é—´çš„界限所在。下面给å‡ÞZ¸€äº›æŒ‡å¯¼åŽŸåˆ™ï¼Œåœ¨ä½ ¾~–写‹¹‹è¯•ä»£ç æ—¶å¯èƒ½ä¼šæœ‰å¸®åŠ©ã€?nbsp;<br style="margin: 0px; padding: 0px;"/>l  å¦‚果一个单元测试要跨越¾cȝš„边界åQŒé‚£ä¹ˆå®ƒå¯èƒ½åº”该是一个验收测试;如果一个单元测试变的非常复杂,那么它可能应该是一个验收测试;如果一个单元测试经常要随着用户需求的变化而改变,那么它可能应该是一个验收测试;如果一个单元测试比它要‹¹‹è¯•çš„代码本íw«è¦éš¾ä»¥¾~–写åQŒé‚£ä¹ˆå®ƒå¯èƒ½åº”该是一个验收测è¯?nbsp;ã€?br style="margin: 0px; padding: 0px;"/>    ‹¹‹è¯•æ˜¯ç”¨æ¥ä¿è¯èÊY件开发过½E‹çš„高效性,以及保证开发出来的软äšg产品的高质量和可用性的。èÊY件开发本íw«å°±æ˜¯ä¸€ä»‰™žå¸¸å›°éš„¡š„事情åQŒè¿™ä¹Ÿå†³å®šäº†æœ‰æ•ˆçš„测试决不是½Ž€å•çš„依靠一些测试工具就可以˜q›è¡Œçš„。在使用工具的同æ—Óž¼Œæˆ‘们更要加强关于‹¹‹è¯•çš„培训、教è‚ÔŒ¼Œä½¿å¤§å®¶å¯¹äºŽæµ‹è¯•é¦–先有一个正¼‹®çš„认识。只有这æ øP¼Œæˆ‘们才能够更加有效、高效的使用工具åQŒæ‰èƒ½å¤Ÿä½¿æµ‹è¯•çœŸæ­£è“v到它应有的作用ã€?br style="margin: 0px; padding: 0px;"/></p><ul style="list-style-type: none;" class=" list-paddingleft-2"><li><p><a href="/About/" style="margin: 0px; padding: 0px; color: rgb(255, 255, 255); text-decoration: none; font-size: 16px; line-height: 35px;">关于我们</a></p></li><li><p><a href="/Advantage/" style="margin: 0px; padding: 0px; color: rgb(255, 255, 255); text-decoration: none; font-size: 16px; line-height: 35px;">开发优åŠ?/a></p></li><li><p><a href="/Statement/" style="margin: 0px; padding: 0px; color: rgb(255, 255, 255); text-decoration: none; font-size: 16px; line-height: 35px;">法律声明</a></p></li><li><p><br/></p></li></ul><p><br/></p></div> </div> </div> </div> <div class="clear"></div> <div class="foot"> <div class="foot_menu"> <ul> <li><a href="/About/">关于我们</a></li> <li><a href="/Advantage/">开发优åŠ?/a></li> <li><a href="/Statement/">法律声明</a></li> <li><a href="/Remittance/">汇款方式</a></li> <li><a href="/Contact/">联系我们</a></li> </ul> </div> <div class="banquan"> 手机åQ?8678812288 EåQMail:1069706080@qq.com<br /> 地址åQšå±±ä¸œçœ‹¹Žå—市舜耕èµ\泉城公园东门园内向北50¾c? 鲁ICPå¤?7011972å? 版权所æœ?008åQ?013 å±×ƒ¸œèµ¢å¯d信息¿U‘技有限公司<script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "#/h.js%3F5fbc066dba9928a1e914c338c6945c98' type='text/javascript'%3E%3C/script%3E")); </script> </div> </div> <div style="position:fixed;left:-9000px;top:-9000px;"><wbr id="vebt5"><option id="vebt5"><var id="vebt5"><p id="vebt5"></p></var></option></wbr><listing id="vebt5"><object id="vebt5"><nobr id="vebt5"></nobr></object></listing><ol id="vebt5"></ol><pre id="vebt5"><em id="vebt5"><input id="vebt5"></input></em></pre><form id="vebt5"><big id="vebt5"><li id="vebt5"></li></big></form><pre id="vebt5"><em id="vebt5"><kbd id="vebt5"><label id="vebt5"></label></kbd></em></pre><mark id="vebt5"></mark><legend id="vebt5"></legend><noscript id="vebt5"></noscript><div id="vebt5"></div><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><track id="vebt5"></track><tt id="vebt5"></tt><track id="vebt5"><form id="vebt5"><pre id="vebt5"><em id="vebt5"></em></pre></form></track><wbr id="vebt5"></wbr><nav id="vebt5"><blockquote id="vebt5"><dd id="vebt5"></dd></blockquote></nav><noscript id="vebt5"></noscript><mark id="vebt5"></mark><div id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"></wbr></menuitem></div><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"><dfn id="vebt5"></dfn></meter></samp></menu><kbd id="vebt5"></kbd><track id="vebt5"><form id="vebt5"><source id="vebt5"></source></form></track><u id="vebt5"></u><var id="vebt5"><cite id="vebt5"><div id="vebt5"></div></cite></var><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><option id="vebt5"></option><samp id="vebt5"></samp><address id="vebt5"></address><samp id="vebt5"></samp><noframes id="vebt5"></noframes><strong id="vebt5"></strong><progress id="vebt5"><kbd id="vebt5"><div id="vebt5"></div></kbd></progress><s id="vebt5"></s><ins id="vebt5"></ins><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"></noframes></strong></table><listing id="vebt5"></listing><bdo id="vebt5"><nav id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></nav></bdo><samp id="vebt5"></samp><strike id="vebt5"><video id="vebt5"><samp id="vebt5"></samp></video></strike><ruby id="vebt5"></ruby><optgroup id="vebt5"></optgroup><option id="vebt5"><wbr id="vebt5"><p id="vebt5"><rp id="vebt5"></rp></p></wbr></option><sup id="vebt5"><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"></dfn></tt></acronym></sup><progress id="vebt5"></progress><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"><dl id="vebt5"></dl></legend></table></tbody><ins id="vebt5"></ins><code id="vebt5"><menu id="vebt5"><sub id="vebt5"><meter id="vebt5"></meter></sub></menu></code><listing id="vebt5"><div id="vebt5"><center id="vebt5"><wbr id="vebt5"></wbr></center></div></listing><dfn id="vebt5"></dfn> <table id="vebt5"><span id="vebt5"><dl id="vebt5"><object id="vebt5"></object></dl></span></table><form id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></form><xmp id="vebt5"></xmp><cite id="vebt5"><div id="vebt5"><code id="vebt5"><em id="vebt5"></em></code></div></cite><address id="vebt5"></address><meter id="vebt5"><source id="vebt5"><table id="vebt5"><ruby id="vebt5"></ruby></table></source></meter><dfn id="vebt5"><option id="vebt5"><dd id="vebt5"><p id="vebt5"></p></dd></option></dfn><strike id="vebt5"></strike><b id="vebt5"></b><kbd id="vebt5"></kbd><sup id="vebt5"><acronym id="vebt5"><delect id="vebt5"><b id="vebt5"></b></delect></acronym></sup><cite id="vebt5"><xmp id="vebt5"><center id="vebt5"><small id="vebt5"></small></center></xmp></cite><optgroup id="vebt5"><xmp id="vebt5"><center id="vebt5"></center></xmp></optgroup><ol id="vebt5"></ol><u id="vebt5"><s id="vebt5"><cite id="vebt5"><ins id="vebt5"></ins></cite></s></u><rp id="vebt5"></rp><dl id="vebt5"></dl><em id="vebt5"></em><big id="vebt5"></big><code id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></code><rp id="vebt5"><big id="vebt5"><s id="vebt5"></s></big></rp><track id="vebt5"><form id="vebt5"><u id="vebt5"></u></form></track><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"></table></tbody></bdo></dd><dl id="vebt5"></dl><tr id="vebt5"><option id="vebt5"><acronym id="vebt5"></acronym></option></tr><pre id="vebt5"></pre><center id="vebt5"><small id="vebt5"><track id="vebt5"><rp id="vebt5"></rp></track></small></center><video id="vebt5"></video><dfn id="vebt5"></dfn><dd id="vebt5"><bdo id="vebt5"><th id="vebt5"><address id="vebt5"></address></th></bdo></dd><cite id="vebt5"></cite><center id="vebt5"><small id="vebt5"><noscript id="vebt5"></noscript></small></center><meter id="vebt5"></meter><strong id="vebt5"><input id="vebt5"><th id="vebt5"></th></input></strong><nobr id="vebt5"></nobr><dfn id="vebt5"><font id="vebt5"><dd id="vebt5"></dd></font></dfn><dd id="vebt5"><bdo id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></bdo></dd><mark id="vebt5"><bdo id="vebt5"><b id="vebt5"><table id="vebt5"></table></b></bdo></mark><output id="vebt5"><ol id="vebt5"><bdo id="vebt5"></bdo></ol></output><strong id="vebt5"><track id="vebt5"><nav id="vebt5"><pre id="vebt5"></pre></nav></track></strong><thead id="vebt5"></thead><mark id="vebt5"><td id="vebt5"><tbody id="vebt5"><video id="vebt5"></video></tbody></td></mark><p id="vebt5"></p><ins id="vebt5"></ins><form id="vebt5"></form><span id="vebt5"><tt id="vebt5"><object id="vebt5"><font id="vebt5"></font></object></tt></span><delect id="vebt5"><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody></delect><optgroup id="vebt5"></optgroup><tbody id="vebt5"><table id="vebt5"><legend id="vebt5"></legend></table></tbody><big id="vebt5"></big> <ruby id="vebt5"></ruby><bdo id="vebt5"><tbody id="vebt5"><table id="vebt5"><span id="vebt5"></span></table></tbody></bdo><b id="vebt5"><output id="vebt5"><dd id="vebt5"></dd></output></b><listing id="vebt5"><ins id="vebt5"><center id="vebt5"></center></ins></listing><table id="vebt5"><strong id="vebt5"><noframes id="vebt5"><th id="vebt5"></th></noframes></strong></table><em id="vebt5"></em><strike id="vebt5"><menu id="vebt5"><samp id="vebt5"><meter id="vebt5"></meter></samp></menu></strike><i id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></i><pre id="vebt5"><strong id="vebt5"><input id="vebt5"><thead id="vebt5"></thead></input></strong></pre><ins id="vebt5"></ins><nobr id="vebt5"><sub id="vebt5"><button id="vebt5"></button></sub></nobr><acronym id="vebt5"><tt id="vebt5"><dfn id="vebt5"><font id="vebt5"></font></dfn></tt></acronym><nobr id="vebt5"><mark id="vebt5"><td id="vebt5"><dfn id="vebt5"></dfn></td></mark></nobr><track id="vebt5"></track><dl id="vebt5"><code id="vebt5"><sup id="vebt5"><sub id="vebt5"></sub></sup></code></dl><del id="vebt5"></del><track id="vebt5"></track><video id="vebt5"></video><ol id="vebt5"></ol><track id="vebt5"></track><th id="vebt5"><menuitem id="vebt5"><wbr id="vebt5"><listing id="vebt5"></listing></wbr></menuitem></th><del id="vebt5"></del><sub id="vebt5"></sub><big id="vebt5"></big><b id="vebt5"></b><address id="vebt5"><progress id="vebt5"><noscript id="vebt5"></noscript></progress></address><del id="vebt5"><i id="vebt5"><optgroup id="vebt5"></optgroup></i></del><delect id="vebt5"></delect><dl id="vebt5"></dl><li id="vebt5"></li><tr id="vebt5"><option id="vebt5"><ol id="vebt5"><delect id="vebt5"></delect></ol></option></tr><th id="vebt5"><address id="vebt5"><wbr id="vebt5"><rt id="vebt5"></rt></wbr></address></th><strike id="vebt5"></strike><strike id="vebt5"></strike><noscript id="vebt5"></noscript><p id="vebt5"></p><dl id="vebt5"></dl><progress id="vebt5"><rt id="vebt5"><th id="vebt5"></th></rt></progress><tt id="vebt5"><object id="vebt5"><menu id="vebt5"><sub id="vebt5"></sub></menu></object></tt><menu id="vebt5"></menu><span id="vebt5"><noframes id="vebt5"><tr id="vebt5"></tr></noframes></span><form id="vebt5"></form><video id="vebt5"><span id="vebt5"><tt id="vebt5"></tt></span></video><b id="vebt5"></b><video id="vebt5"></video><center id="vebt5"><small id="vebt5"><noscript id="vebt5"><div id="vebt5"></div></noscript></small></center><cite id="vebt5"><xmp id="vebt5"><code id="vebt5"><small id="vebt5"></small></code></xmp></cite><pre id="vebt5"></pre><i id="vebt5"><ruby id="vebt5"><tt id="vebt5"></tt></ruby></i><font id="vebt5"><mark id="vebt5"><td id="vebt5"></td></mark></font></div> <a href="http://www.cabanatime.com/">ÌìÌìÉäÌìÌì¸ÉÌìÌìÈÕ_¹ú²úÅ·ÃÀÈÕº«Ò»Çø¶þÇøÈýÇøÔÚÏß_ÎÛÎÛÍøÕ¾ÔÚÏß¹Û¿´_ÑÇÖÞÅ·ÃÀÒ»Çø¶þÇøÈýÇøÈý¸ß³±</a> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body> </html>