软件测试工程师面试题:给你一个接口,如何进行测试?

2021-03-0310:53:02后端程序开发Comments4,018 views字数 1746阅读模式

中级软件测试工程师岗位的面试中,总会被问到:给你一个接口,如何进行测试?说实话,这个问题难么?会者不难,难者不会!大家的想法和态度肯定都不会相同。接下来,我们用一个面试中的实例进行好好的分析,看看到底接口该怎么进行测试!下面请看面试题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

软件测试工程师面试题:给你一个接口,如何进行测试?

有如下用户登录的的API接口:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

/userLogin?userName={user_id}&password={passwd}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

对应的数据库的user表字段如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

软件测试工程师面试题:给你一个接口,如何进行测试?

该api接口的需求如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

1.用户名和密码,只能是数字和字母,当不满足时,接口需要返回400的http response code文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

2.用户名和密码不匹配,登录应该失败,这时接口需要返回403的http response code,且需要将user表的该user这行记录下面的failed_count字段加1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

3.用户名和密码匹配,登录应该成功,接口需要返回200的http response code,且在body里需要返回一个长度是36位加密的token,且需要将user表的该user这行记录下面的failed_count字段置为0, last_login_time字段置为当天的时间文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

请完成以下两个题目:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

1.写出该接口的测试用例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

2.当该接口出现bug时写出需要提交的信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

软件测试工程师面试题:给你一个接口,如何进行测试?

题目就是上面的内容,看上去挺复杂的,但是我们只需要静下心来好好的分析一下,从题目、表述和要完成的内容等多个方面去分析:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

首先,就是要看清楚人家要我们出什么样的东西。根据题目要求:我们需要出以下两个东西:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

1、设计测试用例(读API接口和规则,提取需求点)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

2、提交bug(需要什么信息)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

只有搞清楚了要完成的东西,我们才不至于所答非所问,才能按照准确的目标高效的完成。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

其次,我们要分析题目,看看从题目中,我们能分析出来什么有价值的信息:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

1、从API的接口地址中,可以初步判断,该接口的请求方式为:Get。因为参数名和参数值在URL中可见。(这个大家可以参考HTML表单数据提交的过程中的表现,这里就不多说了。)当然也有其他可能,毕竟我们还不知道是什么接口传输协议。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

2、根据数据表中字段,可以知道每一个的含义、数据类型以及该数据类型的边界。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

3、接口测试,一定要跟数据库中的对应数据做查询和对比,数据的变化作为测试的重点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

4、针对需求1,考虑等价类,用户名和密码这两个参数如果不是字母和数字的数据请求,响应码就是400文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

5、针对需求2,用户名必须是在数据库中存在的,密码必须是错误的,响应码就是 403,且该用户条目中Failed_count字段值加1(必须结合数据库,进行数据的比对)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

6、针对需求3,请求参数正确,数据和数据库比对正确了,响应码:200,Body信息为36位加密的token。该用户对应的Failed字段设置为0,最后登录日期为当天日期。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

7、通过上面的分析,我们还有可能发现需求中有不完善之处。用户名符合要求、密码也符合要求,但是用户名不存在时,系统的响应是什么,这个在需求里面没有提及和说明。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

8、int类型是有取值范围:-2147483648------2147483647.,int型会不会在最大值再加1的情况下,变成最小值,然后继续增长,直到又变成0,Failed_count为0,但是last_login_date没有对应的数值存在?。(这是测试中数据类型的边界值的应用,我们应该不仅从业务的边界出发,还应该从技术、语言的角度出发考虑。)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

9、用户名、密码的字符类型varchar,可变长度。过长怎么办?(测试中边界值的应用。)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

10、性能方面,请求的频率可以有多快?请求的间隔时间是多长?请求的并发是多少?同一个IP能不能多账户请求?这些在接口需求中都没有。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

做到了足够的分析后,我们就可以设计测试用例了:把我们所想的内容全都设计和编写出来。下面看几个相关的用例设计的案例:(其余的大家可以想一想)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

软件测试工程师面试题:给你一个接口,如何进行测试?

最后,关于Bug提交需要什么信息?最基本的:缺陷标题、编号、 所属模块、缺陷类型、复现步骤(步骤、预期结果、实际结果)、前提条件、优先级、严重程度、接口系统版本、用到的接口工具及版本。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

这个就不给例子了,因为也没有测试啊!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

最后,大家想想,如果题目再来一个问题:使用你熟悉的编程语言,实现对上述接口的请求,并输出响应码。这个又该怎么去完成?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/20997.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/20997.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定