当前位置:网站首页>想要写出好的测试用例,先要学会测试设计
想要写出好的测试用例,先要学会测试设计
2022-07-30 20:13:00 【测试界的飘柔】
正确认识测试设计
测试设计是从特定的测试依据中得到测试用例,是为了实现特定测试覆盖的标准化的方法。
测试依据指的是有关测试的信息,比如项目背景、业务需求、领域知识、团队、进度、预算、风险等等,这些因素在经过测试分析后就是特定的测试依据,它们影响着测试设计与执行。
测试设计是测试整个过程的总纲,通常是测试人员的测试思路的体现。在测试界中,有着测试设计是测试的灵魂,也是测试人员的必修课之说。
测试设计的原则及要考虑的因素
在测试过程中,测试人员不可能穷举所有的测试场景或组合,因此在设计测试用例时,要学会抓住测试的要点或关键点,做合理的取舍,这些要点或关键点需要进行充分分析与设计,以达到理想的覆盖率。
测试设计主要考虑的因素如下:
1、需求分析书、产品设计文档等
2、用户实际使用的场景
3、测试需求的目标
4、被测试的对象
5、测试的方法。
测试设计的基本思路
设定测试项包含哪些测试类型,比如功能测试、性能测试、安全性测试、可靠性测试、其他测试等,清楚了解此次的测试类型是否有遗漏。
设定测试项的优先级,先设计高优先级测试项的测试用例,再设计低优先级测试项的测试用例。如果缺少风险分析意识或是风险分析能力不足,就先把所有测试项的测试用例写出来,然后再组织挑选测试用例的优先级。
测试用例在设计时,需要将具有相类似功能的测试项进行抽象并归类,不是简单的编写,更不是简单地复制文档的内容,设计测试用例是需要思考和优化的。
先设计主流程的、正向的测试用例,再设计逆向的、负面的(异常的、非法操作的)、扩展性的流程或功能的测试用例。
试图找出系统或组件的薄弱环节、边界点等,因为这些特殊区域存在更多的缺陷,需要得到更多的测试来降低测试的风险,达到所设定的测试目标。
如何运用测试设计
测试设计方法有很多,主要有以下几种:
不同阶段运用的测试设计方法
在项目或是产品的测试过程中,在不同的测试阶段,存在不同的测试方法。以开发阶段划分,测试过程可以分为单元测试、集成测试、系统测试和验收测试。
单元测试
单元测试是对程序模块进行正确性的检验。如果单元测试目标是达到100%判定覆盖率,那测试设计方法就要采用判定逻辑的逻辑覆盖方法,通过分析和设计,达到测试目标。
集成测试
集成测试是在单元测试的基础上,将所有的程序进行整合的验证。程序的整合由接口完成。集成测试的目标是覆盖所有的接口功能及接口性能的验证,那测试方法就会存在功能性的、非性能的验证。
系统测试
系统测试是验证系统所有的功能、模拟所有软件用户的操作。如果系统功能测试目标是覆盖其各种应用场景,这时测试就要基于场景的设计方法,以求达到测试计划中定义的测试目标。
从上面可以看到,逻辑覆盖、基本路径覆盖属于白盒方法、结构化方法,一般应用于单元测试或代码层次上,但逻辑覆盖不局限于代码层同学可以应用于业务层,这时就需求我们画出业务流程图,通过对业务流程图的分析,设计测试用例覆盖其判定或分支 、基本路径 ,达到业务流程的良好覆盖,比较彻底地支持业务的正常远行。
因此,无论是单元测试、集成测试还是系统测试,都是有一定的应用场景和测试目标,或者说,在特定的场景下选择合适的方法。在软件测试各个阶段中,没有最好的测试设计方法,只有最适合的设计方法。
没有任何单一的测试手段就能满足测试设计的需求,而是运用多种方法,才能满足测试需求。例如,等价类划分和边界值分析就是经常结合起来使用。
另外 ,在单元测试中,我们主要采用逻辑覆盖访求(包括语句覆盖、判定覆盖、MC/DC等)来进行测试。但基于输入域的方法(如等价类划分、边界值分析等)也需求被运用在变量引用、函数参数或接口参数的测试上,这就是基于需求的测试方法(黑盒测试方法)和结构化的测试方法(白盒测试方法)相互结合、形成灰盒测试方法。
最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
现在我邀请你进入我们的软件测试学习交流群:【746506216
】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
软件测试工程师自学教程:
这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】
软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.
美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看
软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试
边栏推荐
- MySQL mass production of data
- 对int变量赋值的操作是原子的吗?
- [Ask] SQL statement to calculate the sum of column 2 by deduplicating column 1?
- MySQL性能优化(硬件,系统配置,表结构,SQL语句)
- 推荐系统-排序层:排序层架构【用户、物品特征处理步骤】
- 基于人脸的常见表情识别(2)——数据获取与整理
- MySQL大批量造数据
- HarmonyOS笔记-----------(三)
- 6.3有定型性 第七章
- Based on the face of the common expression recognition - model building, training and testing
猜你喜欢
化二次型为标准型
【视频】极值理论EVT与R语言应用:GPD模型火灾损失分布分析
[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items
ELK日志分析系统
推荐系统:冷启动问题【用户冷启动、物品冷启动、系统冷启动】
M3SDA: Moment matching for multi-source domain adaptation
MySQL slow query optimization
从离线到实时对客,湖仓一体释放全量数据价值
Linux下载安装mysql5.7版本教程最全详解
Recommended system: cold start problem [user cold start, item cold start, system cold start]
随机推荐
倾斜文档扫描与字符识别(opencv,坐标变换分析)
linux下mysql8安装
对int变量赋值的操作是原子的吗?
[Node implements data encryption]
【Codeforces思维题】20220728
MySQL six-pulse sword, SQL customs clearance summary
MySQL函数(经典收藏)
推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】
树形结构:二叉树的递归非递归遍历、BST
360杜跃进:太空安全风险加剧,需打造一体化防御体系
excel数字下拉递增怎么设置?
MySQL分库分表
在jOOQ中获取数据的多种不同方式
Linux下最新版MySQL 8.0的下载与安装(详细步骤)
After MySQL grouping, take the largest piece of data [optimal solution]
How to build FTP server under win2003
Brush questions record----string
基于人脸的常见表情识别(1)——深度学习基础知识
Mac安装PHP开发环境
Zabbix部署与练习