ï»?!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;"><dfn id="orz4q"><noscript id="orz4q"><xmp id="orz4q"><output id="orz4q"></output></xmp></noscript></dfn><strong id="orz4q"><dl id="orz4q"></dl></strong><ol id="orz4q"><p id="orz4q"><nav id="orz4q"><pre id="orz4q"></pre></nav></p></ol><dfn id="orz4q"></dfn><small id="orz4q"><optgroup id="orz4q"></optgroup></small><center id="orz4q"><small id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></small></center><table id="orz4q"><ruby id="orz4q"><dl id="orz4q"><del id="orz4q"></del></dl></ruby></table><rt id="orz4q"></rt><output id="orz4q"></output><mark id="orz4q"></mark><dl id="orz4q"></dl><div id="orz4q"></div><optgroup id="orz4q"></optgroup><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><video id="orz4q"></video><object id="orz4q"><sup id="orz4q"></sup></object><em id="orz4q"></em><div id="orz4q"></div><progress id="orz4q"><listing id="orz4q"><th id="orz4q"><option id="orz4q"></option></th></listing></progress><meter id="orz4q"></meter><acronym id="orz4q"><rt id="orz4q"></rt></acronym><label id="orz4q"></label><track id="orz4q"></track><noscript id="orz4q"><div id="orz4q"><pre id="orz4q"><ol id="orz4q"></ol></pre></div></noscript><s id="orz4q"><kbd id="orz4q"></kbd></s><form id="orz4q"></form><var id="orz4q"></var><dl id="orz4q"><strike id="orz4q"></strike></dl><xmp id="orz4q"><strike id="orz4q"><small id="orz4q"><samp id="orz4q"></samp></small></strike></xmp><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><progress id="orz4q"></progress></address></thead></listing><del id="orz4q"></del><object id="orz4q"><address id="orz4q"><samp id="orz4q"><rt id="orz4q"></rt></samp></address></object><ruby id="orz4q"></ruby><noframes id="orz4q"></noframes><code id="orz4q"></code><var id="orz4q"></var><nav id="orz4q"></nav><u id="orz4q"></u><span id="orz4q"></span><li id="orz4q"></li><tbody id="orz4q"><table id="orz4q"><span id="orz4q"><dl id="orz4q"></dl></span></table></tbody><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><var id="orz4q"></var><nav id="orz4q"></nav><rt id="orz4q"></rt><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><u id="orz4q"><s id="orz4q"></s></u><pre id="orz4q"><em id="orz4q"><p id="orz4q"><rp id="orz4q"></rp></p></em></pre><rt id="orz4q"><tr id="orz4q"></tr></rt> <pre id="orz4q"></pre><wbr id="orz4q"><rt id="orz4q"><tr id="orz4q"><output id="orz4q"></output></tr></rt></wbr><xmp id="orz4q"><pre id="orz4q"><em id="orz4q"><p id="orz4q"></p></em></pre></xmp><sub id="orz4q"></sub><p id="orz4q"></p><td id="orz4q"><tbody id="orz4q"></tbody></td><code id="orz4q"><video id="orz4q"><track id="orz4q"><tt id="orz4q"></tt></track></video></code><thead id="orz4q"></thead><source id="orz4q"><nobr id="orz4q"><cite id="orz4q"><td id="orz4q"></td></cite></nobr></source><del id="orz4q"></del><sub id="orz4q"></sub><code id="orz4q"></code><code id="orz4q"><menu id="orz4q"></menu></code><legend id="orz4q"><button id="orz4q"><source id="orz4q"><i id="orz4q"></i></source></button></legend><delect id="orz4q"></delect><ins id="orz4q"></ins><i id="orz4q"></i><pre id="orz4q"></pre><mark id="orz4q"></mark><b id="orz4q"><table id="orz4q"><strong id="orz4q"><noframes id="orz4q"></noframes></strong></table></b><source id="orz4q"></source><small id="orz4q"><optgroup id="orz4q"></optgroup></small><dl id="orz4q"></dl><center id="orz4q"><em id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></em></center><address id="orz4q"></address><tt id="orz4q"><code id="orz4q"><nobr id="orz4q"><sub id="orz4q"></sub></nobr></code></tt><strong id="orz4q"></strong><delect id="orz4q"></delect><nobr id="orz4q"></nobr><strike id="orz4q"></strike><strong id="orz4q"></strong><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><menu id="orz4q"></menu><menu id="orz4q"></menu><small id="orz4q"><optgroup id="orz4q"></optgroup></small><input id="orz4q"><label id="orz4q"></label></input><big id="orz4q"><nobr id="orz4q"><track id="orz4q"><button id="orz4q"></button></track></nobr></big><sub id="orz4q"></sub><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><tbody id="orz4q"><table id="orz4q"></table></tbody><font id="orz4q"><mark id="orz4q"><meter id="orz4q"><tbody id="orz4q"></tbody></meter></mark></font><dl id="orz4q"><strike id="orz4q"><i id="orz4q"><samp id="orz4q"></samp></i></strike></dl><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><strong id="orz4q"><input id="orz4q"></input></strong><wbr id="orz4q"></wbr><legend id="orz4q"></legend><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><center id="orz4q"><ol id="orz4q"><noscript id="orz4q"><b id="orz4q"></b></noscript></ol></center> <u id="orz4q"><s id="orz4q"></s></u><u id="orz4q"><s id="orz4q"></s></u><output id="orz4q"></output><ruby id="orz4q"></ruby><wbr id="orz4q"></wbr><ins id="orz4q"></ins><s id="orz4q"><kbd id="orz4q"></kbd></s><b id="orz4q"></b><nobr id="orz4q"></nobr><strike id="orz4q"></strike><input id="orz4q"><label id="orz4q"></label></input><em id="orz4q"></em><form id="orz4q"></form><tbody id="orz4q"><table id="orz4q"><legend id="orz4q"><dl id="orz4q"></dl></legend></table></tbody><tr id="orz4q"></tr><dd id="orz4q"></dd><li id="orz4q"></li><code id="orz4q"></code><menu id="orz4q"><samp id="orz4q"></samp></menu><p id="orz4q"><rp id="orz4q"><u id="orz4q"><strong id="orz4q"></strong></u></rp></p><pre id="orz4q"><em id="orz4q"></em></pre><tbody id="orz4q"><table id="orz4q"></table></tbody><ol id="orz4q"><p id="orz4q"><label id="orz4q"><blockquote id="orz4q"></blockquote></label></p></ol><tr id="orz4q"><option id="orz4q"></option></tr><legend id="orz4q"></legend><p id="orz4q"><rp id="orz4q"><output id="orz4q"><strong id="orz4q"></strong></output></rp></p><menu id="orz4q"></menu><rt id="orz4q"></rt><rp id="orz4q"></rp><optgroup id="orz4q"></optgroup><del id="orz4q"></del><button id="orz4q"></button><rp id="orz4q"></rp><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><thead id="orz4q"><menuitem id="orz4q"><progress id="orz4q"><noscript id="orz4q"></noscript></progress></menuitem></thead><sup id="orz4q"><acronym id="orz4q"></acronym></sup><center id="orz4q"></center><font id="orz4q"></font><noscript id="orz4q"><div id="orz4q"></div></noscript><font id="orz4q"></font><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><meter id="orz4q"></meter><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><nav id="orz4q"></nav><input id="orz4q"><label id="orz4q"><menuitem id="orz4q"><progress id="orz4q"></progress></menuitem></label></input><address id="orz4q"></address><dl id="orz4q"></dl><progress id="orz4q"></progress><video id="orz4q"></video></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.themmauniversity.com" style="margin-right:10px">‹¹Žå—软äšg开å?/a></strong><strong><a href="http://www.themmauniversity.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;"><dfn id="orz4q"><noscript id="orz4q"><xmp id="orz4q"><output id="orz4q"></output></xmp></noscript></dfn><strong id="orz4q"><dl id="orz4q"></dl></strong><ol id="orz4q"><p id="orz4q"><nav id="orz4q"><pre id="orz4q"></pre></nav></p></ol><dfn id="orz4q"></dfn><small id="orz4q"><optgroup id="orz4q"></optgroup></small><center id="orz4q"><small id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></small></center><table id="orz4q"><ruby id="orz4q"><dl id="orz4q"><del id="orz4q"></del></dl></ruby></table><rt id="orz4q"></rt><output id="orz4q"></output><mark id="orz4q"></mark><dl id="orz4q"></dl><div id="orz4q"></div><optgroup id="orz4q"></optgroup><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><video id="orz4q"></video><object id="orz4q"><sup id="orz4q"></sup></object><em id="orz4q"></em><div id="orz4q"></div><progress id="orz4q"><listing id="orz4q"><th id="orz4q"><option id="orz4q"></option></th></listing></progress><meter id="orz4q"></meter><acronym id="orz4q"><rt id="orz4q"></rt></acronym><label id="orz4q"></label><track id="orz4q"></track><noscript id="orz4q"><div id="orz4q"><pre id="orz4q"><ol id="orz4q"></ol></pre></div></noscript><s id="orz4q"><kbd id="orz4q"></kbd></s><form id="orz4q"></form><var id="orz4q"></var><dl id="orz4q"><strike id="orz4q"></strike></dl><xmp id="orz4q"><strike id="orz4q"><small id="orz4q"><samp id="orz4q"></samp></small></strike></xmp><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><progress id="orz4q"></progress></address></thead></listing><del id="orz4q"></del><object id="orz4q"><address id="orz4q"><samp id="orz4q"><rt id="orz4q"></rt></samp></address></object><ruby id="orz4q"></ruby><noframes id="orz4q"></noframes><code id="orz4q"></code><var id="orz4q"></var><nav id="orz4q"></nav><u id="orz4q"></u><span id="orz4q"></span><li id="orz4q"></li><tbody id="orz4q"><table id="orz4q"><span id="orz4q"><dl id="orz4q"></dl></span></table></tbody><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><var id="orz4q"></var><nav id="orz4q"></nav><rt id="orz4q"></rt><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><u id="orz4q"><s id="orz4q"></s></u><pre id="orz4q"><em id="orz4q"><p id="orz4q"><rp id="orz4q"></rp></p></em></pre><rt id="orz4q"><tr id="orz4q"></tr></rt> <pre id="orz4q"></pre><wbr id="orz4q"><rt id="orz4q"><tr id="orz4q"><output id="orz4q"></output></tr></rt></wbr><xmp id="orz4q"><pre id="orz4q"><em id="orz4q"><p id="orz4q"></p></em></pre></xmp><sub id="orz4q"></sub><p id="orz4q"></p><td id="orz4q"><tbody id="orz4q"></tbody></td><code id="orz4q"><video id="orz4q"><track id="orz4q"><tt id="orz4q"></tt></track></video></code><thead id="orz4q"></thead><source id="orz4q"><nobr id="orz4q"><cite id="orz4q"><td id="orz4q"></td></cite></nobr></source><del id="orz4q"></del><sub id="orz4q"></sub><code id="orz4q"></code><code id="orz4q"><menu id="orz4q"></menu></code><legend id="orz4q"><button id="orz4q"><source id="orz4q"><i id="orz4q"></i></source></button></legend><delect id="orz4q"></delect><ins id="orz4q"></ins><i id="orz4q"></i><pre id="orz4q"></pre><mark id="orz4q"></mark><b id="orz4q"><table id="orz4q"><strong id="orz4q"><noframes id="orz4q"></noframes></strong></table></b><source id="orz4q"></source><small id="orz4q"><optgroup id="orz4q"></optgroup></small><dl id="orz4q"></dl><center id="orz4q"><em id="orz4q"><track id="orz4q"><rp id="orz4q"></rp></track></em></center><address id="orz4q"></address><tt id="orz4q"><code id="orz4q"><nobr id="orz4q"><sub id="orz4q"></sub></nobr></code></tt><strong id="orz4q"></strong><delect id="orz4q"></delect><nobr id="orz4q"></nobr><strike id="orz4q"></strike><strong id="orz4q"></strong><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><menu id="orz4q"></menu><menu id="orz4q"></menu><small id="orz4q"><optgroup id="orz4q"></optgroup></small><input id="orz4q"><label id="orz4q"></label></input><big id="orz4q"><nobr id="orz4q"><track id="orz4q"><button id="orz4q"></button></track></nobr></big><sub id="orz4q"></sub><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><listing id="orz4q"><thead id="orz4q"><address id="orz4q"><wbr id="orz4q"></wbr></address></thead></listing><tbody id="orz4q"><table id="orz4q"></table></tbody><font id="orz4q"><mark id="orz4q"><meter id="orz4q"><tbody id="orz4q"></tbody></meter></mark></font><dl id="orz4q"><strike id="orz4q"><i id="orz4q"><samp id="orz4q"></samp></i></strike></dl><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><strong id="orz4q"><input id="orz4q"></input></strong><wbr id="orz4q"></wbr><legend id="orz4q"></legend><address id="orz4q"><progress id="orz4q"><noframes id="orz4q"><tr id="orz4q"></tr></noframes></progress></address><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><center id="orz4q"><ol id="orz4q"><noscript id="orz4q"><b id="orz4q"></b></noscript></ol></center> <u id="orz4q"><s id="orz4q"></s></u><u id="orz4q"><s id="orz4q"></s></u><output id="orz4q"></output><ruby id="orz4q"></ruby><wbr id="orz4q"></wbr><ins id="orz4q"></ins><s id="orz4q"><kbd id="orz4q"></kbd></s><b id="orz4q"></b><nobr id="orz4q"></nobr><strike id="orz4q"></strike><input id="orz4q"><label id="orz4q"></label></input><em id="orz4q"></em><form id="orz4q"></form><tbody id="orz4q"><table id="orz4q"><legend id="orz4q"><dl id="orz4q"></dl></legend></table></tbody><tr id="orz4q"></tr><dd id="orz4q"></dd><li id="orz4q"></li><code id="orz4q"></code><menu id="orz4q"><samp id="orz4q"></samp></menu><p id="orz4q"><rp id="orz4q"><u id="orz4q"><strong id="orz4q"></strong></u></rp></p><pre id="orz4q"><em id="orz4q"></em></pre><tbody id="orz4q"><table id="orz4q"></table></tbody><ol id="orz4q"><p id="orz4q"><label id="orz4q"><blockquote id="orz4q"></blockquote></label></p></ol><tr id="orz4q"><option id="orz4q"></option></tr><legend id="orz4q"></legend><p id="orz4q"><rp id="orz4q"><output id="orz4q"><strong id="orz4q"></strong></output></rp></p><menu id="orz4q"></menu><rt id="orz4q"></rt><rp id="orz4q"></rp><optgroup id="orz4q"></optgroup><del id="orz4q"></del><button id="orz4q"></button><rp id="orz4q"></rp><dfn id="orz4q"><font id="orz4q"><sub id="orz4q"><td id="orz4q"></td></sub></font></dfn><nav id="orz4q"><blockquote id="orz4q"></blockquote></nav><thead id="orz4q"><menuitem id="orz4q"><progress id="orz4q"><noscript id="orz4q"></noscript></progress></menuitem></thead><sup id="orz4q"><acronym id="orz4q"></acronym></sup><center id="orz4q"></center><font id="orz4q"></font><noscript id="orz4q"><div id="orz4q"></div></noscript><font id="orz4q"></font><wbr id="orz4q"><noscript id="orz4q"></noscript></wbr><meter id="orz4q"></meter><optgroup id="orz4q"><xmp id="orz4q"><big id="orz4q"><em id="orz4q"></em></big></xmp></optgroup><nav id="orz4q"></nav><input id="orz4q"><label id="orz4q"><menuitem id="orz4q"><progress id="orz4q"></progress></menuitem></label></input><address id="orz4q"></address><dl id="orz4q"></dl><progress id="orz4q"></progress><video id="orz4q"></video></div> <a href="http://www.themmauniversity.com/">ÈÕº«¾«Æ·ÎÞÂëÒ»Çø¶þÇøÑÇÖÞAV_ÃÛÔÂa¢¥Å·ÃÀÈÕº«¹ú²ú¾«Æ·_±©²ÙÃÀÅ®Òõ²¿¸ß³±ÌìÁËÕÚµ²Ãâ·Ñ¿´_Å·¾«²úÆ·Ò»ÇøÒ»ÇøÈýÇø</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>