zoukankan      html  css  js  c++  java
  • 服务器端测试模式总结

    服务器端测试模式总结

    • 最近这两星期,我一直在研究关于服务器端功能测试的方案,现在正式总结一下:>
    • 本文分为两部分,第一部分是“服务端测试的方向”,第二部分是“现有的服务器端测试方案”。

    服务端测试的方向

    • 先看下图:
    • 上图描述了几个问题:
      1. 可以在服务端进行的测试类型,以及它们之间的层次关系

      2. 客户,产品,测试,代码之间的关系

    测试类型(5类)

    1. Function Test:功能测试,也叫验收测试。模拟用户操作的基本功能测试,以保证产品的基本功能。
    2. PerformanceTest:性能测试。这是服务端测试中很重要的一环。首先,服务端的很多BUG其实都是在大压力下才出现的,此外,性能测试能为服务器集群,部署提供参考性数据。

    3. Stability Test:稳定性测试。在长时间运行中,测试服务端的稳定性。
      • 以上3种A类测试,绝大多情况下需要完整产品才能进行的测试。
    4. Module Test:模块测试。这里根据模块的集成度,又可以分为两类:单一模块的模块测试,多模块的模块集成测试。
    5. Unit Test:单元测试。这是粒度最小的测试,针对每个函数进行。
      • 以上2种B类测试,只需要相关模块即可展开测试,不一定需要完整产品。
    • 测试类型特性分析

      • 这里我从测试的粒度展开说一下,不同的测试粒度,测试的效果可能会有很大差距。
        1. A类测试,测试粒度较大,这样的测试会较粗的(这仅仅是相对B类测试而言的),但上面说到,绝大多情况下需要完整产品才能进行的测试,这类型的测试往往贴近实际,所以发现的问题比较基础但却最为重要。
        2. B类测试,测试粒度较小,这样的测试是比较细的,很容易发现很多内在的,复杂的,在表面不容易发现的高质量BUG。由于模块的功能单一,所以开展起来也比较简单,而且不用顾及UI,初始化环境等问题(在模块和单元测试中,可以用MOCK方式完全模拟外部环境),但B类测试有个致命的问题,就是它不能说明现在产品的具体质量到底如何(注意是产品的具体质量,不是模块质量),B类测试只是针对各个模块/集成几个模块进行的测试,到底效果如何,是很难判定的,所以 才会出现代码覆盖率这个概念,以量化的方式评定效果。但是当模块集成为产品后,到底质量如何,基本功能是否能用,模块和模块/模块和UI之间能否正常工 作,这就不得而知了(特别如果在模块测试中使用了MOCK模拟外部环境后,此类隐患更加明显),所以在模块测试完毕后,都必须再对产品做功能测试,以确保各部分串跑成功。

    测试模式(2种)

    • 对产品的测试模式基本上可以分为两种(见上图的箭头),一种是从上往下的X测试模式(红色箭头),一种是从下往上的Y测试模式(蓝色箭头)。
      • Y测试模式是一种从下往上的测试模式,先从单元测试和模块测试入手,一步步往上,最后进行功能测试,我觉得以下情况非常适合对产品使用Y测试模式:

        1. 人手是足够的。因为Unit Test和Module Test是非常消耗资源的测试。
        2. 项目正处于设计/开发阶段。因为产品还没成型,所以也只能先从模块下手,当然如果可以实现测试驱动开发那是最好的。
      • 采用Y测试模式有个明显好处是:它可以从本质上提高产品的质量,因为越往下的测试类型越和代码相关,先进行单元和模块测试有利于提高开发的代码质量和软件架构,好的代码和软件设计是高质量产品的基础,所以说Y测试模式有利于从本质上提高产品质量。
      • X测试模式和Y测试模式相反,它从上往下的测试模式,先从总体的功能测试入手,一步步深入,最后进行模块/单元测试。我觉得以下情适合对产品使用X测试模式(使用情况也恰恰和Y测试模式的使用情况相反):

        1. 在人手紧缺的情况下
        2. 项目已经开发完毕/差不多完毕
      • X测试模式它先是进行功能测试,在保证了基础功能正常的情况下再进行深入测试。所以在资源(人手,时间...)有限的情况下可以最大限度地保证产品功能的稳定,这也是它优点。
    • 说了这么多,大家应该有感觉,上图中,越往上的测试类型,越贴近用户,也越重要(这里重要是相对而言的,并不是说单元测试不重要),而越往下的测试类型,越贴近代码。各位可以根据产品的特点,选择适合自己的测试方案。

    • 我对小公司的开展测试的建议是:采用X测试模式,在保证基础功能的基础上,再做打算。

    现有的服务器端测试方案

    1. 针对Function Test(功能测试)的测试方案:
      1. 使用Web测试工具Selenium编写自动化测试脚本,进行服务端进行简单的功能测试。
        • Selenium是Web测试利器,支持C#,JAVA,Python在内的多种语言编写测试案例,Selenium通过内嵌入JavaScript控制浏览器的动作,实现模拟真人的操作。参考资料:http://seleniumhq.org/

      2. QTP的开源框架Saffron4Web。
    2. 针对Performance Test(性能测试)的测试方案:LoadRunner就是一个很好的选择。
    3. 针对Module Test(模块测试)的测试方案:对于Module Test,我的想法的使用现有的框架编写测试案例,用Groboutils+Cactus+(JMock)搭建起模块测试的基本运行环境。

         转载请说明出处,谢谢![hyddd(http://www.cnblogs.com/hyddd/)]

  • 相关阅读:
    URAL——DFS找规律——Nudnik Photographer
    URAL1353——DP——Milliard Vasya's Function
    URAL1203——DPor贪心——Scientific Conference
    递推DP HDOJ 5389 Zero Escape
    区间DP UVA 1351 String Compression
    树形DP UVA 1292 Strategic game
    Manacher HDOJ 5371 Hotaru's problem
    同余模定理 HDOJ 5373 The shortest problem
    递推DP HDOJ 5375 Gray code
    最大子序列和 HDOJ 1003 Max Sum
  • 原文地址:https://www.cnblogs.com/hyddd/p/1456271.html
Copyright © 2011-2022 走看看