优秀的测试用例

测试工程师有一样很重要的工作就编写测试用例。测试用例是对需求的另一种描述,它能引导大家进一步加深对系统的理解和对特性的全面关注,从而帮助产品和开发重新审核需求的合理性和一致性,所以应该是测试工程师最重要的一项产出。一般的测试用例分为输入,行为,和希望结果三个部分。这三个部分通常的测试用例都能满足,但是怎样的测试用例才能算上优秀的测试用例呢?基于以往之测试经验,我总结了优秀测试用例的几个特点。

1:正确性:毫无疑问,测试用例必须是需求的正确描述。但是我们往往忘记了多想一步:这是用户正确需要的吗?我曾经有个一个失败的testcase,当一个条件输入异常的时候系统返回-1给前端接口,然后前端返回错误信息,这是当时对异常的处理需求,可是如果多想一步,当一个条件异常的时候难道我们不能返回满足部分条件的结果给用户吗?让用户的体验更加良好吗?

2:完整性:就测试用例本身而言,是无穷尽的,只要是键盘的任意组合都可以算作测试用例。而一个优秀的测试工程师就是从无穷中找到最能保证质量,最能发现bug的测试用例出来,发现无穷的最小集,通常功能测试用例的找寻方法有等价类和边界值是最简单的方法,建议结合使用,先划分等价类,再把等价类中的边界值找出来。我见过很多在=>=之间徘徊的bug。正交法出来的用例一般太多,所以需要测试工程师在正交法的结果中再做组合,建议结合错误定位法减少用例的执行。状态图在数据统计,结算中的使用概率最高。每个状态和流程都需要一一考虑正常和异常的分支,正常的流程一个靠谱的开发能自己保证,但是异常的分支很少有开发考虑清楚,这就是体现测试工程师价值的地方了。但是完整性绝不仅仅是功能测试,除了功能测试之外,常见的还有性能测试安全测试,兼容性测试,安装友好测试,地域语言测试和用户体验测试(usability)

3:输入具体:对于这三个部分我们都希望它是固定的,具体的,比如输入框的输入,我们可以写成具体“诺基亚”,但是不要写“正确的输入”,或者“中文的输入”,这些都会导致测试用例的不确定性。模糊的输入应该在具体输入的上一级结构,作为测试的思路和分类使用。

4:用词无歧义:很多词在不同场景会有不同的含义,比如价格一词在不同的表中就代表不同的价格,甚至在同一表中也有原始价格和卖出价格,所以应该尽量具体的描述关键词的具体信息,如果能贴上专用的id和原始表中的item会对避免歧义有很大的帮助。

5:用例细化:输入的一种组合,或者一条流程线对应一个测试用例,尽量不要在一个用例中融和多种情况,在自动化测试的脚本中为了提高效率我们会在一个自动化脚本中融入各种情况的输入,然后一个动作,所有的输出一次生成,针对这种情况,建议在脚本中对各种输入对应的案例一一备注说明,运行失败的时候也方便新人定位问题。

6:判断点准确无歧义:我经常看到这样的检查点:“结果正确”,“速度合理”,这些检查点对其他人没有丝毫的帮助。所以应该尽量做出让机器也能识别的检查点,比如输出“8,或者“rt<30m”。

7:合理区分优先级:在Bugfree中有4个级别的优先级,从141表示最重要的测试用例,4表示最不重要的测试用例。不同的缺陷管理平台对优先级的定义会有不同,但是都会有优先级的概念。在时间紧张的情况下,优先级的作用会特别大,我们会优先执行比较重要,对系统功能,用户体验影响大的测试用例,将级别比较低的测试用例留在后期或者指派给一些新人来执行。

加分点: 1:用例自动化:有自动化脚本的地址能够一一对应,对于淘宝的bugfree就已经和自动化框架mmt打通,通过测试用例可以直接链接到脚本,方便对用例的理解。

2:记录每轮的测试结果:对于有些功能的测试用例,结果只是简单的pass我们不需要记录,但是对于性能测试这些结果不确定的测试用例,如果能保留每次测试的结果对于之后的测试是很有帮助的。对于fail的部分用例,如果能和bug产生一一对应关系对之后的回归也产生很大的便利。

3:对检查点进行逻辑说明:很多用例有了结果的检查点,但是为什么是这个结果,对于新人来说必须重新翻看需求或者设计文档才能理解。尤其对于算法的测试,理解需求和逻辑是一个比较痛苦的过程,如果能够对每个结果进行一些备注和逻辑上的说明,会和方便自己今后以及新人对用例的理解。

以上是对测试用例特性的一些总结,真正编写测试用例的时候,mm图由上到下的树形结构会对测试用例的结构和思路提供很大的帮助,在测试用例评审的时候也方便展示和说明,所以强烈推荐作为附件上传。而且对系统越加深入的了解越能写出完善的测试用例,很多开发错误的理解测试工程师只需要知道需求就可以了,不需要对程序有代码级别的了解,但是无数的实践证明测试工程师越了解系统的设计,编码的逻辑越能发现潜在的bug和风险。Unit test通常由开发完成比较高效,但是Integration Test开始就必须有测试工程师开始真正介入,这期间能发现很多潜在的问题,如果把风险全部留到System Test的阶段风险是很大的,大量case的回归和问题的定位都会变得更加复杂,成本更加的巨大。所以在时间允许的情况下毫无疑问是前期的测试越完善整体效率越高。

霜波

转载于:https://www.cnblogs.com/xiao-qiang/archive/2013/04/11/3014591.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
某网站性能测试用例 某网站提供会员模板下载、上传、购买、支付等功能,目前进入性能测试阶段,通过性能需求可以了解到主要有以下几个性能指标需要进行测试:   ● 产品页面刷新性能   ● 产品上传性能   ● 产品下载性能   目前给出的指标为:   延迟:   测试项 响应时间 抖动 备注   产品页面刷新 <5秒 <2秒   产品下载相应时间 <4秒 <2秒   吞吐量:   编号 项 吞吐量   Perf.T.1 所有登录用户在线状态更改频率 每10分钟1次   Perf.T.2 每日页面平均访问量 60000次   Perf.T.3 每日下载量 50000   Perf.T.4 平均每日新增会员数量 500   Perf.T.5 高峰同一模板下载量 100用户并发下载   Perf.T.6 高峰不同模板下载量 150用户并发下载   容量:   编号 项 容量   Perf.C.1 用户数 <=100万   Perf.C.2 活动用户数 10000   Perf.C.3 模板中心总用户数 <=25万   根据如上性能需求及数据我们该如何设计性能测试用例及场景呢?(可以说给出的性能需求很垃圾,没有丝毫价值,但没办法还是点做啊)   首先,我不去在乎它要求的性能是什么,我只需要去做在一定的测试环境下对系统进行压力测试,找到各个性能指标的临界点就好了,至于是否达到性能指标,在和性能需求对照编写测试报告即可。   所以,针对这几个需要进行性能测试的页面,我们做一下分析,如何设计场景才能尽可能准确地体现出系统的性能:   先说一下搜索页面   搜索页面根据对项目的了解,搜索后,将所有符合条件的结果遍历出来,显示在前台,每页的显示数量是一定的,超出的部分分页显示。根据上面的描述我们可以看出搜索结果是在将符合条件的所有结果集均发送到前台页面,对于页面显示对性能的消耗我们可以忽略不计,主要的压力来自数据的传输、sql的执行及应用服务器的处理过程,所以我可以从两个方面设计场景:   a、虚拟用户一定,不同数据库数量级的情况下,搜索的性能   如何确定虚拟用户的数量成为一个关键,我们可以让客户提供一个常规情况下每天访问用户数(如果没有实际数据可参考,可以根据产品方案中期望的用户数来代替),我们就用这个用户数来进行测试;再来分析一下不同的数据库数量级,如果系统运营1年的产品数据量是5万条,那么我们就根据这个值分别取1W条、3W 条、5W条、10W条、20W条数据量来进行测试(具体的分法可以根据实际情况而定),所以对于这个测试目标,我们可以设计5个场景进行:   虚拟用户数 数据库数量级 录制页面 并发用户数执行时间思考时间   100 10000 搜索页面 随机产生 30分钟 加入思考时间   100 30000 搜索页面 随机产生 30分钟 加入思考时间   100 50000 搜索页面 随机产生 30分钟 加入思考时间   100 100000 搜索页面 随机产生 30分钟 加入思考时间   100 200000 搜索页面 随机产生 30分钟 加入思考时间   b、一定数据库数量级,不同量虚拟用户的情况下,搜索的性能   我们定下来一个常规的数据库数据量,在数据量不变的情况下逐步增加虚拟用户数,测试一下不同虚拟用户压力下系统的性能   虚拟用户数 数据库数量级 录制页面 并发用户数执行时间思考时间   50 50000 搜索页面 随机产生 30分钟 加入思考时间   80 50000 搜索页面 随机产生 30分钟 加入思考时间   100 50000 搜索页面 随机产生 30分钟 加入思考时间   120 50000 搜索页面 随机产生 30分钟 加入思考时间   150 50000 搜索页面 随机产生 30分钟 加入思考时间   产品上传   影响上传性能的主要因素有上传文件的大小和上传的请求数,所以我们就从这两个方面设计用例。   a、虚拟用户数一定,上传不同大小的文件   虚拟用户数 上传文件大小 录制页面 并发用户数 执行时间 思考时间   50 100k 上传页面 随机产生 30分钟 取消思考时间   50 300k 上传页面 随机产生 30分钟 取消思考时间   50 500k 上传页面 随机产生 30分钟 取消思考时间   50 800k 上传页面 随机产生 30分钟 取消思考时间   50 1M 上传页面 随机产生 30分钟 取消思考时间   b、上传文件大小一定,不同量的虚拟用户   虚拟用户数 上传文件大小 录制页面 并发用户数执行时间思考时间   20 300k 上传页面 随机产生 30分钟 取消思考时间   50 300k 上传页面 随机产生 30分钟 取消思考时间   80 300k 上传页面 随机产生 30分钟 取消思考时间   100 300k 上传页面 随机产生 30分钟 取消思考时间   产品下载   影响下载性能的主要因素有下载文件的大小和下载的请求数,所以我们就从这两个方面设计用例   a、虚拟用户数一定,下载不同大小的文件   虚拟用户数 下载文件大小 录制页面 并发用户数执行时间思考时间   50 100k 下载页面 随机产生 30分钟 取消思考时间   50 300k 下载页面 随机产生 30分钟 取消思考时间   50 500k 下载页面 随机产生 30分钟 取消思考时间   50 800k 下载页面 随机产生 30分钟 取消思考时间   50 1M 下载页面 随机产生 30分钟 取消思考时间   b、下载文件大小一定,不同量的虚拟用户   虚拟用户数 下载文件大小 录制页面 并发用户数 执行时间 思考时间   20 300k 下载页面 随机产生 30分钟 取消思考时间   50 300k 下载页面 随机产生 30分钟 取消思考时间   80 300k 下载页面 随机产生 30分钟 取消思考时间   100 300k 下载页面 随机产生 30分钟 取消思考时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值