【测试开发】用例篇

简介: 测试用例的基本要素测试用例的给我们带来的好处测试用例的设计方法测试用例的总体设计方法基于需求的设计方法具体的设计方法等价类边界值因果图场景设计法错误猜测法测试用例的有效性测试用例的粒度和评价测试用例的粒度测试用例的评价面试案例

测试用例的基本要素


测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合

这组集合包含:

测试环境、操作步骤、测试数据、预期结果等要素。


评价测试用例的标准:对比好坏代码的评价标准


  • 用例表达清楚,无二义性。。
  • 用例可操作性强。
  • 用例的输入与输出明确。一条用例只有一个预期结果。
  • 用例的可维护性好。
  • 用例对需求的覆盖率高,
  • 暴露程序Bug的能力强力。


用例的基本要素可以参见如下例子:


68.png


测试用例的给我们带来的好处


测试执行者的依据

使得工作可重复,自动化测试的基础

评估需求覆盖率

用例的复用

积累测试的方法思路以供后续借鉴

使用中带来困扰

测试用例的设计是费时费力的工作,往往设计测试用例所花费的时间比执行所花费的时间还多

解决如下问题:

不知道是否较全面的测试了所有功能 测试的覆盖率无法衡量 对新版本的重复测试很难实施 存在大量冗余测试影响测试效率


测试用例的设计方法


测试用例的总体设计方法


基于需求的设计方法


RBT( Requirements-Based Testing)是基于需求的测试方法,会使测试更加有效,因为 它使测试专注于质量问题产生的根源,即需求。


基于需求的测试是一种最根本的软件测试,重点关注以下两大关键问题。


(1)验证需求是否正确、完整、无二义性,并且逻辑一致。

(2)要从“黑盒”的角度,设计出充分并且必要的测试集,以保证设计和代码都能完全符合需求


案例1:

用户需求:

购买3000块钱以内的华为智能手机

测试用例:

1.价格<=3000元

2.品牌为华为

3.智能手机

4.手机功能验证:

4-1.打电话

4-2.接电话

4-3.发短信

4-4.收短信


案例2:

软件需求:

1.1.1.1.5.3 事件流

1.若用户未收到激活邮件,可在登录界面录入电子邮件及密码后,再次发送激活邮件。

2.每次发送的激活邮件,仅在发送邮件后起24小时之内有效,超过24小时后需重新发送激活邮件。


测试用例:

1-1、未收到邮件,登录时输入电子邮件及密码后,再次发送激活邮件

1-2、已收到邮件,登录时输入电子邮件及密码后,不发送激活邮件

2-1、收到邮件,24小时内进行激活

2-2、收到邮件,24小时后链接过期进行激活。

2-3、收到邮件,已激活,24小时后链接过期,再次点击激活?


页面检查:

1、收到激活邮件

2、邮件内容正确

3、激活URl正确,可激活

4、再次激活提示已激活

5、过期激活提示已过期



具体的设计方法


等价类


69.png


超市买水果


有效等价类:苹果、桃子、梨

无效等价类:青菜、米、饮料,…


边界值


70.png


因果图


因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。

因果图需要掌握的基本知识


71.png

  • 恒等

72.png


73.png


74.png


因果图法设计测试用例的步骤如下:


(1)分析所有可能的输入和可能的输出。

(2)找出输入与输出之间的对应关系。

(3)画出因果图。

(4)把因果图转换成判定表。

(5)把判定表对应到每一个测试用例。


案例:


75.png


步骤如下:

76.png


77.png


78.png


79.png


80.png


场景设计法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,使测试用例更容易理解和执行


81.png



错误猜测法


基于经验和直觉,找出程序中你认为可能出现的错误,有针对性地设计测试用例。经验可能来自于在对某项业务的测试较多,也可以来自于售后用户的反馈意见,或者从故障管理库中整理bug。梳理出产品以往哪些地方容易出现问题,问题越多的地方,潜在的bug也就越多。


案例:

以注册为例

  1. 校验中特殊字符空格的处理?
  2. 密码校验中的大小写?
  3. 姓名中的特殊字符?
  4. 密码发送是否明文?


测试用例的有效性


测试用例对应的功能已删除,不可操作了


微信刚出来时与QQ可互发消息,下一个版本后就不可以发消息。


执行一条测试用例未发现BUG,实际该处有BUG


苹果7手机微信添加了mobile单车小程序,扫码不能开锁,只能使用mobile APP开锁,测试用例未涉及到苹果7微信小程序扫码开锁。


执行一条测试用例发现了BUG


苹果7手机微信添加了mobile单车小程序,用例已写到了苹果7微信添加mobile小程序扫码开锁,问题被发现


执行一条测试用例未发现BUG,实际该处BUG已修改


苹果7手机微信添加了mobile单车小程序扫码开锁,可以正常开锁


测试用例的粒度和评价

测试用例的粒度

粒度:指测试用例编写的详细程度。


测试用例可以写得很简单,也可以写得很复杂。最简单的测试用例是测试的纲要,仅仅指出要测试的内容,如探索性测试中的测试设计,仅会指出需要测试产品的哪些要素、需要达到的质量目标、需要使用的测试方法等。


而最复杂的测试用例就像飞机维修人员使用的工作指令卡一样,会指定输入的每项数据,期待的结果及检验的方法, 具体到界面元素的操作步骤,指定测试的方法和工具等。


(1)测试用例写得过于复杂或详细,会带来两个问题:一个是效率问题,另一个是维护成本问题。另外,测试用例设计得过于详细,留给测试执行人员的思考空间就比较少,容易限制测试人员的思维。


(2)测试用例写得过于简单,则可能失去了测试周例的意义。过于简单的测试用例设计其实并没有进行“设计”,只是把需要测试的功能模块记录下来而已,它的作用仅仅是在测试过程中作为一个简单的测试计划,提醒测试人员测试的主要功能包括哪些而已。测试用例的设计的本质应该是在设计的过程中理解需求,检验需求,并把对软件系统的测试方法的思路记录下来,以便指导将来的测试。


大多数测试团队编写的测试用例的粒度介于两者之间。而如何把握好粒度是测试用例设计的关键,也将影响测试用例设计的效率和效果。应该根据项目的实际情况、测试资源情况来决定设计出怎样粒度的测试用例。


主要考虑可以参考如下内容:


产品的质量要求

项目对用例的要求

测试时间和资源是否充分


测试用例的评价


测试用例设计出来了,如何提高测试用例设计的质量?就像软件产品需要通过各种手段来保证质量一样,测试用例的质量保证也需要综合使用各种手段和方法。


评审分为正式和非正式评审。



同行评审

用户检查

项目组评审


(1)测试用例的检查可以有多种方式 但是最敏捷的应当属临时的同行评审。同行评审,尤其是临时的同行评审,应该演变成类似结对编程一样的方式。从而体现敏捷的“个体和交互比过程和工具更有价值”,要强调测试用例设计者之间的思想碰撞,通过讨论、协作来完成测试用例的设计,原因很简单,测试用例的目的是尽可能全面地覆盖需求,而测试人员总会存在某方面的思维缺陷,一个人的思维总是存在局限性。因此需要一起设计测试用例。


(2)除了同行评审,还应该尽量引入用户参与到测试用例的设计中来,让用户参与评审,从而体现敏捷的“顾客的协作比合同谈判更有价值”这一原则。这里顾客的含义比较广泛,关键在于如何定义测试,如果测试是对产品的批判,则顾客应该指最终用户或顾客代表(在内部可以是市场人员或领域专家);如果测试是被定义为对开发提供帮助和支持,那么顾客显然就是程序员了。


(3)由测试负责人组织协调开展会议,用例编写人对用例进行讲解,参会人员有异议的当场提出。


面试案例


某公司招聘测试工程师时,有一道这样的笔试题:

”某手机软件有用TF卡导出数据的功能,请写出测试此功能点的思路”


82.png

相关文章
|
6月前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
6月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
244 5
|
2月前
|
测试技术
软件测试用例设计之微信群抢红包经典用例
作者在浏览招聘网站时遇到为微信群发和抢红包设计测试用例的问题,作为软件测试新手,作者通过实际体验并撰写测试案例来加深对业务的理解,并分享了测试案例表格。需要注意的是,该用例未考虑添加银行卡支付、红包类型选择及红包描述。
79 5
软件测试用例设计之微信群抢红包经典用例
|
2月前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
84 1
|
2月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
66 4
|
3月前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
76 4
|
3月前
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
127 2
|
3月前
|
存储 测试技术 API
apifox实例应用-自动化测试用例for循环的使用
总结来说,通过在Apifox自动化测试用例中结合for循环的使用,我们可以有效地对接口进行批量测试,提升测试效率和覆盖率。同时,通过参数化测试数据的灵活应用,能够确保我们的接口在不同的输入条件下都能保持正确的行为。这种方法能够显著减少手动测试工作量,同时通过标准化的流程确保测试的一致性。
216 0
|
5月前
|
人工智能 测试技术 索引
基于LangChain手工测试用例生成工具
使用Python的LangChain框架,测试工程师能自动化从需求文档生成思维导图。代码示例演示了如何加载文档,提取信息,创建向量索引,执行检索,并通过PlantUML生成MindMap图像。流程中,AI替代了手动梳理需求和创建测试用例的过程,涉及的关键组件包括TextLoader、OpenAIEmbeddings、FAISS检索和AgentExecutor。该实践帮助掌握LangChain的检索和Agent功能,以实现文档到测试用例的智能转换。
85 1
|
4月前
|
测试技术 Apache
单元测试策略问题之设计有效的单测用例问题如何解决
单元测试策略问题之设计有效的单测用例问题如何解决