软件测试Day4|软件测试理论02

目录

    • 6. 测试用例基础
      • 6.1 测试用例的定义
      • 6.2 测试用例要素
      • 6.3 测试用例设计和编写的作用
    • 7. 黑盒测试用例设计方法
      • 7.1 用例设计方法分类
      • 7.2 测试数据选择
        • 7.2.1 等价类划分
          • (1)等价类划分原理
          • (2)确定等价类的原则
          • (3)划分有效等价类和无效等价类
          • 补充
        • 7.2.2 边界值分析
      • 7.3 测试步骤设计
        • 7.3.1 因果图法
          • (1)根据条件写出关系
          • (2)根据功能说明在因果图中加上约束条件
          • (3)列出所有的原因和结果的列表,设计初步的测试用例步骤
          • (4)优点和局限性
        • 7.3.2 判定表法
          • (1)实现步骤
          • (2)实例
        • 7.3.3 场景法
        • 7.3.4 正交实验法
          • 概念
        • 7.3.5 功能图法
        • 7.3.6 测试大纲法
        • 7.3.7 探索性测试法
        • 7.3.8 猴子/随意测试法
      • 7.4 测试用例设计方法综合选择

6. 测试用例基础

6.1 测试用例的定义

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

6.2 测试用例要素

测试用例编号测试项依赖用例测试步骤测试数据预期结果测试结果测试人优先级备注
TestCase_项目名称_模块名称_功能名称_0001简短的话描述测试模块、对象、方式、事件前置用例步骤测用最朴实的语言写步骤测试数据预期结果Pass/Failed测试人优先级特殊步骤

6.3 测试用例设计和编写的作用

  • 有效性:测试用例是测试人员测试过程中的重要参考依据。
  • 可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
  • 易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
  • 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
  • 可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
    1)测试用例越详细,覆盖的越多,时间耗费越多。时间不够用的情况下,还要进行详细测试吗?(在时间范围内,测试更多的内容,覆盖面越广越好,可能不深入)
    2)测试用例需要经常更新吗?(必须更新,特别是发现过缺陷的测试用例–杀虫剂【杀虫剂效应,虫子变异】)

7. 黑盒测试用例设计方法

7.1 用例设计方法分类

  • 测试数据选择:等价类划分、边界值分析
  • 测试步骤设计:因果图法、判定表法、正交实验法、功能图法、场景法

7.2 测试数据选择

7.2.1 等价类划分

(1)等价类划分原理
  • 把程序的输入域划分成若干部分然后从每个部分中选取少数代表性数据作为测试用例
  • 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误, 这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。
(2)确定等价类的原则
  • 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
  • 在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可以确立个一个有效等价类和一个无效等价类
  • 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
  • 在规定了输入数据的一组值(假定n个),并且程序要对每一 个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
  • 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(以不同角度违反规则);【用户名规则】
  • 在确知己划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该价类进一步地划分为更小的等价类
(3)划分有效等价类和无效等价类
补充
  • 用例编号可按照测试分类写上:功能(Function)、界面(UI)、性能(Performance)、安全(Security)、接口(Interface);
  • 测试项:必须是肯定句,可以不写目的产生的结果,写了不算错;
  • 测试项:一般只写一个测试目的(只违反一个规则);
  • 依赖用例:下游用例依赖上游用例(已经存在的用例);
  • 测试数据:没有数据,空着不写(需在测试项中标注某个内容为空);对空格进行测试(数 据)(建议一般不要将空格放在数据前和后,看不出来空格);
  • 用例中不需要显示是否是正向还是反向;

7.2.2 边界值分析

常在河边走,哪有不湿鞋。

  • 边界值本身是一个数值;次边届:按照系统规定的单位或计算方式,一个单位数据的差异。
    1)6≤x≤12:测试用例:5,6,7,11,12,13
    1)6<x<12:测试用例:6,7,8,10,11,12
  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚超越这个范围边界的值作为测试输入数据;
  • 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据;
  • 分析规格说明,找出其他可能的边界条件
  • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
    分析规格说明,找出其他可能的边界条件

7.3 测试步骤设计

7.3.1 因果图法

  • 适合于描述对于多种输入条件组合的测试方法(少量条件和结果组合)
  • 适合于检查程序输入条件涉及的各种组合情况
  • 根据输入条件的组合,约束关系和输出条件的因果关系,分析输入条件的各组情况组合,从而设计测试用例
(1)根据条件写出关系
  • 恒等,条件A成立-结果D成立
  • 非,条件A成立-结果D一定不成立
  • 与,条件A,B,C同时成立-结果D成立
  • 非,条件A,B,C部分成立-结果D成立
    在这里插入图片描述
(2)根据功能说明在因果图中加上约束条件

互斥、包含、唯一、要求是对原因的约束,屏蔽是对结果的约束

  • 互斥(E):eg:不同时为1:条件a,b,c至多一个为1;
  • 包含(I):eg:至少有一个1:条件a,b,c不同时为0;
  • 唯一(O):eg:只有一个1,条件a,b,c有且仅有一个1;
  • 要求(R):eg:条件a=1则条件b必须为1,即不可能a=1,b=0;
  • 屏蔽(M):eg:若结果d出现,则结果e必须不出现。
    在这里插入图片描述
(3)列出所有的原因和结果的列表,设计初步的测试用例步骤
Case1Case2Case3Case4
投币投5角11
投1元11
选饮料橙汁11
啤酒11
结果出橙汁11
出啤酒11
找零5角11
  • 因果图中不能把没有结果(不投币选饮料没有结果,因为该结果没有在之前的需求内)和缺陷写到测试用例
(4)优点和局限性
  • 优点:能够发现设计中的不足(如果出现有结果没有在之前的需求内,则出现不足)
  • 局限性:当原因和结果很多的时候,他们之间的关系连线就很多,导致因果图的可读性变差;因此用作局部的小功能分析(原因和结果不是很多的时候)

7.3.2 判定表法

  • 主要适用于多条件的内容组合与结果分析;是分析和表达多逻辑条件下执行不同操作的情况的工具。它由条件桩、动作桩、条件项、动作项组成;
  • 使用条件:条件桩在表中的位置和顺序互不影响;所有的动作桩的栓徐不会因为条件顺序的变化而产生不同。

  • 条件桩(ConditionStub) :列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
  • 动作桩(ActionStub) :列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
  • 条件项(Condition Entry) :列出针对它左列条件的取值。在所有可能情况下的真假值。
  • 动作项(Action Entry) :列出在条件项的各种取值情况下应该采取的动作。
(1)实现步骤
  • 识别出操作条件(原因)和对应的动作(结果);
  • 分析出条件的组合数量;
  • 简化和优化结果,排除一些不可能出现的情况。
(2)实例
  • 需求:1)大于500+没过期,发批准单和提货单
    2)大于500+过期了,不发批准单
    3)低于500+无论是否过期,发批准单和提货单,过期发通知单
金额>5001010
时效(过期)1001
批准单0111
提货单1111
通知单0001
  • 优化:不论金额与否,只要没过期,就是发批准单和提货单(在测试时间有限时,可以只测一个),减少测试用例

7.3.3 场景法

  • 流程图法;现在的软件几乎都是用事件触发来控制流程的。测试时,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
  • 基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流, 且基本流仅有一个起点和一个终点
  • 备选流:除了基本流之外的各支流,包含多种不同的情况。
  • 场景列表
    1) 场景1 基本流
    2) 场景2 基本流 备选流1
    3) 场景3 基本流 备选流1 备选流2
    4) 场景4 基本流 备选流3
    在这里插入图片描述

7.3.4 正交实验法

概念
  • 使用正交表;本质是统计和分析实验数据,从大量实验中找到合适的实验数据组合
  • ”大量实验中,挑选出一部分具有代表性的点,进行实验分析数据“
  • 数学原理:线性代数,概率论、数理统计等

n阶拉丁方-正交运算
在这里插入图片描述
左边两个 每行每列元素出现一次,右边正交后 每个数对只能出现一次

  • 核心概念
    1)影响实验结果的实验因素(因子)–因素。
    2)每一个因素的不同取值(状况)–水平
    例如,字的显示效果–字体,自豪,颜色称为因素;字体可以选择宋体,楷体等称为水平;
    字体(100个水平)字号(20个水平)颜色(256个水平)
    3)每一列数字出现相同(水平),数对(水平对)出现相同,比如白色和黑色都出现3次,白楷5号、黑楷4号都出现1次
  • 实施步骤
    1) 分析所有对结果有影响的因素
    2)选择水平(充分利用等价类和边界值)
    3)选择正交表。只有特定的因素数和水平数的组合才有对应的正交表。所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般要大于实际的因素数和水平数)

L9_3_3 三水平三因素 9次实验正交表
在这里插入图片描述

7.3.5 功能图法

  • 状态迁徙图法:在遇到有事务流或由于某种条件成立导致状态改变的软件时。
  • 目标:设计足够多的测试用例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁移路径的覆盖。
  • 如进程调度算法
    在这里插入图片描述

7.3.6 测试大纲法

  • 着眼于需求的方法;为列出各种测试条件,将需求转换为大纲的形式,转化为思维导图,树形结构
  • 无需用例设计,一般从根节点开始分析,到叶节点为止,这样的一条路径就是一条测试用例;
  • 一般用于快速的测试和过程记录。用例一般后补

7.3.7 探索性测试法

  • 基于测试人员的经验和直觉
  • 是计划内测试用例设计的补充
  • 也需要设计测试用例

7.3.8 猴子/随意测试法

  • 没有书面测试用例(无意识的行为)
  • 测试往往不太真实,不能达到指定的覆盖率
  • 想要重复操作,极其困难

7.4 测试用例设计方法综合选择

  • 没有哪一方法是单独使用的;
    1)首先进行等价类划分,任何情况下都必须使用边界值分析法;
    2)所有的软件都有文本框–考虑必须一定使用等价类、边界值;
    3)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图和判定表驱动法
    4)对于参数类配置的软件,要用正交实验法选择较小的组合方式达到最佳效果;
    5)状态迁徙图法也是很好的测试用例设计方法,可通过不同时期条件的有效性设计不同的测试数据;
    6)对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程;
    7)可以用错误推测法追加一些测试用例;
    8)对于程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/99201.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scrum敏捷研发迭代式开发

Scrum是一个迭代式增量软件开发过程,是敏捷方法论中的重要框架之一。它通常用于敏捷软件开发,包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括Scrum主管(Scrum Master)、产品负责人(Product Owner&…

【力扣】62. 不同路径 <动态规划>

【力扣】62. 不同路径 一个机器人位于一个 m m m x n n n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条…

ChatGPT 总结前端HTML, JS, Echarts都包含哪些内容

AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu

代码随想录笔记--栈与队列篇

1--用栈实现队列 利用两个栈&#xff0c;一个是输入栈&#xff0c;另一个是输出栈&#xff1b; #include <iostream> #include <stack>class MyQueue { public:MyQueue() {}void push(int x) {in_stk.push(x);}int pop() {if(out_stk.empty()){while(!in_stk.empty…

Redis五大数据类型

Redis五大数据类型 Redis-Key 官网&#xff1a;https://www.redis.net.cn/order/ 序号命令语法描述1DEL key该命令用于在 key 存在时删除 key2DUMP key序列化给定 key &#xff0c;并返回被序列化的值3EXISTS key检查给定 key 是否存在&#xff0c;存在返回1&#xff0c;否则返…

微服务容错 Resilience4j 接口服务-容错原理

微服务容错 Resilience4j 容错原理 4.1 微服务容错简介 在⾼并发访问下&#xff0c;⽐如天猫双11&#xff0c;流量持续不断的涌⼊&#xff0c;服务之间的相互调⽤频率突然增加&#xff0c;引发系统负载过⾼&#xff0c;这时系统所依赖的服务的稳定性对系统的影响⾮常⼤&#…

《PyTorch 2.0深度学习从零开始学》已出版

#好书推荐##好书奇遇季#《PyTorch 2.0深度学习从零开始学》&#xff0c;京东当当天猫都有发售。定价69元&#xff0c;网店打折销售更便宜。本书配套示例项目源码、PPT课件。 本书以通俗易懂的方式介绍PyTorch深度学习基础理论&#xff0c;并以项目实战的形式详细介绍PyTorch框…

如何增强客户支持?用全渠道聊天机器人

您的用户在哪里&#xff1f;您是否想拥有源源不断的客户&#xff1f;全渠道聊天机器人可确保您在他们需要的地方为他们提供一致的客户支持&#xff01; 自技术出现以来&#xff0c;消费者行为已经完全改变。这意味着企业与用户互动和提供客户支持的方式也发生了变化。现在&…

APM32F4XX USB OTA

近期在研究USB CDC协议&#xff0c;使用USB Virtual Port Com功能与上位机通讯做了OTA功能。开发平台&#xff1a;MDK529开发硬件&#xff1a;APM32F411首先看下手册Flash分布&#xff0c;Flash总共8个扇区。 接下来进行Flash分区。 扇区 0 和 扇区 1做Boo区。 扇区 2做APP跳…

【Python】应用:Python数据分析基础

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Python数据分析基础。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次…

(笔记三)opencv图像基础操作

强调&#xff1a;本文只为学习记录做笔记 详细可参考opencv官网 &#xff1a;https://docs.opencv.org/4.1.1/d0/d86/tutorial_py_image_arithmetics.html &#xff08;1&#xff09;将cv2的BGR模式改为RGB模式 #!/usr/bin/env python # -*- coding:utf-8 -*- ""&q…

Seata1.5.2+Nacos分布式事务环境搭建详解

文章目录 一、下载seata server二、配置application.yml三、初始Mysql数据库四、导入初始配置到nacos五、启动测试 本文以seata-server-1.5.2&#xff0c;以配置中心、注册中心使用Nacos&#xff0c;store.modedb&#xff08;mysql&#xff09;为例进行操作。 Seata简介及入门参…

Spring三级缓存解决循环依赖

Spring三级缓存解决循环依赖 一 Spring bean对象的生命周期 二 三级缓存解决循环依赖 实现原理解析 spring利用singletonObjects, earlySingletonObjects, singletonFactories三级缓存去解决的&#xff0c;所说的缓存其实也就是三个Map 先实例化的bean会通过ObjectFactory半…

Spring Cloud Alibaba-Sentinel规则

1 流控规则 流量控制&#xff0c;其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标&#xff0c;当达到指定的阈值时 对流量进行控制&#xff0c;以避免被瞬时的流量高峰冲垮&#xff0c;从而保障应用的高可用性。 第1步: 点击簇点链路&#xff0c;我们就可以看到访…

包含文心一言在内的首批国产大模型 全面开放

8月31起&#xff0c;国内 11 家通过《生成式人工智能服务管理暂行办法》备案的 AI 大模型产品将陆续上线&#xff0c;面向全社会开放。北京 5 家大模型产品分别是百度的 “文心一言”、抖音的 “云雀”、百川智能的 “百川大模型”、清华系 AI 公司智谱华章旗下的 “智谱清言”…

kafak消费数据,webSocket实时推送数据到前端

1.导入webSocket依赖 <!--websocket依赖包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.编写webSocket类 package com.skyable.device.co…

爬虫逆向实战(二十二)--某恩数据电影票房

一、数据接口分析 主页地址&#xff1a;某恩数据 1、抓包 通过抓包可以发现数据接口是API/GetData.ashx 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通过查看“响应”模块可以发现&#xff0c;响应是…

团队多人共用一个WhatsApp是如何做到的?

WhatsApp是如今许多跨境企业用来跟客户进行沟通的重要聊天工具&#xff0c;但是在使用WhatsApp时有一个问题是比较突出的&#xff0c;企业一般拥有的WhatsApp账户是有限的&#xff0c;当很多客户同时上门咨询的话&#xff0c;客服就很难应对。但是如果能够实现团队多人共用一个…

VSCode下载、安装及配置、调试的一些过程理解

第一步先下载了vscode&#xff0c;官方地址为&#xff1a;https://code.visualstudio.com/Download 第二步安装vscode&#xff0c;安装环境是win10&#xff0c;安装基本上就是一步步默认即可。 第三步汉化vscode&#xff0c;这一步就是去扩展插件里面下载一个中文插件即可&am…

企业内部wiki的应用场景与岗位有哪些?有价值吗?

企业内部Wiki是一种基于Web的协作知识管理平台&#xff0c;它允许员工在一个统一的平台上创建、编辑和共享知识。它可以用于许多不同的场景和岗位&#xff0c;为企业提供了许多价值。下面将介绍企业内部Wiki的应用场景和岗位&#xff0c;并探讨其价值。 应用场景&#xff1a; …