您现在的位置是:首页 >技术教程 >软件测试06:软件测试原则和黑盒测试用例设计方法网站首页技术教程

软件测试06:软件测试原则和黑盒测试用例设计方法

杰哥牛波一 2024-10-22 12:01:04
简介软件测试06:软件测试原则和黑盒测试用例设计方法

 

软件测试原则

  • 所有测试的标准都是建立在用户需求之上
  • 软件测试必须基于"质量第一"的思想去开展各项工作,当时间和质量冲突时,时间要服从质量
  • 事先定义好产品的质量标准,只有有了质量标准,才嫩如果根据测试的结果,对产品的质量进行分析和评估
  • 软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试
  • 穷举测试是不可能的
  • 第三方进行测试会更客观,更有效
  • 软件测试计划是做好软件测试工作的前提
  • 测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多的发现错误,提高程序的可靠性。
  • 对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数较多,其中存在的错误概率也就越大
  • 重视文档,妥善保护一切测试过程文档(测试计划、测试用例、测试报告等)
  • 应当把“尽早和不断地测试”作为测试人员的座右铭
  • 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见
  • 测试应从“小规模”开始,逐步转向“大规模”
  • 不可将测试用例置之度外,排除随意性
  • 必须彻底检查每一个测试结果
  • 一定要注意测试中的错误集中发现现象,这和程序员的编程水平和习惯有很大的关系
  • 对测试错误结果一定要有一个确认的过程

什么是测试用例

  • 简单地说,测试用例就是:
    • 设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果
    • 如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那就表现软件程序人员已经测出了软件有缺陷,这时候就必须将这个问题标示出来,并且通知软件开发人员。软件开发人员接获通知后,将这个问题修改完成于下一个测试版本内
    • 软件测试工程师取得新的测试版本后,必须利用同一个用例来测试这个问题,确保该问题已修复完成

  • 测试用例应该包含以下内容:
    • 标识符:由测试设计过程说明和测试程序说明引用的唯一标识符
    • 测试项:描述被测试的详细特性、代码模块等,应该比测试设计说明中所列的特性更加具体。还要指出引用的产品说明书或者测试用例所依据的其他设计文档。
    • 输入说明:该说明列举执行测试用例的所有输入内容或者条件。
    • 输出说明:描述进行测试用例预期的结果。
    • 环境要求:是指执行测试用例必须要的硬件、软件、测试工具、人员等。
    • 特殊要求:描述执行测试必须的特殊要求。
    • 用例之间的依赖性:如果一个测试用例依赖于其他用例,或者受其他用例的影响,就应该再次注明。
  • 用例设计和编写的作用
    • 有效性:测试用例是测试人员测试过程中重要参考依据。
    • 可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
    • 易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
    • 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
    • 可管理性:测试用例也可以作为检验测试人员的进度、工作量以及跟踪/管理测试人员的工作效率的标准。
  • 测试用例编写注意事项
    • 不要设计“穷举测试用例”
    • 在详细测试用例与有效测试时间中找到平衡点
    • 好的测试用例应该多关注“反向测试问题”
    • 测试用例库应该不断更新和维护
    • 测试用例可以复用,但要注意测试数据有效性与环境变化
    • 测试用例是设计出来的,不是写出来的
    • 多去学习测试丰富的测试工程师所设计的测试用例
    • 针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法

黑盒测试用例设计方法

  • 测试数据选择

    • 等价类划分法

      • 等价类划分法原理(言之有理即可)

        • 把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例
        • 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也可能发生同样的错误
        • 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误
      • 等价类划分法设计步骤

        • 确认等价类的原则

          • 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类

          • 在输入条件规定的输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类

          • 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类

          • 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类

            例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

          • 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

          • 在确知已划分的等价类中,各元素在程序处理中的分类不同的情况下,则应再将该等价类进一步地划分为更小的等价类

      • 划分等价类和列出等价类表

        • 有效等价类
        • 无效等价类
      • 确认测试用例

        • 为每个等价类规定一个唯一的编号
        • 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
        • 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类被覆盖
    • 边缘值分析法

      • 如果输入条件规定了值的范围,则应曲刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据

      • 如果输入条件规定值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据

      • 分析规格说明,找出其他可能的边界条件

      • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例

      • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例

        举例:

        ​ 1)6<=x<=12,请问测试中x的边界值要选取哪几个进行测试?

        ​ 答案:5,6,7,11,12,13

        ​ 2)6<x<12,请问测试中x的边界值要选取哪几个进行测试?

        ​ 答案:6,7,8,10,11,12

测试步骤设计

因果图法

  • 因果图法是一种适合于描述对于多种输入条件组合的测试方法

  • 根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例和方法

  • 它适合于检查程序输入条件涉及的各种组合情况

    • 画图方法如下:

      • 第一步:根据功能说明书中规定的原因和结果之间的关系画出因果图

        • 恒等。原因a成立,结果b一定成立。
        • 非。原因a成立,结果b一定不成立。
        • 或。原因a、b、c三者其中之一成立,结果d就成立。
        • 与。原因a、b、c三者都成立,结果d才成立。

      • 第二步:根据功能说明在因果图中加上约束条件

        • 其中互斥、包含、唯一、要求是对原因之间的约束(假如原因成立为1,不成立为0),屏蔽是对结果的约束(假如结果成立为1,不成立为0)。他们的含义如下:
          • 互斥(exclusive):表示不同时为1,即a,b,c中至多有一个为1。例:a+b+c<=1。
          • 包含(include):表示至少有一个1,即a,b,c中不同时为0。例:3=>a+b+c>=1。
          • 唯一(only):表示a,b,c中有且仅有一个为1。例:a+b+c==1。
          • 要求(require):表示若a=1,则b必须为1。即不可能a=1且b=0。原因b成立,要求a一定先成立
          • 屏蔽(mask):表示若a=1,则b必须为0。

  • 因果图法示例

    • 阅读和分析功能说明书,识别出“原因”和“结果”,并加以编号
    • 案例:有一个饮料自动售后机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下。
      • 若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就会出来。
      • 若投入1元钱的硬币,同样也会是按下“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时推出5角钱的硬币
  • 判定表法

  • 正交实验法

  • 功能图法

  • 场景法

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。