测试工程师软件面试问题:我给你一个接口,如何测试?
在软件中级岗位的面试中,总会被问到:我给你一个接口,你怎么测试它?说实话,这个问题很难吗?对于精通的人来说不难,但对于不会的人来说就很难了!每个人的想法和看法肯定不会一样。那我们就用面试中的例子好好分析一下,看看接口应该怎么测试!请看下面的面试题:
有一个用户登录的API接口如下:
/userLogin?userName={user_id}&password={passwd}
用户数据库表对应的字段为如下:
至 api接口要求如下:
1.用户名和密码只能由数字和字母组成。如果不满足,接口必须返回响应代码 400 http
2。用户名和密码不匹配,因此登录失败。此时接口应该返回http 403响应码,并且用户表中用户行记录下的failed_count字段应该增加到1
3。用户名和密码匹配,登录应该成功,接口返回http 200响应码,body中返回36位加密token,users表中用户行记录下的failed_count字段可以将last_login_time字段设置为0,但必须设置为一天中的时间
请填写以下两个主题:
1。为该接口编写一个测试用例。
2。记录界面出现错误时需要提供的信息。
标题就是上面的内容。看起来挺复杂的,但我们只要静下心来,从标题、表达方式、要完成的内容等几个方面仔细分析一下:
首先要清楚地看到人们想要什么样的东西我们来生产 .根据主题要求:我们需要想出以下两件事:
1。规划测试用例(阅读API和规则,提取需求点)
2.提交bug(需要什么信息)
只有当我们识别出它们时,我们才能回答我们需要完成的问题,才能按照确切的目标高效地完成它们。
其次,我们需要分析问题,看看我们可以从问题中分析出哪些有价值的信息:
1。从该API接口的标题我们可以初步断定该接口的请求方法为: Get 。因为参数名称和参数值在URL中都是可见的。 (您可以参考HTML表单数据提交时的行为,这里不再赘述。)当然,还有其他选择。毕竟我们还不知道接口传输协议是什么。
2。根据数据表中的字段,您可以了解数据的含义、数据类型以及每种数据类型的限制。
3。为了测试接口,您需要查询并与数据库中的相关数据进行比较。数据变化是测试的重点。
4。对于要求 1,请考虑等价类。如果用户名和密码参数不是字母数字数据请求,则响应代码为 400
5。对于要求 2,用户名必须在数据库中。存在,密码一定是错误的,响应码为403,用户输入的Failed_count字段值加1(必须与数据库合并才能比较数据)
6。对于请求3,请求参数正确,数据与数据库比对正确,响应码为:200,body信息为36位加密token。该用户对应的“失败”字段设置为 0,上次登录日期为今天。
7。通过上面的分析也可以发现需求中的不完善之处。用户名符合要求,密码也符合要求。但如果用户名不存在,系统的响应是什么?要求中没有提及或解释这一点。
8。 int 类型的取值范围为:-2147483648-----2147483647。 int类型会不会在最大值加1时变成最小值,然后继续增长,直到达到另一个值?变成0,Failed_count为0,但是last_login_date没有对应的值? 。 (这就是测试中数据类型限制的运用,你不仅要从公司限制出发,还要从技术和语言的角度考虑。)
9.用户名和密码的字符类型为变长varchar。如果时间太长该怎么办? (测试中阈值的使用。)
10。可以多快提出容量请求?请求之间的间隔是多长?索赔并发数是多少?多个账户可以申请同一个IP吗?这些都不包含在接口要求中。
经过充分的分析,我们可以设计测试用例:设计并编写所有想要的内容。我们来看一些相关的用例规划示例:(剩下的你可以想到)
最后,提交bug需要哪些信息?最基本的:错误标题、编号、所属模块、错误类型、重现步骤(步骤、预期结果、实际结果)、先决条件、优先级、严重性、接口系统版本、接口工具、使用的版本。
这里就不举例了,因为没有测试!
最后,如果还有其他问题,请考虑一下:使用你知道的编程语言来实现上述接口请求并输出响应代码。如何实现这一目标?
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。