测试思想-测试设计 史上最详细测试用例设计实践总结 Part2

简介: 测试思想-测试设计 史上最详细测试用例设计实践总结 Part2

史上最详细测试用例设计实践总结


-------------------------接 Part1--------------------------

方法:这里针对业务流程的测试推荐使用场景法。(当然,个人理解业务流程是从系统整体来把握的,局部角度来看,有些只算是操作流程”,但是这个区别并不影响方法的使用)

举例:

 


 

分析:先考虑用户使用场景

场景1:列表有数据,用户把数据按默认方式导出

点击导出->开始导出->查看导出文件

场景2:用户突然不想导出

点击导出->点击取消

场景3:列表有数据,用户把数据按自定义方式导出

点击导出->开始导出->查看导出文件

点击导出->设置导出列->开始导出->查看导出文件

点击导出->设置导出列->设置导出记录数->查看导出文件

场景4:找不到导出的文件,重复导出

点击导出->导出列和记录数设置和上次一样->开始导出->查看导出文件

 

这些主要的考虑了,接下来考虑容错啥的

1.列表没数据,进行导出

2.导出列的边界值测试

 

好了,接下来就是细分和组合等了

细分:比如上面的导出列设置时,可以是全部选中,可以添加部分选中

组合:比如那个取消导出操作可以和其它场景的写在一起

更多详情,搜索场景法

 

再举个例子说明按逻辑设计的好处:

教师端学员信息修改

 

点击修改,弹出修改界面,继续点击单位,出现如图界面

 

要点分析:

此处的修改是服务端管理员对学生端学员信息的修改,如果按业务逻辑来,这里的修改会同步学生端学员信息的修改,这个点不容易遗漏的

 

说明:按业务逻辑来设计用例,容易让自己陷入矛盾的地方

背景:某个在线教育产品,功能模块包含了我的笔记,课程-视频课件播放,其中,我的笔记中,笔记内容记录,来源视频播放界面提交的笔记

举例:按业务逻辑来,可能会如下方式编写

1、打开视频播放界面,输入笔记内容,提交---(预期结果)

2、打开我的笔记--可见提交的笔记

这样看好像没问题,但是细想下,测试我的笔记模块时,会漏掉步骤2的验证么?不会吧,所以这里的步骤2是多余的,可去掉,这里应该对步骤1进行重点测试,不输入、输入字符过长,输入字符含特殊字符,输入字符含换行等

 

那步骤2怎么办?在我的笔记模块新增用例,把步骤1当做一条线,如下

1、打开视频播放界面提交一条笔记(预期结果可免了,视频播放模块已验证过了)

2、打开我的笔记--预期结果(提交时间,内容显示,字符类型支持等)

这里也告诉我们,仅当某个点不会被单独作为一个用例检测点时,才需要进行一个关联,好比上面的学员信息修改,数据同步

 

这样看好像是没错的,但是很大的不足是啥呢?还是上面提到的,人力的重复投入:测试提交笔记时至少测输入字符串的长度,类型支持;测试笔记模块的查阅时也要测试笔记内容是否被截断,要测试特殊字符的显示是否正常等,也要进行提交笔记时执行的测试操作

 

解决方案:没错,还是按逻辑设计用例>>输入笔记->提交笔记->显示笔记,

1、打开视频播放界面,输入笔记内容,提交---(预期结果)

2、打开我的笔记--可见提交的笔记

 

这里可以根据本文中提到的,检测点的思想,进行细化,分成多条用例

比如用例1.记笔记(字符长度测试);用例2.记笔记(字符类型验证),当然对应的用例内容也跟着改,如下

1、打开视频播放界面,输入超长字符的笔记内容,提交---(预期结果)

2、打开我的笔记--笔记显示不截断,过长以…结尾

 

接着可以根据本文中提到的,归到同一个模块,比如笔记模块,分配给同一个人

 

d)独立出公共用例

思想:把某些公用的模块或功能独立出来设计,减少冗余

举例:常见的智能手机,很多模块中选择文字,文字变底色,通常伴随弹出操作面板,类似全选,复制等,那可以考虑在某个模块中把这个功能单独出来设计用例,其它模块则不再重复写

 

e)提高用例复用性

设计用例应该多考虑用例的复用性,可以从以下几个方面来考虑:

1)通用性。通用性是指可复用测试用例并不局限于具体的应用,不过分依赖于被测软件的需求、设计和环境,能够在某一类型、某一领域的相似软件的测试中广泛使用。(可以尝试去构建自己的用例库)

2)有效性。测试用例的目标是尽早发现软件问题

3)独立性。

1.用例之间不存在相互依赖关系

对于测试需求R1R2,测试用例集分别为clc2c1c2的交集为空,并且每个可复用测试用例能够独立运行。测试用例是否具有独立性,决定了测试用例可复用能力的强弱。

如果测试用例之间存在着相互关联,或测试用例的运行环境取决于其他测试用例的执行状态,那么,其中的测试用例不能复用时,与之相关的测试用例的可复用性也不复存在。

2.测试逻辑和测试数据分离

详情见下文

4)标准化

用例组成

 

1、用例编写

1.1用例组成

用例应遵循统一或规范的格式、结构,规范的命名规则,使用术语,用简明、易懂、无歧义的语言来描述,并且具有详细的文档。主要元素如下:

标识符ID:每个测试用例应该有一个唯一的标识符,它将成为所有和测试用例相关的文档、表格引用和参考的基本元素

测试项(用例名):测试用例的标题,所给名称最好能清晰且简洁地表达测试用例的功能,见名知意,即测试目的、验证点。

建议格式:【模块-子模块】用例名

比如:【登录】密码大小写敏感测试

测试需求:对要验证的测试需求的描述和测试要求,如登录验证需求:

a、用户名长度为610位(含6位和10位),

b、用户名由字符(a-zA-Z)和数字(0-9)组成,。

测试环境:where-在哪里测?测试用例运行时所处的环境,包括系统的配置和设定等要求,也包括操作操作系统,浏览器,通讯协议等环境。即软硬件环境。一般来说,在整个的测试模块里面应该包含整个的测试环境的特殊要求,而单个测试用例的测试环境需要表征该测试用例所单独需要的特殊环境需求。

测试前提:测试用例执行前必须满足的条件,如已登录、某个选项已经被勾选

输入数据:which-输入哪些数据?用来执行测试用例的数据。可能包括数据、文件,必要的时候,相关的数据库、文件也必须被罗列。

操作步骤:how-怎么做?操作步骤,如1打开软件,2点击xx按钮

预期输出:标识按照指定的环境和输入标准得到的期望输出结果(包含中间结果和最后结果)

用例关联:用来标识该测试用例与其它用例之间的依赖关系,例如,用例A需要基于B的测试结果正确的基础上才能进行,此时需要在A的测试用例中表明对B的依赖性,从而保证测试用例的严谨性。并非所有的测试用例之间都需要关联

优先级:优先级越高的用例,应越早被执行

优先级通常是这样分的:

首先:核心功能>次要功能

其次:正向用例>逆向用例

也就是说,先确保核心功能正常,再次要功能测试;先确保常规路径运转正常-然后再逆向测试;

注意:

1.优先级之分主要是从关注对用户最有价值的东西这个点出发来考虑的。

2.上述的优先级的顺序,银行为例,银行账户登录,登录模块也包含逆向测试,但是涉及资金安全,登录模块的逆向测试的优先级也大于常规的正向用例的优先级,所以本质上优先级应该是:核心功能正向用例>逆向用例)>次要功能正向用例>逆向用例),而针对核心功能

所在模块:按模块书写,通常情况下,建议【模块-子模块】用例名称

版本号:用于测试用例的版本管理,每个测试用例应按照定义的规则设定一个版本号。

测试阶段:被测软件所处的测试阶段,包括单元测试、集成测试、确认测试、系统测试、验收测试等

测试类型:有功能测试、性能测试、安全测试、用户界面测试、接口测试、安装测试等,可选择多项。

附件:对测试用例附加的一些描述信息,例如文本、图像、模型、与测试用例有关的一些文档,方便测试人员迚一步理解测试用例。


1.2用例编写

1.层次性

2.明确性

3.可测性

4.可读性

 

1.层次性

黑盒理论:输入->处理->输出

设计应用:测试步骤与预期结果对应

举例:

测试步骤1--预期结果1

测试步骤2--预期结果2

 

2.完整性

黑盒理论:输入->处理->输出

设计应用:对输出物进行完整的检验

举例:

数据导出,如图

 


点击导出--弹出导出确认框

确认导出--可在导出目录下看到导出文件

---------------以下对步骤往往被忽略-----------------

打开导出文件--导出记录数正确,内容完整,准确

 

3.可测性

黑盒理论:预期结果vs实际结果->验证是否缺陷

设计应用:预期结果必须可测

举例:

数据查询

 

选择目标状态全部,输入注册时间,点击查询--列出注册时间范围内的的所有学员记录,数据正确,完整

分析:

情形一:列表的数据不是你自己造的,且测试不接触后台数据库,即数据源不知

这种情况下,预期结果的列出所有的数据正确完整,从何验证,这样的预期结果没实际意义

 

情形二:列表的数据是自己造的或者可通过后台查询,即数据源可知

这种情况下,预期结果的列出所有的数据正确完整是可验证的,有实际意义。

所以这里要根据实际情况来写预期结果,以情形一为例:

选择目标状态全部,输入注册时间,点击查询--列出学员记录的注册时间在给定注册时间查询范围内

 

4.可读性

1.数据和逻辑独立性,详见上面

2.语言描述:尽量精炼,用词恰当等

3.规范(我个人不是很赞同)

对用例中用到的元素,输入数据和非输入数据如按钮,控件等,添加标识规范,如输入数据用{},类似按钮控件,链接等非输入数据用【】

 

例子:

在密码框中输入{密码},点击【登录】按钮

关于这点我不是很赞成的,有待讨论,因为需求什么都在变,可能这个版本写登录,下个版本写确认,但是同一个意思,登录系统,所以我个人比较建议用自然语言描述,比如输入密码和用户名,登录系统,这样大大提高用例可复用性。再说了,稍微有点电脑基础的人,一看界面也应该大致知道类似删除,登录,修改之类的元素吧。。。

 

 

目录
相关文章
|
9月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
190 4
|
4月前
|
缓存 测试技术 API
RESTful接口设计与测试实践
通过理解和实践上述原则和步骤,你就可以设计和测试你的RESTful接口了。最后,它可能会变成你为优化系统性能和用户体验所使用的重要工具,因为好的接口设计可以使得从服务器端到客户端的通信更加直接和有效,同时提升产品的使用体验和满意度。如此一来,写一个好的RESTful接口就变成一种享受。
158 18
|
5月前
|
监控 测试技术 数据库连接
利用 RunnerGo 深度探索 API 性能测试:从理论到实践
API性能测试是保障应用稳定性和用户体验的关键环节。本文详细探讨了如何使用RunnerGo全栈测试平台进行高效API性能测试,涵盖测试计划创建、场景设计、参数配置到执行与分析全过程。通过电商平台促销活动案例,展示了高并发下的测试策略与优化措施,如代码与数据库查询优化、数据库连接池扩容、服务器资源配置调整及缓存策略实施等。最终显著提升系统性能,满足高并发需求。API性能测试需持续关注与优化,以适应业务发展和用户需求变化。
202 33
|
5月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
698 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
9月前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
199 11
|
7月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
293 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
6月前
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
9月前
|
测试技术 Python
探索软件测试的深度与广度:从理论到实践
在数字化时代,软件已成为我们生活中不可或缺的一部分。随着技术的不断进步和用户需求的多样化,确保软件质量变得尤为重要。本文将深入浅出地介绍软件测试的核心概念、类型及其在软件开发生命周期中的重要性。我们将通过实际案例,展示如何实施有效的测试策略,并探讨自动化测试的未来趋势,旨在为读者提供一套完整的软件测试知识体系,帮助提升软件质量和开发效率。
|
9月前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
300 7
|
9月前
|
测试技术 Python
探索软件测试的奥秘:从理论到实践
在软件开发的宇宙中,软件测试犹如一颗璀璨的星辰,指引着质量的方向。本文将带你穿梭于软件测试的理论与实践之间,揭示其内在的逻辑和魅力。从测试的重要性出发,我们将探讨不同类型的测试方法,并通过实际案例分析,深入理解测试用例的设计和应用。最后,我们将通过一个代码示例,展示如何将理论知识转化为实际操作,确保软件质量的同时,也提升你的测试技能。让我们一起踏上这段探索之旅,发现软件测试的无限可能。

热门文章

最新文章