【软件测试】其实远远不止需求文档这么简单

我们都知道,软件测试是一门依赖性很强的综合技术,软件测试工程师在施行自己的工作时,总是要依赖其他团队的产出。

  比如,我们要依赖着需求团队给出的需求分析说明书来确定测试的方向,又要依赖开发团队产出的实际代码产品才能真正开展测试的执行。一个测试团队,通常而言是不能独立于其他团队而存在的。

  所以,软件测试基础理论中,我们提出了一个概念,叫做‘测试依据(test basis)’。从字面意义上理解,测试依据就是就是我们测试可以依据它来进行测试分析,以及用例编写的文档或者信息;他被用来指导我们的测试,我们可以从中提炼出‘测什么’‘怎么测’这样测试根本性问题的答案。没有了测试依据,测试工作就将无从下手。

  说到测试依据,我们最直接会想到的就是需求文档了,根据项目特性的不同,他有可能呈现为不同的格式:比如需求规格说明书式,又比如原型图式等等。而根据需求文档内容分解和描述形式的区别,他又有可能呈现为用户故事型(User Story)或者产品需求文档型(PRD)。

  说起这些需求文档,相信很多测试工程师都会叫苦不迭。由于国内IT行业内需求分析力量的普遍薄弱,又或者是甲方用户时常胡搅蛮缠的态度,被我们测试工程师视为生命线和指南针的需求文档在交付到我们手里的时候往往是不堪所用的状况。不但功能描述不清,歧义性,二义性,含糊其词,甚至有可能压根儿就没有某方面的需求。而在我们后期执行测试提出缺陷时,相关方又很喜欢用需求来搪塞测试提出的合理问题(“需求就是这么定义的”,“这不是bug。。。”)。

  基于这样的现状,各种测试的理论中总是不断的强调需求对于我们测试工程的重要性。

  然而理论很丰满,现实很骨感,测试人员的呐喊,有时候未必能得到项目的重视。在需求文档始终得不到补完和修正的情况下,我们该做些什么才能最大程度的弥补需求文档缺失所带来的质量风险呢。

  这里就要回归到文章开头提到的‘测试依据’的概念了。

  我们始终要明白一件重要的事情是,测试依据,其实指的并不仅仅只是需求文档。从本质上说,他应该包括所有可以指导我们测试的信息。下面我们就来一一探讨一下,都有哪些信息我们可以拿来用作测试依据,以及怎么来使用它们。

  首先第一个是开发部门的设计文档,包括我们在软件生命周期中提到的架构设计,详细设计阶段的产出。

  开发部门在进行上述设计工作的时候,有可能会产出比需求阶段更丰富的文档,比如架构设计图,算法设计图,模块的详细设计说明书,接口定义文档,数据库设计说明书,界面设计线图等等等等。

  实际工作中,你会发现,开发部门产出的设计文档往往会包含对产品更详尽,丰富的定义信息。基于这些文档提供的信息,我们就可以更进一步,深层次的确定我们测试所需要覆盖的范围和内容。

  当然,理论上而言,这些设计文档只是开发部门为了实现需求而做出的分析性产出,他并不一定完全匹配最初的产品需求甚至用户需求。我们使用这些设计文档的前提判断是:开发部门与需求部门有足够的沟通,他们的产品设计是符合需求的。为了确认这一事实,我们测试人员可能需要来回往返于开发团队和需求团队(或用户)之间来寻求肯定的答复(一个典型的状况是,需求团队对于用户需求的解读并不够细致详尽,事实上他可能根本没有思考到相应深刻的程度,而对于开发通过主观判断给出的设计,他也许并提不出什么意见,只能表示认可)。

  还有一种状况是,对于某些细节性的处理,也许连设计文档都不曾包括,而是在开发团队与需求人员(或直接客户)的口头,会议交流中确定了某些做法。这些约定,一旦没有知会到我们测试团队,那么我们的测试就会走弯路甚至出错误。所以作为测试团队,我们应该尽可能要求参加进项目调研分析阶段的各项讨论活动和会议,并且要把这些口头约定的内容用文字记下来(比如用邮件,发给各与会方),从而形成我们的测试依据文档。相信我,在项目收尾阶段,我们去交付自己的测试成果时,有这些记录在案的约定处理会让你更有底气。

  极端情况下,开发也有可能将需求中没有涉及到,但是产品又不可能缺少的部分,直接按照自己的开发惯例实现了,连设计文档都没有。比如,在用户定制一个电子商务交易平台时,他可能根本没有去关注用户模块;开发也就顺势用他所最熟知的用户模块的开发形式,完成了该模块的创作。这种情况下,我们测试人员能依赖的依据就更不足了,通常我们只能默认开发人员的开发方式没有问题,只能最大程度的去确保他按照自己想法开发出来的模块没有明显的问题和漏洞。其次,我们还能使用接下来要提到的这些作为依据:

  第二个是行业标准和惯例。

  行业标准说起来是个很玄乎的话题,我们这个产品的行业里到底有哪些标准啊?

  这就要求我们对于对口行业有着深刻的理解了。说起来很难,但这其实是我们作为测试工程师所必须具备的能力之一。

  在一个财会处理类系统中,我们去核算某只债券的收益情况。按照行业标准和惯例,系统应当提供选择,将该只债券最终的利息收入均摊到计息期间的每一天中,即所谓‘计提利息’-这样才能达到财务核算平滑度的目的。这就是财会核算领域内的一个行业标准和惯例,如果我们的系统不设计这样的功能,那么即使需求没有明确提出,我们也可以理所当然的将他做为问题甚至缺陷抛出来。

  再比如在一个Web项目当中,我们可以对站内所有的链接地址进行筛查,防止出现‘孤岛链接’的存在(即这个链接在站内没有任何其他页面可以导向他)。同样这也是现今网页项目的一个行业标准。

  事实上,在当今的软件测试体系工程内,有一些领域大部分情况是没有需求支持,我们通常都会用现存的成熟标准来实现测试-一个典型的例子就是安全性测试。在我们去做安全性测试的时候,大部分情况下都不会有详尽需求来给我们指引,但是我们在这个领域内有着非常成熟的一套测试标准,比如说我们会测试Web项目的cookies安全性,防御XSS攻击的能力,数据库信息加密存储等等等等。

  其实行业惯例的体现还可以类似“在这个行业内,一般都是这样做的--如果我们的产品没有足够的理由不这样做,就要遵循惯例“。这次举个非常简单的栗子,在系统中,我们设计了如下对话框:

  这个对话框符合行业的惯例吗?其实他是有问题的,因为在界面设计惯例中,出于人体工程学考虑,确认按钮一般都放在对话框的右下角,这样才方便用户操作(除非你的用户全都是左撇子并且左手持鼠标)。像这样的对话框按钮设计,完全可以报出一个易用性类别的缺陷,其依据就是”行业惯例“(当然如果你够自信,也可以援引人体工程学的理论作为你的论据)。

  当然在我们引用行业标准和惯例的时候,是需要我们测试人员有足够的经验的。如果你对行业标准和惯例没有足够的了解,就要多关注这方面的知识,多思考,多积累。相信我们对于行业和市场的学习,不但会帮助到我们的日常测试工作,甚至有可能让我们成为对手行业的专家呢。

  从另一个角度而言,一个经验足够丰富的测试工程师,很多时候是可以反过来指导需求和开发工作的开展的。

  第三个是政策法规和政治要素。

  是不是听起来更玄乎了,怎么我们测试人员不但要懂测试,还要懂行业,现在又要懂法律法规了!?

  事实上不必惊讶,一个资深的测试人员确实从知识面的广度上而言是要超出其他岗位的,这是由我们的工作性质和状态决定。质量是我们测试人员的生命线,从某种意义上来说,没有人比我们更关心一个产品的质量和水准,所以我们天然的会对这个产品能涉及到的方方面面性状去进行了解和学习。

  我们还是用栗子来说话。例如,我们现在要开发一个药品零售网站,为消费者提供在线购买医药用品的服务。那么结合着国内的法律法规,我们可以知道,药品的销售可否是受到法规限制的,那么我们的系统就要有违禁药物筛选功能;再比如,处方药是需要得到医生处方才可以被销售的,那么就意味着我们的系统可能要有处方上传功能。

  如果这个系统在需求和设计开发阶段,没有从其他方面限制药品的录入,又没有实现我们上面提到的违禁药筛选和处方上传功能,我们就可以认为这是一个系统风险。在一些情况下,我们完全可以将这样问题作为缺陷上报。

  那政治要素又怎么说?

  同样我们举个栗子:在前些年,大名鼎鼎的PC游戏《足球经理(Football Manager)》某一版本发布时,就在政治上犯了错误。他在制定足球运动员的国籍一项属性中,将‘加泰罗尼亚’作为一个国籍赫然列在选项当中,这就引起了大量西班牙用户的不满,以致遭到了抵制甚至政府出面的封杀(加泰罗尼亚和西班牙的问题自行百度哦)。事实上,如果测试人员在这款产品制作的过程中意识到这个问题,完全是有可能预防这样严重的后果的。

  

  除了我们以上说的这些,能作为我们测试依据的我们还能找出一些来。比如用户手册--手册里阐述的内容当然应该与产品的功能保持一致;又甚至是”自然规律“--比如一个手机APP,即使需求和设计里不做任何规定,我们也知道他应该适配现在市场上的所有主流手机型号(这个栗子也许也能用行业标准来判断);等等等等。

  在许多软件测试的理论中,也有另外一个名词被经常提到,那就是”隐性需求“。这个概念跟本文所提到的这些额外的我们可用的测试依据既有相互重叠的部分,也有相互补充的部分,我们在采集测试依据的时候,可以把这两方面都包含进来,从而形成一个更加完备的测试覆盖面积。

  

  结语:测海无涯苦作舟。我们当然希望我们的需求是完美的,我们的开发是成熟干练和蔼可亲的,然而理想和现实却往往是有差距的。但是换一个角度思考,问题越存在,在解决问题后,才越能彰显我们自身的实力。作为一个测试人员,如何在需求不完备的情况下,利用自己的知识,技能,储备和经验,应用各方面的条件来实现更完备的测试,无疑是我们的挑战,但同样也是证明我们自己的机遇。

  我们可能还会疑虑,如果我基于这些没有得到需求文档支撑的依据报了bug,开发和管理人员会承认吗?笔者认为,你大可不必担心,我们这样报出的缺陷是肯定没有问题,而且是对团队有益的。你完全可以去据理力争,相信经过你们团队的磨合,随着各利益相关方对我们测试水平的逐渐认可,这些问题迟早会得到项目的重视。而你作为一个测试人员的口碑也一定会得到提升。

  以后再遇到需求不足,不明确的情况下,除了苦苦追着需求人员要答复,试着应用这些依据来开展你的测试吧。

Python接口自动化测试零基础入门到精通(2023最新版)

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

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

相关文章

从UEFI如何启动到系统

从UEFI如何启动到系统 文章目录 从UEFI如何启动到系统UEFI须知1. 进入UEFI setup界面2. Setup界面3. BootManager界面4. Shell下操作4.1. 显示启动设备4.2. 进入设备及查看文件4.3. UEFI下的其他操作4.4. UEFI下的一些Shell命令 5. UEFI下更新固件方法GRUBGRUB界面1. 编辑GRUB选…

【unity小技巧】实现由滑动条控制音量的大小

文章目录 前言开始1.配置BGM2.滑动条3.文本组件4.新增音量控制脚本 完结 前言 这期来一个比较基础的课程,也是比较常用的,unity使用滑动条控制音量的大小 开始 1.配置BGM 2.滑动条 3.文本组件 4.新增音量控制脚本 public class VolumeController : M…

数据结构-邻接表广度优先搜索(C语言版)

对于一个有向图无向图,我们下面介绍第二种遍历方式。 广度优先搜索,即优先对同一层的顶点进行遍历。 如下图所示: 该例子,我们有六个顶点, 十条边。 对于广度优先搜索,我们先搜索a,再搜索abc…

人工智能-深度学习计算:层和块

我们关注的是具有单一输出的线性模型。 在这里,整个模型只有一个输出。 注意,单个神经网络 (1)接受一些输入; (2)生成相应的标量输出; (3)具有一组相关 参数…

【Unity之UI编程】如何用UGUI搭建一个登录注册面板

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:UI_…

15 _ 二分查找(上):如何用最省内存的方式实现快速查找功能?

今天我们讲一种针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,很多非计算机专业的同学很容易就能理解,但是看似越简单的东西往往越难掌握好,想要灵活应用就更加困难。 老规矩,我们还是来看一道思考题。 假设我们…

深度学习之基于Yolov5人体姿态摔倒识别分析报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 系统设计概述: 传感器采集:通过在场景中布置摄像头或红外传感器等设备,采集人体…

聊一聊关于手机Charge IC的电流流向

关于手机Charge,小白在以前的文章很少讲,一是这部分东西太多,过于复杂。二是总感觉写起来欠缺点什么。但后来想一想,本是抱着互相学习来写文章的心理态度,还是决定尝试写一些。 关于今天要讲的关于手机Charge的内容&a…

2023 electron最新最简版打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子,以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用,感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档:ht…

使用Ansible中的playbook

目录 1.Playbook的功能 2.YAML 3.YAML列表 4.YAML的字典 5.playbook执行命令 6.playbook的核心组件 7.vim 设定技巧 示例 1.Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 2.YAML #简介# 是一种表达资料序列的格式,类似XML #特…

康耐视VisionPro+C#程序编写

添加引用,用什么就添加什么 康耐视控件名 代码实现 引用命名空间 using Cognex.VisionPro.PMAlign; 实例化工具及训练区域设置 CogPMAlignTool cogPMAlignTool new CogPMAlignTool(); cogPMAlignTool.InputImage cogImageFileTool.OutputImage as CogImage8…

MATLAB_双馈风力发电机-900V直流混合储能并网系统MATLAB仿真

仿真平台为:matlab2016b 双馈感应风机模块、采用真实风速数据。混合储能模块、逆变器模块、转子过电流保护模块、整流器控制模块、逆变器控制模块等模块。 下图分别为母线直流电压以及有功无功输出: 混合储能系统——蓄电池以及超级电容的SOC为&#x…

【Linux系统编程】系统用户和权限的操作

目录 一,Linux的用户 1,用户之间的切换 2,超级用户权限的使用 二,Linux的文件权限 1,文件信息的介绍 2,文件权限的修改 3,用户的修改 3-1,拥有者的更改 3-2,所属…

国际物流常见风险如何规避_箱讯科技

外贸物流是国际贸易的重要环节,其管理和效率的高低直接影响着贸易的成本和效益。因此,外贸企业应该重视物流的组织和管理,提高物流运作的效率。 国际物流基础知识 01什么是“双清包税”和“双清不包税” 双清包税上门又叫双清包税到门&…

vue3+element Plus实现弹框的拖拽、可点击底层页面功能

1、template部分 <el-dialog:modal"false"v-model"dialogVisible"title""width"30%"draggable:close-on-click-modal"false"class"message-dialog"> </el-dialog> 必须加的属性 modal:是否去掉遮罩层…

设计模式_策略模式

策略模式 介绍 设计模式定义案例问题堆积在哪里解决办法策略模式对算法进现封装&#xff0c;抽象 如&#xff1a;IF elseIF 一大堆 可以配合工厂模式使用炼丹炉里做饭 要求 菜谱 和 食材可配置问题在可配置 菜谱封装菜谱 然后抽象菜谱&#xff0c;为了统一使用方法 类图 Cai…

第一章 introduction to software testing

文章目录 基本概念validation / verificationinput domain / output domaindeterministic / non-deterministicterminate / not-terminate Testing概念testing 的目的Fault, failure, error测试三要素 (3 essential pieces of information)测试输入预期输出执行测试 test execu…

Excel·VBA工作表导出为图片

《Excel转图片别再截图啦&#xff01;用这4个方法&#xff0c;高清且无损&#xff01;》&#xff0c;excel转为图片一般方法较为简单&#xff0c;那么能否使用vba将excel转为图片 选中区域导出为图片 zoom设置为2&#xff0c;导出图片较为清晰 Sub 选中区域导出为图片()Dim …

【案例】3D地球

效果图&#xff1a; 直接放源码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content"initial-scale1.0, user-scalableno" …