<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>软件测试 杂文集 Software Testing   by Cheno</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/cheno/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/cheno/feed.xml</link>
    <description>我的博客，软件测试，开发以及其他 software testing  by Cheno</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:20:46 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>软件测试价值的转变</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/23</link>
      <pubDate>Thu, 14 Jun 2012 02:46:34 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2012/06/14/23/</guid>
      <description><![CDATA[软件测试的历史应该从程序诞生的那一天就有了，随着软件的发展，特别是互联网应用对软件发布的影响， 软件测试的价值也在逐渐发生了很多变化。...]]></description>
      <content:encoded><![CDATA[<p>软件测试的历史应该从程序诞生的那一天就有了，随着软件的发展，特别是互联网应用对软件发布的影响， 软件测试的价值也在逐渐发生了很多变化。 软件测试从单纯的发现软件缺陷，发展到“软件质量度量”，“预防质量缺陷” 等更大的质量范畴。随着从单纯的“质量保证” ，发展到“开发效率的提升”。</p>  <p>&#160;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/18/metablogapi/5875.image_2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-18-metablogapi/5875.image_5F00_2.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/18/metablogapi/3718.image_thumb.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-18-metablogapi/3718.image_5F00_thumb.png" width="299" height="222" /></a></p>  <p>&#160;</p>  <p>首先，我们回顾一下软件测试的定义，</p>  <p>1979年Fred Mayer发布的测试经典 《软件测试的艺术》(<a href="https://www.amazon.com/Art-Software-Testing-Second/dp/0471469122/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1254811242&amp;sr=1-1">The art of software testing</a> )，它将软件测试定义为“带着发现错误的目的，执行被测软件”，简单的说就是通常人说的：软件测试就是找缺陷，找Bug。</p>  <p>1995年Stephen H.Hank 写过一本书(《软件质量工程的度量和模型》) <a href="https://www.amazon.com/s/ref=pd_lpo_k2_dp_sr_sq_top?ie=UTF8&amp;keywords=metrics%20and%20models%20in%20software%20quality%20engineering&amp;index=blended&amp;pf_rd_p=1278548962&amp;pf_rd_s=lpo-top-stripe-1&amp;pf_rd_t=201&amp;pf_rd_i=B000OORZW8&amp;pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_r=17YWZG8J1WDAZ2C34FNH">metrics and models in software quality engineering</a>，它用工程的方法引入软件质量度量和软件质量周期的管理，质量度量包括代码覆盖率，测试用例的覆盖率和执行情况，用户满意程度，运维的质量管理等等。</p>  <p>2007年 微软的几个资深测试人员写了一本书&quot;<a href="https://www.amazon.com/Practical-Defect-Prevention-Practices-Microsoft/dp/0735622531/ref=sr_1_1?ie=UTF8&amp;qid=1339664917&amp;sr=8-1">The Practical Guide to Defect Prevention</a> &quot;(《质量缺陷预防实践指南》 讲的就是如何通过在软件过程，方法和技术上，预防软件缺陷的产生。</p>  <p>2008年 喜欢数据说话的Caper Jones 推出了 &quot;Global Analysis of Productivity and Quality&quot;《全面分析生产率和质量》, 从经济学，软件流程等的方面分析了生产率和软件质量之间的关系，其中也包括一些好的实践。</p>  <p>然后，我们再看一看软件公司的变化</p>  <p>微软：比尔 盖茨说过 “微软是一个测试公司”，可以说微软是非常重视软件测试的，在有些团队，软件测试人员数量超过开发人员。在光盘发布软件的时代，修复Bug的成本是非常高的。随着，Internet 应用的发展，应用软件有了更加快速的发布周期，服务器端修复Bug成本降低了很多，同时通过引入Testing In Production。微软也在引入一些变化，微软的开发人员有更多的责任，进行质量保证，包括单元测试，产品中缺陷的支持等，软件测试人员更加注重E2E的测试，测试框架，提高整个软件的开发效率等。</p>  <p>谷歌：谷歌的开发和测试人员的比例是10:1，同时测试人员属于Productivity的部门，测试团队大部分是由丰富经验的测试人员，能够在新项目刚开始的时候，帮助建立测试框架，将其他项目好的测试经验带到这个项目中，项目执行起来以后，开发人员来编写，执行测试用例，并且对产品的缺陷直接负责。</p>]]></content:encoded>
    </item>
    <item>
      <title>Testing In Production 在生产环境中进行测试 摘要</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/testing-in-production</link>
      <pubDate>Tue, 05 Jun 2012 01:48:21 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2012/06/05/testing-in-production/</guid>
      <description><![CDATA[Testing In Production 的概念大约出现3年前，那时候Web Service正在风靡Internet，各种系统都走向更加可扩展的架构，这使得A/B...]]></description>
      <content:encoded><![CDATA[<p>Testing In Production 的概念大约出现3年前，那时候Web Service正在风靡Internet，各种系统都走向更加可扩展的架构，这使得A/B Testing和后期的数据分析更加容易。同时，整个互联网应用对用户体验提出了更高的要求，对算法的精准性的要求更加严格。另外，软件开发的节奏明显加快，这使得测试无法在发布前做的非常完善。快节奏的软件发布，对测试有了更高的要求。 “先发布，后测试”成为一种加快发布节奏的一种必要的方法。</p>  <p>动物学家达尔文说过 ”世界上进化下来的动物，并不是那些最强大的动物，也不是那些最聪明的动物，而是那些最能够适应变化(Responsive to change)的动物”，例如说老鼠，人，蚂蚁等等。软件系统也一样，能够传承发扬的软件，能够快速适应变化化。</p>  <p>TiP的核心思想就是通过在生产环境里面测试，最小化产品风险，加快发布节奏。TiP通过暴露新代码给有限用户，减少缺陷可能带来的负面影响，通过在产品中暴露这些新代码，可以快速获得这些新代码的反馈，这些反馈来之于真实的用户，而不是少量的测试人员和有限的测试用例。另外，一旦发现新代码有严重的缺陷，那么TiP需要快速修复这些缺陷，通过发布新版本或则滚回到老版本。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/18/metablogapi/2766.image_2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-18-metablogapi/2766.image_5F00_2.png"><img style="margin: 0px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/29/18/metablogapi/5383.image_thumb.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-18-metablogapi/5383.image_5F00_thumb.png" width="209" height="110" /></a></p>  <p>那么这是不是对软件质量的一种妥协呢？ 我觉得不是，相反在生产环境中测试可以更好的满足用户,它是传统发布前测试的一个积极的补充。例如，TiP可以帮我们提高测试覆盖率，找到一些平时无法测试到的场景。</p>  <p>我相信，所有的互联网软件都需要支持TiP，这是互联网软件的特性决定的：灵活的软件架构，快速的发布周期。</p>  <p>考虑一下几个问题可以帮助我们思考什么类型的软件最适合TiP方法。</p>  <ul>   <li> 用户体验和经济利益影响的程度</li>    <li>如果产品有问题，是否有能力快速检查产品中的问题，并且快速回退到没有问题的版本？</li>    <li>软件发布的频率?</li>    <li>进行TiP 所带来的成本和收益</li> </ul>  <p>这里有几个TiP的例子</p>  <p>1) 微软：在互联网的产品开发过程中，微软也大量利用了TiP的方法</p>  <blockquote>   <p>a. 很多用户场景的改进，都是通过A/B测试获得最好的效果</p>    <p>b. 算法实验，在灵活的平台中进行算法的调优和筛选</p> </blockquote>  <p>2) Facebook : Facebook如何发布代码的 <a href="https://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/">Link</a></p>  <blockquote>   <p>a. Facebook有多个级别的代码部署 (内部的，少量外部的，全部外部的等等..),</p>    <p>b. 如果有问题出现，工程师马上修复问题；然后重新发布</p> </blockquote>  <blockquote>   <p>c. Ops负责部署的实际过程，包括检测产品的健康状态（错误日志，CPU，内存，甚至包括用户的行为变化等）</p> </blockquote>  <p>3) Google： 非常善于做A/B测试</p>  <blockquote>   <p>a. 谷歌在算法改进方面，就是利用在产品中的实验平台。一个搜索结果中可能包括多个算法的结果，另外不同的搜索可能触发不同的算法。最后通过用户的反馈，对算法进行评价和挑选。</p> </blockquote>  <p>一些参考资料：</p>  <p><font size="4">人物：</font>    <br />Seth Eliot 微软测试经理，Testing in Production的倡导者 <a href="https://blogs.msdn.com/b/seliot/">Blog</a></p>  <p><font size="4">参考文章:</font></p>  <p><i>1) </i><i>Testing in Production, Your key to Engaging Customers</i>, Seth Eliot （QASIG 2011 论文：<a href="https://www.qasig.org/presentations/QASIG_Testing_in_Production-Engaging_Customers.pdf">Link</a></p>  <p><i>2) </i><i>Why testing in production is a common and costly technical malpractice</i><i> </i><i>（</i><i>IBM </i><a href="https://www.ibm.com/developerworks/cn/websphere/techjournal/1102_supauth/1102_supauth.html#author1">Mahesh Rathi</a>, <a href="https://www.ibm.com/developerworks/cn/websphere/techjournal/1102_supauth/1102_supauth.html">Link</a>）    <br />我总结一下他的主要观点，详细的请看Link:</p>  <p>1） 需要一个专用的测试环境进行测试，并且尽量模拟产品环境，否则容易引起产品的灾难性</p>  <p>2） 在生产环境中测试的复杂性和不可控性</p>  <p>3） 注意：他所谈的更多的传统的软件企业(ERP,MIS)，并非真正的需要快节奏的互联网企业。</p>]]></content:encoded>
    </item>
    <item>
      <title>VS 2010测试解读2-给测试用例做标签</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/vs-20102</link>
      <pubDate>Sat, 10 Apr 2010 22:00:22 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2010/04/10/vs-20102/</guid>
      <description><![CDATA[在VS2008中，测试列表(Test List)的管理通常是通过*.vsmdi文件。在实际开发过程中，大家发现这个功能有很大的局限性。  1) *.VSmdi中的所有测试用例需要手工加入到列表...]]></description>
      <content:encoded><![CDATA[<p>在VS2008中，测试列表(Test List)的管理通常是通过*.vsmdi文件。在实际开发过程中，大家发现这个功能有很大的局限性。</p>  <p>1) *.VSmdi中的所有测试用例需要手工加入到列表    <br />2）如果多人需要访问测试列表文件，其管理会变得很不方便</p>  <p>VS2010出来了，它通过测试分类（Test Category)，很好的解决了这个问题。其原理也很简单，通过给每个测试用例，可以设置不同的标签，在运行用例时，可以通过过滤标签的属性来运行。其方法如下：</p>  <p>步骤一: </p>  <p>为每个测试用例设置测试分类属性（Test Category），在方法的属性中增加。</p>  <pre class="code"><strong>[<span style="color: #2b91af">TestCategory</span>(<span style="color: #a31515">&quot;Nightly&quot;</span>), <span style="color: #2b91af">TestCategory</span>(<span style="color: #a31515">&quot;Weekly&quot;</span>)</strong>, <span style="color: #2b91af">TestMethod</span>()]
<span style="color: blue">public void </span>TestMethod1()
{
    <span style="color: green">//
    // TODO: Add test logic here
    //
</span>}</pre>

<p>步骤二:</p>

<p>通过测试分类，运行测试用例</p>

<p>1)从UI中，选择测试用例运行</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_13DF0/image_2.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_13DF0/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_13DF0/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_13DF0/image_thumb.png" width="538" height="146" /></a> </p>

<p>2)通过命令行运行</p>

<p>mstest /testcontainer:MyTestprojectName.dll <font color="#ff0000">/category:&quot;Nightly&amp;Weekly&quot;</font></p>

<p>在条件选择时候，可以使用&amp;或则|作为操作条件；但是在VS2010中，只能用一种操作符号</p>

<p><font color="#ff0000">&#160;</font></p>]]></content:encoded>
    </item>
    <item>
      <title>VS2010测试解读-读懂那些文件们</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/vs2010</link>
      <pubDate>Sat, 20 Mar 2010 06:42:30 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2010/03/20/vs2010/</guid>
      <description><![CDATA[Visual...]]></description>
      <content:encoded><![CDATA[<p>Visual Studio是我喜爱的一个开发IDE，从VS2003开始，到VS2005，再到VS2008，再到最新的VS2010。每一个版本的改进都是让人兴奋的，每一次使用新版本后，哪怕是Beta版，都不愿意再回到老版本。最新发布的VS2010有很多创新的功能，对测试提供了大力的支持。本文就一一解析这些新功能，让大家能够体会到VS2010的创新，具体的感受还要大家在使用过程中仔细感受。</p>  <p><img border="0" alt="" src="https://www.microsoft.com/visualstudio/en-us/content/images/vs2010_logo.png" width="196" height="105" /></p>  <p>VS2010是一个集成的开发环境(IDE)，大部分的操作都能通过界面的操作完成，通常你不需要了解文件的细节。但是读懂这些文件，能帮助你更好的理解整个测试框架，以便使用一些高级的测试功能和做一些自定义的扩展。</p>  <p>首先我们来看看一个典型的解决方案，通常放啊    <br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_2.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb.png" width="425" height="466" /></a> </p>  <p></p>  <p></p>  <p>在这个解决方案里面，我们有以下一些重要的文件和项目：</p>  <p>1）应用程序项目（被测试的应用，开发人员负责）</p>  <p>2）测试项目（测试人员负责）</p>  <p><strong>3)*.testsettings文件；</strong>     <br />在VS 2010中，自动产生两个，一个是TraceAndTestImpact.testsettings用于调试的测试设置，另外一个本地缺省的测试设置。VS2008只有本地缺省设置。</p>  <p>多说两句*.testsettings，这是运行测试的环境参数和运行参数，包括以下内容：    <br />a) 用例运行前后执行的脚本     <br />b) 是否启用数据分析（代码覆盖率，测试影响分析，模拟网络，录制视频，智能跟踪等等）很多功能都是VS2010独有的，     <br />c) 运行机器是本机还是远程机器     <br />d) 测试超时时间等 </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_4.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_1.png" width="547" height="219" /></a>&#160; <br />VS2010 增强了测试监控功能，例如智能跟踪(IntelliTrace)和视频录制（Video Recoder)，测试影响分析(Test Impact)等等</p>  <p><strong>4）*.vsmdi文件，用于管理测试用例的列表(Test List).</strong>     <br />*.vsmdi文件是管理Test List的，在VS 2010中虽然支持，但是不推荐使用了。主要原因是*.vsmdi非常不灵活，很难集中维护。取而代之的是更加自然的测试分类（Test Category)：通过给每个测试用例设置标签，运行的时候通过标签选择需要运行的测试用例。</p>  <p>为了兼容问题，VS2010 还是支持*.vsmdi。下面是*.vsmdi的一些基本格式。</p>  <p>其内容基本上包括一个树状内容的Test List 列表，各个节点通过ParentListID相连，其中包括一个特殊根节点。另外，在每个TestList中，一个TestLink代表一个测试用例，TestLink的ID是通过测试方法名，测试类名和包名等，通过MD5计算而得(而非任意值），我以前就写过一个程序，自动生成*.vsmdi文件。</p> <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_6.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_2.png" width="750" height="181" /></a>   <p><strong>运行测试</strong></p>  <p>写好测试用例就可以运行，Ctrl F5,就这么简单，能够得到测试用例运行的结果。很容易在IDE看到，测试结果，那么如何读懂后面的文件呢？</p>  <p>一次测试运行结果的目录：</p>  <p></p>  <p></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_10.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_10.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_4.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_4.png" width="589" height="131" /></a>&#160;</p>  <p>我们一步一步来解释。重要的文件有<strong>*.trx文件</strong>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_8.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_8.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_3.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_3.png" width="571" height="392" /></a> </p>  <p>在多说两句，运行结果目录。其中有In, Out 和每个TestCase的详细结果。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_12.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_5.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/VS2010_916E/image_thumb_5.png" width="562" height="125" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>虚拟化技术在软件测试的应用</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/73</link>
      <pubDate>Sun, 14 Mar 2010 07:37:10 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2010/03/14/73/</guid>
      <description><![CDATA[1）什么是虚拟化...]]></description>
      <content:encoded><![CDATA[<p><strong><font color="#008000" size="4">1）什么是虚拟化</font></strong></p>  <p>虚拟化技术很早就提出来了，但是真正走向市场是从2005年以后，那时候AMD和Intel公司都开始推出支持虚拟化技术的CPU。简单的说，虚拟机就像一个软件容器，可以安装操作系统和应用软件，像一台物理机一样运行，其有如下特点。</p>  <ul>   <li>操作系统和软件无法辨别其主机是否是虚拟机。 </li>    <li>多台虚拟机器像应用程序一样可以运行在主机上 </li> </ul>  <p><strong><font color="#008000" size="4">2) 虚拟化技术的优势</font></strong></p>  <p><strong>2.1) 提高硬件的利用率 </strong></p>  <p>&#160;&#160;&#160;&#160;&#160; 根据调查数据，通常测试实验室的硬件的使用率是很低的，平均只有10%，通过虚拟化技术可以使利用率提高到80%。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/diagram_datacenterexpense_2.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/diagram_datacenterexpense_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="diagram_datacenterexpense" border="0" alt="diagram_datacenterexpense" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/diagram_datacenterexpense_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/diagram_datacenterexpense_thumb.jpg" width="521" height="312" /></a> </p>  <p><font size="1">* IDC 的数据中心趋势调查，2007 年。</font></p>  <p>&#160;<strong>2.2) 低碳生活</strong>     <br />降低数据中心的成本（省电/空间），能源成本降低 80%。大部分机器5-15%时间处于使用状态，而空闲状态耗电量为满负荷60%以上。 </p>  <p>&#160;<strong>2.3) 高管理性</strong>     <br />    <br />通过虚拟化技术，计算机的管理（虚拟机）的管理变得更加简单，创建、修改一个计算机的操作可以瞬间内完成。这种高管理型有助于推动基础设施服务化（Infrastructure as Service）的发展。目前，有很多云计算的基础设施都是大规模使用了虚拟技术。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/SaaS20PaaS20and20IaaS_2.gif" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/SaaS20PaaS20and20IaaS_2.gif"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SaaS%20PaaS%20and%20IaaS_2" border="0" alt="SaaS%20PaaS%20and%20IaaS_2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/SaaS20PaaS20and20IaaS_2_thumb.gif" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/SaaS20PaaS20and20IaaS_2_thumb.gif" width="448" height="252" /></a> </p>  <p>大家可能对SaaS都比较熟悉，这里我解释一下IaaS和PaaS。    <br />基础设施作为服务（IaaS):计算机资源通过服务的方式提供出来，包括处理能力，存储和网络能力等等。</p>  <p>平台作为服务(PaaS):平台和工具能通过平台或API方式提供出来，提供更加高层次服务，例如数据库存储服务，J2EE服务，.NET平台等。</p>  <p><strong><font color="#008000" size="4">3. 虚拟化给软件测试带来的好处</font></strong></p>  <p>通过虚拟化技术，软件测试可以获得很多好处，以下就是一些例子；</p>  <p><strong>3.1）测试实验室(Test Lab)的建立</strong></p>  <ul>   <li>空间 </li>    <li>时间 </li>    <li>电力 </li> </ul>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_2.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_thumb.png" width="490" height="239" /></a> </p>  <p>如图所示的一个例子:168 台式机，被12个服务器主机代替。省空间，省电，方便管理，大大降低了测试实验室建设的成本。    <br />    <br />大部分的测试环境对测试机器的性能要求都不是很高（性能测试除外），那么对于这种情况，虚拟机是非常适合的解决方案。虚拟机可以用于测试实验室(Test Lab)的构建，支持自动化测试，也可以为远程的测试和开发人员提供机器服务。</p>  <p>举例来说，一个网站的测试，需要10个手工测试人员进行，那么我们可以创建10个虚拟计算机，那么只需要１－２个主机就行了，并且支持远程工作，那么这些手工测试人员可以在家里进行工作。</p>  <p><strong>3.2) 软件快速部署和连续集成</strong></p>  <p>虚拟机的管理是非常方便，这大大促进了快速部署（Fast Deployment)和连续集成(Continual Integration)。举例来说，在连续集成的时候，往往需要大量机器，并且快速恢复到某个系统的初始状态。虚拟化技术的高管理性能够很好满足这些需求，同时成本比物理机器要低很多。</p>  <p><strong>3.3）测试用例失败后的调查</strong>     <br />在测试用例失败后，通过保存机器状态，可以方便问题的调查。如果使用物理机器，这些机器就需要被占用，一直到问题调查完毕。而且，调查的状态具有不可恢复性。如果使用虚拟化技术，计算机状态可以被保持到到文件；在需要调查问题时，随时可以把虚拟机文件恢复到虚拟机进行调查；同时机器的状态可以随时保存，随时恢复，这给一些不容易重现的问题提供了有利的调查方法。</p>  <p><strong>3.4）虚拟硬件的使用      <br /></strong>虚拟化不仅仅可以模拟软件，也可以模拟硬件，包括网卡，光驱，USB接口等等。特别是USB接口的虚拟化，使得在很多USB设备驱动的测试提供了便利。另外一个例子是虚拟光驱，Vista开发出来后，安装以前的方法要制作DVD光盘来进行最后的验证。按照传统的做法，需要180张DVD光盘，需要花2个星期。而使用虚拟化解决方案，制作ISO 映像，只需要2天时间。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_6.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_thumb_2.png" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/b085d7f55617_13DAE/image_thumb_2.png" width="244" height="177" /></a> </p>  <p><strong><font color="#008000" size="4">4 虚拟化过程中一些好的实践</font></strong></p>  <p><strong>4.1 仔细设计网络拓扑结构      <br /></strong>&#160; 对于一些对网络特别要求的实验室，需要仔细设计网络Top结构，特别是IP地址的数量</p>  <p><strong>4.2 选购主机，注意扩展性</strong>     <br />主机的选购需要考虑内存的扩展能力，内存大小很容易成为增加虚拟机的一个瓶颈。当机器映像很多的时候，磁盘空间也容易出现紧张。网络速度也是需要考虑。</p>  <p><strong>4.3) 仔细考虑一些特殊需求的测试</strong>     <br />a) USB/驱动 b) 3D效果&#160; c)能源管理 d)性能测试结果的分析应该考虑到虚拟的使用的范围和局限性。</p>  <p><strong>4.4) 自动保持闲置的虚拟机      <br /></strong>实验室中有长期不用的虚拟机，可以定时自动保存起来，需要时以后可以再恢复。这样可以提高系统的效率，降低能耗。保存和恢复机器都是需要时间的，其性能和网络的存储位置有很大关系。</p>  <p>总结，虚拟化作为一个重要的技术，不仅仅可以节省成本，而且可以帮助我们保护蓝天，何乐而不为呢？</p>]]></content:encoded>
    </item>
    <item>
      <title>天文历法改革与测试</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/83</link>
      <pubDate>Wed, 24 Feb 2010 16:59:19 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2010/02/24/83/</guid>
      <description><![CDATA[过年了，聊一聊传统的中国天文历法，顺便说说测试。...]]></description>
      <content:encoded><![CDATA[<p>过年了，聊一聊传统的中国天文历法，顺便说说测试。</p>  <p>中国古代很多聪明的人都是天文学家，他们有祖冲之，沈括，郭守敬等等，因为天文是一门魅惑的学科，蕴含着无数的简单的和复杂的规律。天文历法是天文学家可以直接将研究结果贡献社会的最好方式。让我们看看这些天文学家和他们的历法，最后总结一些其中关于测试的思考。</p>  <p>祖冲之，南北朝人，大家都知道他是著名数学家，将圆周率精确到小数点后7位，他的精度在1000年以后才有人打破。其实，他也是一位卓越的天文学家，他创建了《大明历》，将一年的精度误差缩小到50秒之内，并且在日历中引入岁差方法，大明历是历史上第二次历法改革。另外，据说指南车也是祖冲之发明的。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/1_2.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/1_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="1" border="0" alt="1" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/1_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/1_thumb.jpg" width="126" height="164" /></a> </p>  <p>祖冲之</p>  <p>北宋的沈括是中国古代最博学的科学家，他”博学善文“，不仅仅文科很好（他是北宋的进士），而且他所著作的《梦溪笔谈》涉及到天文，数学，水利，生物，农学，医学等等。在天文方面，他积极推行平民出生的天文学家卫朴的《奉元历》（已经失传），据说此新历比旧历有很多的创新，而且对人民日常生活也一定的影响。，新历法只推行了18年，就因为反对派的阻挠而失败了。在梦溪笔谈中，沈括还提出了一个新历法，其内容和现在的阳历基本一样，一年分为12个月，每月30天或者31天，总共是366天，一年分为三季，孟，仲和季。另外他还是设备专家，对当时复杂的浑天仪做了改进，简化了其结构，提高了设备的可用性。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/2_2.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/2_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2" border="0" alt="2" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/2_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/2_thumb.jpg" width="125" height="164" /></a> </p>  <p>博学善文的沈括</p>  <p>另外一个是我非常敬佩的郭守敬，他是元朝天文学家，数学家和水利学家。北京的通惠河就是郭守敬主持修建的，现在还在造福北京的通州人民。他最大成就在天文学上，他制定了《授时历》，该历法定义的年与现代科学计算出来的年只相差26秒，是当时世界上最精确的历法。在修订新历法的4年过程中，他在全国东西南北建立了27个观测站，通过坚持不断的观察，终于制作出高水平的《授时历》。同时，他还根据《授时历》，执行了中国第四次天文历法改革，并且使得该历法沿用至以后700多年，现在所说的农历基本上就是《授时历》的延续。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/3_2.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/3_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="3" border="0" alt="3" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/3_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/cheno/WindowsLiveWriter/e5bfa67ae12c_8EEC/3_thumb.jpg" width="121" height="164" /></a> </p>  <p>郭守敬纪念馆，北京</p>  <p>话说这三人推行的天文历法改革，两次次成功，一次失败，这是为什么呢？我感觉新历失败的原因可能是”用户体验不好“，给人们生活带来太多的变化和冲击。另外，尝试穿越一下，如果你是这三种历法的测试人员，你会不会考虑如下的问题？</p>  <p>１）如何确保天文历法的精确性？ 有些预测的数据，需要很多年，甚至数百年才能预测，如何验证新历法的准确性？</p>  <p>2）如何确保新历法对农业生产没有负面的影响？人们是否愿意接受新历法？ 虽然，我们可以在小范围内做些调研，但是人们实际上无法预测一个社会现象真正带来的社会影响。</p>]]></content:encoded>
    </item>
    <item>
      <title>一个测试人员眼中的VS 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/vs-2010</link>
      <pubDate>Sat, 06 Feb 2010 04:58:08 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2010/02/06/vs-2010/</guid>
      <description><![CDATA[by cheno  VS 2010是微软即将推出的最新开发工具套件，全球的正式发布时间将定于4月12日。在过去半年内，本人一直使用VS 2010，从Beta...]]></description>
      <content:encoded><![CDATA[<p>by cheno</p>  <p>VS 2010是微软即将推出的最新开发工具套件，全球的正式发布时间将定于4月12日。在过去半年内，本人一直使用VS 2010，从Beta 1到Beta2，以及现在使用的RC版本，可以说是陪着VS 2010一起孕育，同时期待着它的正式发布。可以非常肯定的说，VS 2010对软件测试的支持力度，远远超过以前的任何VS 版本，并且在很多方面有革命性的改变。同时，作为一个集成的产品，对软件开发周期有了非常完整的支持。下面，我就从一个测试人员的角度，看看它提供了哪些实用的功能。</p>  <p><strong>1）VS 2010的基本信息</strong></p>  <p>VS 2010 主要分为3个版本，Professional版本，Premium版本和Ultimate版本。 Professional对于测试的支持非常有限，Premium支持除了性能测试之外的各种测试，Ultimate版本是一个全集。详细版本信息,请看<a href="https://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">这里</a>.这里有个图可以做参考。</p>  <table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="199">版本</td>        <td valign="top" width="199">测试工具</td>     </tr>      <tr>       <td valign="top" width="199">VS 2010 Ultimate</td>        <td valign="top" width="199">-Preminum版所有功能         <br />-负载测试(Load Test)          <br />-网络模拟器          <br />-Test Agent, Test Controller</td>     </tr>      <tr>       <td valign="top" width="199">VS 2010 Premium</td>        <td valign="top" width="199">-Professional版所有功能         <br />-ASP.NET Profiler          <br />-Coded UI Test          <br />-Test Data Generator</td>     </tr>      <tr>       <td valign="top" width="199">VS 2010 Professional</td>        <td valign="top" width="199">-单元测试(Unit Test)</td>     </tr>   </tbody></table>  <p><strong>2）Coded UI Test(可编程的界面测试)      <br /></strong>它提供了QTP或WinRunner类似的功能。支持录制和回放功能来创建测试用例，内建软件对象模型(Object Modeling)，录制的脚本可以为不同的.NET语言，例如VB,C#等。以下是简单的支持应用列表。</p>  <table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="198">支持</td>        <td valign="top" width="200">应用</td>     </tr>      <tr>       <td valign="top" width="198">全部支持</td>        <td valign="top" width="200">-IE7, IE8 包括 Ajax          <br />-WinForm           <br />-WPF 3.5+</td>     </tr>      <tr>       <td valign="top" width="198">部分支持(可能有少量已知问题）</td>        <td valign="top" width="200">-Win32 UI          <br />-MFC           <br />-Share Point</td>     </tr>      <tr>       <td valign="top" width="198">不支持</td>        <td valign="top" width="201">-IE6.0          <br />-Java/Flash           <br />-Silverlight 3.0(据说VS2010 SP1将支持)</td>     </tr>   </tbody></table>  <p>&#160;</p>  <p>对象管理：提供了树状结构的对象管理，每个对象有很多属性可以配置，用于查找对象和验证对象。功能很强大。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image026_2.gif" original-url="https://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image026_2.gif"><img title="clip_image026" border="0" alt="clip_image026" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image026_thumb.gif" original-url="https://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/TutorialHowtocreateaCodedUITest_746E/clip_image026_thumb.gif" width="444" height="643" /></a></p>  <p><strong>3)&#160; 机房管理(VS Lab Management Team)</strong> (<a href="https://blogs.msdn.com/lab_management">工作组连接</a>)</p>  <p>VS 内置的机房管理软件，可以管理物理机器也可以通过SCVM管理虚拟机。主要功能包括：    <br />a) 创建和管理物理机器或虚拟机     <br />b) 创建和恢复测试环境，支持快速保持和恢复环境快照(snapshot)，方便Bug调试和重现。     <br />c) 将机器表示为不同的测试环境，例如“开发环境”，“系统集成环境”，“性能测试环境”等等，在管理机器时，可以通过环境的力度管理机器，例如恢复初始状态，创建环境快照等。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_2.png" original-url="https://blogs.msdn.com/blogfiles/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_2.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_thumb.png" width="577" height="435" /></a></p>  <p></p>  <p></p>  <p>快照例子: </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_4.png" original-url="https://blogs.msdn.com/blogfiles/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_4.png"><img title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/lab_management/WindowsLiveWriter/VSTS2010LabManagementBasicConcepts_F343/image_thumb_1.png" width="391" height="233" /></a></p>  <p><strong>4) 增强版本的负载测试(Load Test)</strong></p>  <p>Load Test可以用于性能测试(Performance Testing)和压力测试(Stress Testing)，此功能仅仅包括在VS 2010 Ultimate 版本中。以下是一些主要功能，包括一些新功能。</p>  <table border="1" cellspacing="0" cellpadding="2" width="399"><tbody>     <tr>       <td valign="top" width="201">功能</td>        <td valign="top" width="196">描述</td>     </tr>      <tr>       <td valign="top" width="202">Recorder(录制器)</td>        <td valign="top" width="196">可以记录所有的URL请求，以便以后回放。</td>     </tr>      <tr>       <td valign="top" width="202">Load Test</td>        <td valign="top" width="196">-Load用例可以分布在不同的Load Agent上运行          <br />-支持更多的性能计数器(Perf Count)</td>     </tr>      <tr>       <td valign="top" width="202">Analyzer&amp;Report(分析&amp;报告）</td>        <td valign="top" width="196">-提供更方便的视图，用于测试结果的浏览。          <br />-支持2次性能测试结果的比较。</td>     </tr>   </tbody></table>  <p>测试模式图例: 支持不同的测试模式。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/billbar/WindowsLiveWriter/VSTS2010FeatureNewLoadTestScenariooption_E138/Wizard1.png" original-url="https://blogs.msdn.com/blogfiles/billbar/WindowsLiveWriter/VSTS2010FeatureNewLoadTestScenariooption_E138/Wizard1.png"><img title="Wizard1" border="0" alt="Wizard1" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/billbar/WindowsLiveWriter/VSTS2010FeatureNewLoadTestScenariooption_E138/Wizard1_thumb.png" original-url="https://blogs.msdn.com/blogfiles/billbar/WindowsLiveWriter/VSTS2010FeatureNewLoadTestScenariooption_E138/Wizard1_thumb.png" width="659" height="457" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>软件测试2009</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/2009</link>
      <pubDate>Thu, 31 Dec 2009 06:47:00 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2009/12/31/2009/</guid>
      <description><![CDATA[&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By...]]></description>
      <content:encoded><![CDATA[<SPAN class=pw__rte_body><SPAN class=pw__rte_body><SPAN class=pw__rte_body><SPAN class=pw__rte_body>&nbsp; 
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By cheno</P>
<P>天仪变换，岁律更替之际，总结一下2009年我眼中的软件测试的热点，作为2009年年底总结博文。</P>
<P><STRONG>1）软件测试会议</STRONG></P>
<P>这里列出一些我经常关注的软侧测试会议，多为软件行业会议，这些会议的参与者多为软件公司的测试管理人员和一些提供软件测试咨询服务的测试达人。</P>
<P><A title="Shift + Click to follow link" href="https://www.qaiglobal.com/minisites/stc-2009/paper1.htm" target=_blank><STRONG>STC2009</STRONG></A><STRONG> (Software Testing Conference, India 2009) </STRONG>: STC是QAI公司组织的软件测试专业会议，每年在印度召开，不少全世界的测试达人都会参加，包括Michael Bolton，<SPAN class=pw__rte_body><SPAN class=pw__rte_body>Pradeep Soundararajan, Shrini Kulkarni 等。今年，会议还特别请来了微软公司的Tanuj Vohra，他是负责VSTS中所有测试工具的项目经理总监，之前他在IBM负责负责Rational Robot,Test Management and Rational Purify等测试工具。 </SPAN></SPAN></P>
<P><SPAN class=pw__rte_body><SPAN class=pw__rte_body>
<P><A title="Shift + Click to follow link" href="https://www.sqe.com/" target=_blank><STRONG>STAR East 2009</STRONG></A><STRONG>(Software Testing Analysis&amp;Review):&nbsp;</STRONG> STAR East也是测试达人常去的会议，今年会议James Bach(ET测试之父）和James Whittaker都去了，由于James Whiitaker最近出了一本关于探索性测试（Exploratory Software Testing)的书，但是没有得到James Bach的认可，他们还在博客上有一番<A title="Shift + Click to follow link" href="https://www.satisfice.com/blog/archives/365" target=_blank>激烈的讨论</A>。明年的STAR East2010，微软公司负责测试优秀实践的Alan Pages将会作为嘉宾演讲。</P>
<P><SPAN class=pw__rte_body><A title="Shift + Click to follow link" href="https://www.gtac.biz/" target=_blank><STRONG>GTAC2009</STRONG></A><STRONG>&nbsp;(Google Test Automation Conference,2009)</STRONG>:这是Google每年一度的软件测试大会，今年是在瑞士的苏黎世张开，会议的重点的网络应用程序的测试，特别是性能测试，另外在测试工具方面也有很多热门的讨论。</SPAN><SPAN class=pw__rte_body></P>
<P><STRONG>2) 软件测试的热点</STRONG></P>
<P>毫无疑问，Exploratory Testing 是这一年最热门的测试方法了，其概念在诸多的软件测试会议中被推广，同时<SPAN class=pw__rte_body>出版了几本相关的书,例如《Exploratory Software testing》，目前来说，Exploratory Testing作为一种方法，有一部分的理论支持，但是如何结合实践（或者说如何更好的运用到实践当中，因为大家其实自觉不自觉都在使用者这种方法），却还在摸索当中。我觉得，随着这个概念的推广，更多的测试管理人员熟悉并且掌握了这种方法，这种方法会渐渐成为测试的一些基本理念。其实，Exploratory Testing的流行也反映了现代软件开发的变化性正在加剧，需要更多的考虑软件本身的变化性和项目进度的不可控性。</SPAN><SPAN class=pw__rte_body></P>
<P>测试工具的集成和整合</P>
<P>最流行的测试工具：<A title="Shift + Click to follow link" href="https://seleniumhq.org/" target=_blank>Seleniumn(硒)</A>，作为开源的测试工具，在Google的大力扶植下，Seleniumn渐渐成为最强大的免费Web Applicaition的测试集成环境(IDE)，今年又增加了很多测试管理工具（包括测试代理的管理）。但是随着该软件功能的增加，使用用户的增加，越来越多的质量问题正在困扰着Seleninum。作为开源软件，如何保证质量是非常复杂的事情。长远来看，开源的测试工具将和商业软件将会长期共存，共同发展。</P>
<P>3）<STRONG>推荐一本书</STRONG>&nbsp;《<A title="Shift + Click to follow link" href="https://www.amazon.com/Beautiful-Testing-Professionals-Software-Practice/dp/0596159811/ref=pd_sim_b_7" target=_blank>Beautiful Testing</A>》</P>
<P>这是一个本软件测试的文集，包括近20位测试达人们的最新观点，看完这本书，你能对测试方法，测试流程，测试工具会有新的想法。你会对软件测试的复杂性和系统性，有着更好的理解，同时也软件测试更加充满热情。看了第二章节测试过程，你会对现有项目的测试流程进行反思，总结出好的实践和下一步的改进目标。</P>
<P><STRONG>4) 测试是一门平衡的艺术</STRONG></P>
<P>在实际工作中，测试工作往往要平衡很多方面的考虑，例如下一个发布版本的质量，测试资源的投入和产出比，长远的测试基础投资，手工测试和自动化测试等等。如何平衡这些因素是测试人员重要的技能之一。从测试工程师到测试经理，再到测试总监，这些因素的考虑对于产品短期成功和公司长远发展都是至关重要的。测试团队管理的核心，就是创建一种团队文化，让整个团队适应这种文化，实现共同的目标。</P></SPAN>
<P mce_keep="true">&nbsp;</P></SPAN></SPAN>
<P mce_keep="true">&nbsp;</P></SPAN></SPAN></SPAN></SPAN></SPAN>]]></content:encoded>
    </item>
    <item>
      <title>开发和测试人员的比例</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/113</link>
      <pubDate>Mon, 30 Nov 2009 05:57:00 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2009/11/30/113/</guid>
      <description><![CDATA[&nbsp;开发和测试人员的比例是项目管理中重要的一个部分，通常以下的因素会决定最后比例。这种比例没有统一、简单的结论:好或不好，更多的是整个团队的默契程度和最后产品是否成功。...]]></description>
      <content:encoded><![CDATA[<SPAN class=pw__rte_body>&nbsp;开发和测试人员的比例是项目管理中重要的一个部分，通常以下的因素会决定最后比例。<SPAN class=pw__rte_body><STRONG>这种比例没有统一、简单的结论:好或不好，更多的是整个团队的默契程度和最后产品是否成功</STRONG>。</SPAN> 
<P>1）公司的文化(Company Culture)</P>
<P>每个公司都有自己的文化，公司通常喜欢利用自己以往成功经验，来指导新项目的开发。例如，一个公司以前是按照3：1的比例进行配置，产品获得成功了，那么他们在下一版本，或则其他产品，也容易按照这个比例进行。因为，大家习惯了这种比例，包括测试人员和开发人员，这些员工习惯了在这种比例下的进行工作分工，当这种比例有重大变化的时候，在初期，开发和测试人员往往会不知所措，不知道如何界他们的工作责任。在微软，开发测试比例通常在1:1~ 3：1左右（<A title="Shift + Click to follow link" href="https://blogs.msdn.com/james_whittaker/archive/2008/12/09/google-v-microsoft-and-the-dev-test-ratio-debate.aspx" target=_blank mce_href="https://blogs.msdn.com/james_whittaker/archive/2008/12/09/google-v-microsoft-and-the-dev-test-ratio-debate.aspx">Link</A>)，而在很多互联网公司，在创业的时候通常没有专职的测试人员，在公司成功之后，也会演习这种很高的开发测试比例，例如Google这种比例会达到7:1，甚至更高。</P>
<P>2) 软件产品性质和市场需求(Business Needs)</P>
<P>软件产品的性质也影响着这个比例。对于企业计费软件，工程控制软件，这些对于产品质量有严格的要求，测试人员比会多一些。对于一些UI集中的软件，比如网络游戏，测试人员的数量也相对较多。有些互联网企业，为了快速提供新功能，而开发一些对于一些原型性质的功能，有时候会标志为Beta，通常这些项目的测试人员通常较少。</P>
<P>3) 开发、测试团队的组成(Team)</P>
<P>在一个项目中，开发和测试人员的经验也会影响着比例的安排。总体来说，软件测试为了达到所需要的质量，需要做一系列的工作任务，有些任务需要开发人员做（例如设计和代码编写），有些需要测试人员做(例如测试计划），除了这些需要较多专业的背景的任务外，其他的很多任务(例如测试用例的实现，测试工具的编写..)实际上既<SPAN class=pw__rte_body>可以</SPAN>由测试人员做，也可以由开发人员做。这种灵活的任务分配往往需要开发团队有较强的开发经验，否则会影响任务的完成。</P>
<P><SPAN class=pw__rte_body><SPAN class=pw__rte_body>在很多测试博客中也有开发/测试比例的讨论，例如 <A title="Shift + Click to follow link" href="https://blogs.msdn.com/james_whittaker/archive/2008/12/09/google-v-microsoft-and-the-dev-test-ratio-debate.aspx" mce_href="https://blogs.msdn.com/james_whittaker/archive/2008/12/09/google-v-microsoft-and-the-dev-test-ratio-debate.aspx">Google V.S Microsoft Dev Test Ratio</A>(<SPAN class=pw__rte_body>james_whittaker),&nbsp; <SPAN class=pw__rte_body><A title="Shift + Click to follow link" href="https://blogs.msdn.com/alanpa/archive/2008/05/24/test-to-developer-ratios-you-re-probably-doing-it-wrong.aspx" mce_href="https://blogs.msdn.com/alanpa/archive/2008/05/24/test-to-developer-ratios-you-re-probably-doing-it-wrong.aspx">Test to Developer ratios</A>(Alan Page)</SPAN></SPAN></SPAN></P>
<P><SPAN class=pw__rte_body><SPAN class=pw__rte_body><SPAN class=pw__rte_body></SPAN></SPAN></SPAN>&nbsp;</P></SPAN></SPAN>]]></content:encoded>
    </item>
    <item>
      <title>情景驱动的测试方法(Context-Driven School)</title>
      <link>https://docs.microsoft.com/archive/blogs/cheno/context-driven-school</link>
      <pubDate>Fri, 23 Oct 2009 07:42:00 GMT</pubDate>
      <dc:creator><![CDATA[cheno]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cheno/2009/10/23/context-driven-school/</guid>
      <description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n...]]></description>
      <content:encoded><![CDATA[<SPAN class=pw__rte_body><SPAN class=pw__rte_body><SPAN class=pw__rte_body><SPAN class=pw__rte_body>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp; Cheno</P><SPAN class=pw__rte_body>
<P><SPAN class=pw__rte_body>情景驱动的测试方法是<SPAN class=pw__rte_body><SPAN style="FONT-FAMILY: 'Arial','sans-serif'"><A title="Shift + Click to follow link" href="https://www.satisfice.com/kaner/" target=_blank>Cem Kaner</A>和<SPAN class=pw__rte_body><A title="Shift + Click to follow link" href="https://www.satisfice.com/blog/" target=_blank>James Bach</A>提出来的</SPAN></SPAN></SPAN>，指出了软件开发的复杂性以及不可预测性，因此在这情景下，测试人员需要积极发挥主观能动性，而不是墨守成规的遵守一些通用的规定和流程。总之，这是一种为以人为本的测试方法论，强调主观能动性，而不是固定的流程和方法。</SPAN></P></SPAN>
<P>情景驱动测试(<SPAN class=pw__rte_body>Context-Driven School)</SPAN>的7个基本原则(<SPAN class=pw__rte_body><A title="Shift + Click to follow link" href="https://www.context-driven-testing.com/" target=_blank>https://www.context-driven-testing.com/</A>)</SPAN></P>
<P><SPAN class=pw__rte_body>1)任何实践的价值都依赖于情景(Context)<BR></SPAN><SPAN class=pw__rte_body><STRONG>2)好的实践只作用在特定的情景下，没有通用的最佳实践<BR></STRONG></SPAN><SPAN class=pw__rte_body>3)在任何项目的环境下，共同协作的人是最重要的部分<BR></SPAN><SPAN class=pw__rte_body>4)<STRONG>项目的进展常常是不可预测的<BR></STRONG></SPAN><SPAN class=pw__rte_body>5)软件产品实际上是一个解决方案。如果问题没有被解决，产品也不可能工作<BR></SPAN><SPAN class=pw__rte_body><STRONG>6)好的软件测试是一个非常挑战性，需要智力的过程<BR></STRONG></SPAN><SPAN class=pw__rte_body>7)只有经历过项目整个过程，通过决策力和技能，我们才能在正确的时间做正确的事情来测试我们的产品</SPAN></P>
<P><SPAN class=pw__rte_body>
<P><SPAN class=pw__rte_body>举个例子,考虑2个项目</SPAN></P>
<P><SPAN class=pw__rte_body>1)个飞行控制软件，“正确行为”意味着高技术含量和数学科学。它必须服从FAA(联邦航空局）的规定。做或者不做任何事情在20年内都可能<SPAN class=pw__rte_body>成为</SPAN>法律诉讼的证据。开发人员共同营造着一种谨慎，精确，可重复性和反复检查每个人工作的工作氛围。</SPAN></P>
<P><SPAN class=pw__rte_body>2)另外一个项目是开发一个用于互联网上的字处理软件，“正确的行为”是引导微软Word的大量用户使用这款软件。没有航空法规的约束，但需要考虑软件发布时间:从现在起20个月，项目结束时，它可能成功，可能失败。开发人员不可能依照第一个项目的工作风格，因为这种风格将不利于项目的开展。</SPAN></P>
<P>情景驱动的测试人员总是尽力选择自己的方式来测试不同软件，而不是总是应用所谓的“最佳实践”，不同的环境下，选择的实践活动总是不一样的。</P></SPAN>
<P mce_keep="true">情景驱动的测试方法与敏捷测试(Agile Testing)对比:</P>
<P>1) 敏捷测试强调单元测试的重要性，情景驱动的测试方法却强调在不同的环境下选择不同测试方法，包括如果开发人员的单元测试用例很多或则很少情况下。<BR>2) 敏捷开发强调迭代的软件开发周期，情景驱动的测试方法却适合不同类型的软件开发周期，当然，它不是很适合瀑布型模式。</P>
<P mce_keep="true"><SPAN class=pw__rte_body>情景驱动的测试方法与探索式测试(<A title="Shift + Click to follow link" href="https://en.wikipedia.org/wiki/Exploratory_testing" target=_blank>Exploratory Testing</A>)方法对比：</SPAN></P>
<P><SPAN class=pw__rte_body>1）探索式测试来源于手工测试方法，主要强调测试人员学习软件的过程。情景驱动的测试方法覆盖更多的内容。<BR></SPAN>2) 探索式测试是和脚本化测试(Scripted Testing)相对的，适用于时间紧，少文档的环境下。</P>
<P mce_keep="true">&nbsp;</P>
<P>我喜欢软件测试，喜欢复杂的软件测试，喜欢主动的进行测试，这正是情景驱动测试方法所适用的。</P></SPAN></SPAN></SPAN></SPAN>]]></content:encoded>
    </item>
  </channel>
</rss>