软件测试如何做到充分性测试?

做软件测试要想保质保量,就要做到测试充分,什么是测试充分,就是把所需要覆盖的场景都要覆盖到。如何做到场景全面覆盖,特别是在时间紧任务重的时候?我把我这些年来工作的一点经验总结一下分享给大家,希望对大家有点帮助:

1 提前介入测试

那么什么时候测试介入比较好?在需求明确下来进入开发之前,测试就可以介入了解需求的相关内容了。这块一般有两个阶段:
  第一个阶段是需求澄清阶段,这个阶段就是需求接口人向开发讲解需求的详细要求及实现功能,这个时候测试就可以参与进来一起听,听过之后我们就对这个需求有了一个大概的了解,知道了这个功能的是要做什么,输入输出是什么,为后期了解详细的实现方案做准备。
  第二个阶段是开发实现方案澄清阶段,这个阶段一般是相关的开发人员把需求的功能实现方案和详细逻辑跟需求提出人和接口人确认,我们这个时候参与进来,就可以根据开发讲的实现方案和逻辑了解相关的的内容:比如算法判断逻辑是啥,取值是啥,输入值的类型是啥,取的哪个表哪个字段的值,或者调取那个接口服务,异常输入又是如何处理的,结果体现在哪里等等。
  当然有些小公司是没有给这些阶段的时间的,拿到需求就可能是口头说一下开发就直接实现,不会再次的澄清,这个时候我们怎么办,只有自己主动找开发沟通,遇到与开发理解不一致的时候,还要找产品经理或需求拉口人再次确认,来避免需求不清晰导致的一些不必要的问题,也为我们后期的测试用例编写找到明确的答案。

2 测试分析,测试用例设计

根据前期的了解,接下来我们就是要把这些存在于我们脑海中的信息转化为文字形式列出来,并分析出我们的测试场景。
  为啥要把这些信息转化文字,不根据所想直接列测试场景,因为这些信息存在我们脑海中的很容易忘记,而且不是很清晰,只有通过有章法的梳理信息后,才能形成对我们有用的信息。不知道大家有没有这样的情景,一个需求你看文档或者听需求接口人和开发都讲过了,你也知道是啥了,感觉没啥问题了,可是当你下去写测试用例的时候,你还是会有些地方模糊不清楚。那么把我们了解的信息形成文字,就能很好的帮助我们解决这个问题。
  如何梳理这些信息呢,我一般是按照这样的顺序来的:
1)先分析需求的背景,业务要求。
  把之前了解的需求背景都写出来,遇到不明确的及时询问相关人员,直到明确。比如一个需求的背景是这样的:业务人员在一线作业的时候发现某个模块在一些国家是需要特殊型号的,而在系统订单中默认配置的是另外一个型号,他们希望配置这个国家订单的时候,系统能自动识别出来并把这个模块替换成指定的型号。那我们在写需求背景的时候不仅仅是写上面那段话了,就要把“一些国家”中的国家给明确写出来,就是这些国家是哪几个国家,国家名称是啥,代码是啥,同时模块型号也要明确写出来,替换前的模块是哪个?型号是啥?替换后的模块是啥,型号又是啥?
2)分析需求实现方案和逻辑
  这里就是把我们前期了解到的开发实现方案和逻辑一一罗列出来,有必要的可以用图画出来如开发的实现流程,逻辑判断流程,数据走向等等。就比如上面那个需求,开发的实现方案是应该包括这个国家是从订单哪个信息里面取出来的,需要更换模块型号的国家又是放在哪里的,是怎么取模块型号的,更换后的结果在哪里体现等等。那我们在这个分析模块就要把这些都列出来,并一一明确。
3)分析测试要点,测试要素
  根据前面两项的分析,我们应该很快的就理出我们的测试要点,重点关注项等内容。就说上面这个模块型号更换吧,我们知道了:国家,指定模块型号,更换后的模块型号体现在哪里,都是我们的关注对象,同时我们还应知道这个更换型号对于没有不在指定国家的范围内的,型号是不受影响的。那么这些就是我们的测试要点和要素了。
4)列出测试场景
  根据上面的分析,我们可以把我们所需要测试的场景以表格的形式写出来了。
5)把测试场景转化为测试用例
  到此,我们就可以输出测试用例了,那我们这个用例到底充分与否,结果输出是否正确,我们的理解是否到位呢?接下来我们就要请相关的人员对我们的文档和用例进行一个评审了。

3 测试用例评审

测试用例评审不仅仅评审的是测试用例,还有我们对这个需求的理解和我们的思路,所以在评审的时候我们应该先把我们的测试分析文档讲一下,然后再把我们的测试用例拿出来给大家讲一下,重点讲测试的输入和输出结果。
  这样下来在开发和系统设计人员的帮助下,我们就可以及早发现用例的不足以及我们忽略的测试点,及时补充测试用例,完善测试用例。这个在以前的公司测试用例评审是要求很严的,每个参于评审的人都必须要提出问题点,就是为了避免有些参于评审的人员只参于不评审,导致一些问题遗留到最后。

4 严格按照测试用例执行测试

这一点很重要,为什么这么说呢?因为你测试用例设计的再好,你不按照它来执行,你的测试就不可能做到充分。
  还记得有一次我做好了一个需求的测试用例,评审完去测试的时候,我觉得自己记得差不多了就按自己记的开始测试没有按测试用例一个个的执行,前面测试的很快,问题也不多。等后面回归测试的时候,我就突然发现多出好几个问题,原因就是我没按测试好的测试用例全面覆盖漏测了两个关联点,打此以后,我再也不敢脱离测试用例,自己凭记忆测试了。

5 分解需求

有些需求接到的晚或着手测试的晚,功能又复杂,又要求按时上线,这个时候怎么办?

把需求测试用例完成后,按功能分成几个小功能点,分配给多个组员测试(当然这个在给参与测试的人员之前要把需求功能详细的讲解一下),在测试的过程中要保持经常沟通,做到宁可交叉重复测试也不脱节测试。
  我记得当时有一个web系统的功能,前期的时候因为忙着应对其他紧急的需求,就把它放在一边了,后面提上日程的时候发现留给我的时间不多了,我一个人测试肯定测试不全,这时我就主动找主管沟通,多调两个同事来和我一起测试,然后在两个同事的协助下,才顺利完成了这个功能的测试。

6 交叉测试

对于大的需求或都功能复杂的需求要做到多人交叉测试,这种测试在系统测试的时候就可以进行,以前我所在公司的项目每到系统测试都会进行这样的安排,这样就可以避免到后期回归测试出现更多的问题。

7 重点功能要及时跟踪进行测试充分性分析

对于那些功能复杂,风险性高的项目,我们要在每进行完一轮测试,进行一次测试充分性分析以便及时做出调整。
  有一次我们有一个比较大的改动,而这个改动涉及到了我们这个软件流程中的一个核心点,也就是涉及到的内容比较多,然而留给测试的时间却不是很多只有两周,怎么办呢?组长首先把这个改动按影响到的功能点细化分了一下,分给了三个人进行测试,每天她都跟进统计测试进度,分析问题分布点,跟进问题修改情况,然后再根据这些及时调整测试策略,经过两周紧张的有序的测试,这个功能最终稳当的上线。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

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

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

相关文章

基于springboot实现二手图书交易平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现二手图书交易平台系统演示 摘要 本文讲述了基于B/S模式的校园二手交易网站统的设计与实现。所谓的校园二手交易网站统是通过网站推广互联企业的二手物品和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订单处…

ctfshow——反序列化

文章目录 web 254——啥也没web 255——反序列化对变量进行赋值(1)web 256——反序列化对变量进行赋值(2)web 257——对象注入web 258——对象注入(绕过preg_match)web 259 web 254——啥也没 这里就是使用GET传输,use…

Python光速入门 - Flask轻量级框架

FlASK是一个轻量级的WSGI Web应用程序框架,Flask的核心包括Werkzeug工具箱和Jinja2模板引擎,它没有默认使用的数据库或窗体验证工具,这意味着用户可以根据自己的需求选择不同的数据库和验证工具。Flask的设计理念是保持核心简单&#xff0c…

spring6学习笔记

1.环境准备 1.idea建立一个空项目,jdk要求是17 2.Maven配置(和mybatis里一样) 3.新建一个模块 2.ocp原则 3.依赖倒置原则(DIP) 什么是依赖倒置原则? 1.面向接口编程,面向抽象编程,不要面向…

Nginx----高性能的WEB服务端(四)

一、http 协议反向代理 1、反向代理:缓存功能 ​ proxy_cache zone_name | off; 默认off #指明调用的缓存,或关闭缓存机制;Context:http, server, location #zone_name 表示缓存的名称.需要由proxy_cache_path事先定义proxy_cache_key string; #缓存中…

win11开启IPV6并手动设置地址

win11开启IPV6并手动设置地址 ipv6手动设置 假设你想要配置的IPv6地址是2001:0db8:85a3:0000:0000:8a2e:0370:7334,子网前缀长度为64位,并且默认网关是2001:0db8:85a3::1。 手动配置IPv6地址的示例步骤(Windows操作系统)&#x…

基于springboot + vue实现的前后端分离-汽车票网上预定系统(项目 + 论文)

项目介绍 系统是一个B/S模式系统,采用Spring Boot框架,MySQL 数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得汽车票网上预订系统管理工作系统化、规范化。本系统的使用使管理人…

一加 Ace 3 原神刻晴定制机正式发布 打造 2024 行业深度定制新标杆

2 月 28 日,备受广大加油及《原神》玩家期待的一加 Ace 3 原神刻晴定制机正式发布,16GB512GB 配置售价 3399 元,将于 3 月 5 日上午 10 点正式开售。除一加自有官方渠道外,一加 Ace 3 原神刻晴定制机也将在原神天猫旗舰店、抖音原…

【VSCode】解决VSCode远程连接问题:远程主机可能不符合 glibc 和 libstdc++

今天用VSCode进行ssh连接时,提示“远程主机可能不符合 glibc 和 libstdc VSCode 服务器的先决条件”。查了一下发现这个问题主要是由于VSCode在一月份发布的最新版本v1.86中要求远程主机 glibc>2.28导致的,所以ssh连接Ubuntu 18.04的时候就会提示这个…

面试数据库篇(mysql)- 12分库分表

拆分策略 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 1,冷热数据分离 2,减少IO过渡争…

CentOS7如何使用Docker部署Wiki.Js知识库并实现公网远程访问?

文章目录 1. 安装Docker2. 获取Wiki.js镜像3. 本地服务器打开Wiki.js并添加知识库内容4. 实现公网访问Wiki.js5. 固定Wiki.js公网地址 不管是在企业中还是在自己的个人知识整理上,我们都需要通过某种方式来有条理的组织相应的知识架构,那么一个好的知识整…

YOLOv8改进 | 独家创新篇 | 结合SOTA思想利用双主干网络改进YOLOv8(全网独家创新,最重磅的更新)

一、本文介绍 本文给大家带来的改进机制是结合目前SOTAYOLOv9的思想利用双主干网络来改进YOLOv8(本专栏目前发布以来改进最大的内容,同时本文内容为我个人一手整理全网独家首发 | 就连V9官方不支持的模型宽度和深度修改我都均已提供,本文内容支持YOLOv8全系列模型从n到x均可…

什么是API接口测试

什么是 API ? API 是“应用程序编程接口”的缩写,是一种允许不同应用程序之间相互通信和交换数据的接口。就好像在餐厅点餐一样,你只需要告诉服务员你想要的食物,而不需要了解厨房中的具体操作,服务员会把你的订单传递…

博弈论---Nim游戏(公平组合游戏,概念,证明异或为0就是必败态,示例)

目录 概念: 公平组合游戏ICG 有向图游戏 Nim游戏 先手)必胜状态 先手)必败状态 如何确定先手是否必胜或者必败(都采用最优策略) 证明:全部异或为0则是必败状态 综上: 例子 概念&#…

如何对比 MySQL 主备数据的一致性?

随着业务范围的扩大,很多企业为了保障核心业务的高可用性,选择了 MySQL 主从架构,这一套方案通常具备主备数据同步、数据备份与恢复、读写分离、高可用切换等特性,是一种相当成熟可靠的数据库架构方案。然而这套方案在特定情况下可…

c#使用log4net的3种调用方法

https://blog.csdn.net/summer_top/article/details/107961245 第一步:下载log4net。 右键项目引用,进入管理NuGet包。 搜索log4net,下载安装。 第二步:创建LogHelper类。 public class LogHelper { private LogHelp…

Java泛型简介

Java泛型简介 Java泛型是在Java 5中引入的一个特性,它允许程序员在编译时指定类、接口或方法能够接受的类型。泛型的主要目的是提供编译时类型安全检查,避免在运行时因为类型转换错误而导致的ClassCastException。 在没有泛型之前,Java中的集…

Spring08、使用注解开发

8、使用注解开发 8.1、说明 在spring4之后&#xff0c;想要使用注解形式&#xff0c;必须得要引入aop的包 在配置文件当中&#xff0c;还得要引入一个context约束 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.sprin…

SpringMVC 学习(五)之域对象

目录 1 域对象介绍 2 向 request 域对象共享数据 2.1 通过 ServletAPI (HttpServletRequest) 向 request 域对象共享数据 2.2 通过 ModelAndView 向 request 域对象共享数据 2.3 通过 Model 向 request 域对象共享数据 2.4 通过 map 向 request 域对象共享数据 2.5 通过…

采用广度优先搜索-BFS遍历图

基本思想 1.建立一个队列 2.把初始顶点加入&#xff0c;此后每次取出队首顶点进行访问 3.把从该顶点出发可以到达的&#xff0c;未曾加入过队列的顶点全部加入队列 4.不断取出&#xff0c;直至队列为空结束 遍历实现 1.邻接矩阵实现 const int maxn100; const int INF10000…