当前位置:网站首页>想要写出好的测试用例,先要学会测试设计
想要写出好的测试用例,先要学会测试设计
2022-07-31 01:19:00 【小梧敲代码】
正确认识测试设计
测试设计是从特定的测试依据中得到测试用例,是为了实现特定测试覆盖的标准化的方法。
测试依据指的是有关测试的信息,比如项目背景、业务需求、领域知识、团队、进度、预算、风险等等,这些因素在经过测试分析后就是特定的测试依据,它们影响着测试设计与执行。
测试设计是测试整个过程的总纲,通常是测试人员的测试思路的体现。在测试界中,有着测试设计是测试的灵魂,也是测试人员的必修课之说。
测试设计的原则及要考虑的因素
在测试过程中,测试人员不可能穷举所有的测试场景或组合,因此在设计测试用例时,要学会抓住测试的要点或关键点,做合理的取舍,这些要点或关键点需要进行充分分析与设计,以达到理想的覆盖率。
测试设计主要考虑的因素如下:
1、需求分析书、产品设计文档等
2、用户实际使用的场景
3、测试需求的目标
4、被测试的对象
5、测试的方法。
测试设计的基本思路
设定测试项包含哪些测试类型,比如功能测试、性能测试、安全性测试、可靠性测试、其他测试等,清楚了解此次的测试类型是否有遗漏。
设定测试项的优先级,先设计高优先级测试项的测试用例,再设计低优先级测试项的测试用例。如果缺少风险分析意识或是风险分析能力不足,就先把所有测试项的测试用例写出来,然后再组织挑选测试用例的优先级。
测试用例在设计时,需要将具有相类似功能的测试项进行抽象并归类,不是简单的编写,更不是简单地复制文档的内容,设计测试用例是需要思考和优化的。
先设计主流程的、正向的测试用例,再设计逆向的、负面的(异常的、非法操作的)、扩展性的流程或功能的测试用例。
试图找出系统或组件的薄弱环节、边界点等,因为这些特殊区域存在更多的缺陷,需要得到更多的测试来降低测试的风险,达到所设定的测试目标。
如何运用测试设计
测试设计方法有很多,主要有以下几种:
不同阶段运用的测试设计方法
在项目或是产品的测试过程中,在不同的测试阶段,存在不同的测试方法。以开发阶段划分,测试过程可以分为单元测试、集成测试、系统测试和验收测试。
单元测试
单元测试是对程序模块进行正确性的检验。如果单元测试目标是达到100%判定覆盖率,那测试设计方法就要采用判定逻辑的逻辑覆盖方法,通过分析和设计,达到测试目标。
集成测试
集成测试是在单元测试的基础上,将所有的程序进行整合的验证。程序的整合由接口完成。集成测试的目标是覆盖所有的接口功能及接口性能的验证,那测试方法就会存在功能性的、非性能的验证。
系统测试
系统测试是验证系统所有的功能、模拟所有软件用户的操作。如果系统功能测试目标是覆盖其各种应用场景,这时测试就要基于场景的设计方法,以求达到测试计划中定义的测试目标。
从上面可以看到,逻辑覆盖、基本路径覆盖属于白盒方法、结构化方法,一般应用于单元测试或代码层次上,但逻辑覆盖不局限于代码层同学可以应用于业务层,这时就需求我们画出业务流程图,通过对业务流程图的分析,设计测试用例覆盖其判定或分支 、基本路径 ,达到业务流程的良好覆盖,比较彻底地支持业务的正常远行。
因此,无论是单元测试、集成测试还是系统测试,都是有一定的应用场景和测试目标,或者说,在特定的场景下选择合适的方法。在软件测试各个阶段中,没有最好的测试设计方法,只有最适合的设计方法。
没有任何单一的测试手段就能满足测试设计的需求,而是运用多种方法,才能满足测试需求。例如,等价类划分和边界值分析就是经常结合起来使用。
另外 ,在单元测试中,我们主要采用逻辑覆盖访求(包括语句覆盖、判定覆盖、MC/DC等)来进行测试。但基于输入域的方法(如等价类划分、边界值分析等)也需求被运用在变量引用、函数参数或接口参数的测试上,这就是基于需求的测试方法(黑盒测试方法)和结构化的测试方法(白盒测试方法)相互结合、形成灰盒测试方法。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!
自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享
边栏推荐
猜你喜欢
tkinter模块高级操作(二)—— 界面切换效果、立体阴影字效果及gif动图的实现
DOM系列之 offset 系列
BOM系列之Navigator对象
ROS Action communication
MySQL高级-六索引优化
Kyushu cloud as cloud computing standardization excellent member unit
Problem record in the use of TypeScript
Teach you how to configure Jenkins automated email notifications
孩子的编程启蒙好伙伴,自己动手打造小世界,长毛象教育AI百变编程积木套件上手
Meta元宇宙部门第二季度亏损28亿 仍要继续押注?元宇宙发展尚未看到出路
随机推荐
无线模块的参数介绍和选型要点
typescript15- (specify both parameter and return value types)
In Google Cloud API gateway APISIX T2A and T2D performance test
TypeScript在使用中出现的问题记录
Zabbix干啥用?
使用PageHelper实现分页查询(详细)
TiKV主要内存结构和OOM排查总结
297. 二叉树的序列化与反序列化
Kyushu cloud as cloud computing standardization excellent member unit
Know what DTU is 4GDTU equipment
黄东旭:TiDB的优势是什么?
Shell变量与赋值、变量运算、特殊变量
Multiplication, DFS order
TiDB 操作实践 -- 备份与恢复
金融政企被攻击为什么要用高防CDN?
数字图像隐写术之卡方分布
Can deep learning solve the parameters of a specific function?
Yolov7实战,实现网页端的实时目标检测
BOM系列之history对象
Word/Excel 固定表格大小,填写内容时,表格不随单元格内容变化