如何在面试时设计测试用例?

面试题目

测试用例设计最常见的面试题目:界面上有个输入框,有个按钮,输入内容并点击按钮后,完成某项功能。

下面看个具体的例子吧。《Google软件测试之道》中提到的一个题目:
有一个web页面,上面有文本输入框,一个计数(count)按钮,用于计算一个文本字符串中大写字母A出现的次数。请设计出一系列字符串以测试这个web页面。
在这里插入图片描述

记住:面试的时间是有限的,你必须在有限的时间内将你的才能都展示出来。

所以,要全面思考,要条理清晰。现在,请开始你的设计吧~

需求分析

无论进行什么测试设计,首先都要进行需求分析,除了理解产品的功能,还查看一下是否有模糊不明确的地方,比如:
1、需求中要计算大写字母A出现的次数,那小写字母a呢?是否计算在内?
2、本web页面用户会如何使用?即真实的业务场景是什么?
3、页面上是否会有输入限制,比如字符串长度限制?特殊字符是否允许输入?

在这里,我们先假设面试官回答了我们这些问题:
小写字母a也计算在内,输入框中字符串长度限制为100,允许输入任意字符。用户场景仍未知。

用例设计

建议从功能测试、性能测试、安全性测试、易用性测试、异常测试等各个测试角度进行用例的设计。

一、功能测试

主要采取等价类划分和边界值分析的方法进行用例设计,具体如下:
字符串中包含0个A:b
字符串中包含1个大写的A:A
字符串中包含1个小写的a:a
字符串中只包含A,且个数大于1且小于10个:AAA
字符串中只包含A,且个数大于10且小于100个:40个A
字符串中只包含A,且个数为字符串最大值:100个A
字符串中同时包含大写A和小写a:Aa,aaAAaa
字符串中,A的位置在最前面:Abbb
字符串中,A的位置在最后面:bbbA
字符串中,A的位置在中间:bbabb
字符串中包含很多个字符,但不包含A
字符串中包含很多个字符,其中有1个A
字符串中包含很多个字符,其中有多个A
字符串中包含字符个数为最大值,其中有多个A

字符串为空字符串
字符串中包含空格:如A B C a b c
字符串中包含特殊字符:如"java",‘abc’,(a*a),‘a,",’,{a},\na【备注:若能知道底层编程语言,能针对性写出该语言中常用的有意义的特殊字符】
字符串中包含其他对编程语言来说有特殊意义的值:None、True、False、null等
字符串中输入超过最大长度的字符串时,如何处理?是不能输入?还是会有合理提示?

二、易用性测试

1、当字符串个数较多时,能否将字符串显示完整?
2、是否支持复制粘贴操作?(要知道当字符串较长时,若不能粘贴,纯手工输入,呵呵,是无法接受的)
3、页面中输入框和按钮等元素的布局是否合理?

三、性能测试

1、响应时间是否有要求:即点击按钮后,多长时间内显示计算结果?若没有具体的需求,可参考web页面对响应时间的2-5-8秒原则。
(即响应时间在2秒内最佳,若在2到5秒范围内,用户也可以接受。当在5到8秒时,用户不太容易接受,当响应时间超过8秒,用户完全无法接受。)
2、并发用户数是否有要求:是否存在很多用户同时对系统进行操作,是否可能出现响应时间变慢或者CPU利用率等其他性能指标不满足要求的情况?

四、安全性测试

1、该web页面是否需要用户登录后才能操作?
2、该数据会被记录么?web页面关闭后再次打开时,鼠标放在输入框中是否会自动出现之前输入的数据?
3、该web页面使用的具体协议是什么?是否需要使用HTTPS协议来保证数据传输的安全?
4、是否需要采取其他web安全相关的方法来防止恶意攻击等?
(我对安全测试了解不多,如有遗漏或错误,欢迎指正)

五、异常测试

1、输入框输入数据,网络出现异常后,点击按钮,界面如何展示?
2、对于其他异常页面,是否提前进行了处理?比如当服务器处于超负荷情况下,界面不要展示5xx类的错误,而是前端显示出其他更友好的提示?
(我对web测试了解不多,如有遗漏或错误,欢迎指正)

其他考虑

1、测试数据如何准备?比如字符个数较多的字符串,如何生成?应该考虑一下使用一些小工具,或者自己写一段小代码,来生成测试数据。
2、是否考虑自动化测试?首次测试该功能时,以手动测试为主。但后续若可能存在多次测试的情况,需要考虑自动化测试。
3、是否存在对其他字符也有计数的功能需求?如果是这样,那么程序如何设计会更加合理?

特别说明

是否有人会想:这只是一道简单的测试用例设计题,人家只是让你用例设计,又没有让你考虑数据如何准备、测试如何执行等等,有必要搞的这么复杂嘛?!
曾经的我也这样想过,但现在不会了。测试用例设计的时候,若没有对后续测试数据如何准备、测试用例如何执行、如何能提升测试的效率、如何能够提前预防缺陷等等考虑,那就显得太目光短浅了。我们要考虑的不光是如何提升质量,还要考虑效率和成本等多方面目标。这也许就是一个普通测试工程师和一个优秀测试工程师之间的差距。

以《Google软件测试之道》的作者角度来看:
测试工程师要更富有创造性思维,要善于应对模糊性。要关注用户,从系统级别来思考问题。测试工程师是个技术人,为了能够将精力放在更高级别的探索性测试上,就要将一些枯燥的重复性强的手工测试尽量自动化。
So,
1、若你的答案更全面。
2、若你的条理更清晰。
3、若你更能从用户的角度考虑产品功能。
4、若你懂技术,能帮助开发人员提前避免一些风险。
5、若你能想的比面试官还多。

祝面试成功,工作顺利!

  • 11
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值