版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年接口测试工程师试题及答案一、单项选择题(每题2分,共20分)1.以下关于HTTP方法的描述,正确的是()A.GET请求参数会包含在请求体中,POST请求参数包含在URL中B.PUT方法用于更新资源,具有幂等性C.DELETE方法不具备幂等性,多次调用会导致不同结果D.PATCH方法与PUT方法完全等价,均用于完整替换资源答案:B(PUT方法设计为幂等,多次调用效果一致;GET参数在URL,POST在请求体;DELETE是幂等的;PATCH用于部分更新)2.接口返回状态码为201时,通常表示()A.请求成功,无返回内容B.资源已创建成功C.请求已接受但未处理完成D.资源未找到答案:B(201Created表示资源成功创建,常见于POST请求后)3.使用Postman测试接口时,若需在发送请求前动态生成时间戳参数,应使用()A.Tests脚本B.Pre-requestScriptC.Environment变量D.Global变量答案:B(Pre-requestScript在请求前执行,可用于动态参数生成)4.JMeter中用于模拟多用户并发请求的核心元件是()A.线程组(ThreadGroup)B.HTTP请求(HTTPRequest)C.聚合报告(AggregateReport)D.正则表达式提取器(RegularExpressionExtractor)答案:A(线程组控制并发用户数、循环次数等核心参数)5.接口测试中验证JSON响应的“code”字段是否为200,最合理的断言方式是()A.检查响应状态码是否为200B.使用JSONPath断言“$.code==200”C.检查响应体是否包含字符串“200”D.使用正则表达式匹配“code:200”答案:B(JSONPath可精确验证指定字段的值)6.以下不属于接口安全测试范畴的是()A.验证接口是否使用HTTPS协议B.检查敏感信息(如密码)是否加密传输C.测试接口在1000并发下的响应时间D.验证JWT令牌的签名是否有效答案:C(性能测试关注并发响应时间,安全测试关注传输安全、身份验证等)7.接口自动化测试中,“数据驱动”的核心目的是()A.减少代码重复,通过不同测试数据覆盖多场景B.提高脚本执行速度C.简化断言逻辑D.替代手工测试答案:A(数据驱动通过外部数据(如Excel、YAML)驱动测试用例,覆盖不同输入场景)8.某接口要求输入参数“age”为18-60的整数,以下测试用例设计最全面的是()A.18、60、30B.17、18、30、60、61C.“18”(字符串)、18.5(浮点数)、18D.0、18、60、100答案:B(需覆盖边界值、合法值、上界/下界外的非法值)9.使用Python的requests库发送POST请求时,若要传递JSON格式的请求体,应使用()参数A.paramsB.dataC.jsonD.headers答案:C(requests的json参数会自动设置Content-Type为application/json)10.接口依赖场景中(如A接口返回token需用于B接口),最合理的处理方式是()A.手动记录token并硬编码到B接口请求中B.使用变量提取工具(如正则、JSONPath)从A接口响应中提取token,传递给B接口C.跳过A接口,直接生成假token测试B接口D.要求开发修改接口设计,消除依赖答案:B(通过自动化工具动态提取依赖参数是标准做法)二、判断题(每题1分,共10分)1.接口测试只需验证返回数据的正确性,无需关注响应时间。()答案:×(接口测试需覆盖功能、性能、安全等多维度)2.Cookie和Token都可用于身份验证,但Token通常无状态,更适合分布式系统。()答案:√(Token包含用户信息,服务端无需存储,适合分布式)3.WebSocket接口与HTTP接口的最大区别是WebSocket支持长连接和双向通信。()答案:√(HTTP是短连接、单向请求-响应,WebSocket支持全双工通信)4.接口测试中,“404NotFound”表示服务器处理请求时发生内部错误。()答案:×(404表示资源未找到,500是服务器内部错误)5.使用JMeter进行压力测试时,线程数设置为1000意味着同时发起1000个请求。()答案:×(线程数表示虚拟用户数,实际并发数受Ramp-Up时间和循环次数影响)6.JSON格式的响应体必须包含“code”和“message”字段才算规范。()答案:×(字段规范需根据业务需求,无强制标准)7.Mock测试适用于依赖接口未开发完成时,模拟其响应以保证当前接口测试进度。()答案:√(Mock可解耦依赖,避免阻塞)8.接口自动化测试脚本开发完成后,无需维护,可直接用于所有版本迭代。()答案:×(接口变更时需更新脚本,否则会失效)9.JWT的签名部分可以被解密,因此不能存储敏感信息。()答案:×(签名用于验证数据完整性,无法解密;敏感信息不应放在JWT中)10.接口的“幂等性”是指多次调用接口产生的效果与一次调用相同。()答案:√(幂等性是接口设计的重要原则,避免重复操作导致数据错误)三、简答题(每题8分,共40分)1.请描述接口测试的完整流程,并说明各阶段的关键任务。答案:接口测试流程通常包括以下阶段:(1)需求分析:理解接口文档(如Swagger/OpenAPI),明确接口功能、参数、返回值、约束(如幂等性、安全要求)。(2)测试用例设计:覆盖功能(正常/异常参数)、性能(并发/响应时间)、安全(身份验证/加密)、兼容性(不同客户端)等场景。(3)测试环境搭建:确认测试服务器、数据库配置,确保与生产环境一致性;准备测试数据(如用于注册的手机号、用于支付的虚拟账户)。(4)执行测试:手工测试验证基础功能,自动化测试覆盖重复场景;记录测试结果,标记通过/失败用例。(5)缺陷跟踪:提交缺陷报告(包括请求参数、响应内容、复现步骤),跟踪开发修复进度。(6)测试报告输出:总结测试覆盖度、缺陷分布(如功能类/性能类占比)、风险评估(如关键接口未完全覆盖)。2.接口测试中,如何验证“参数必填性”和“参数类型”?请举例说明。答案:(1)参数必填性验证:测试用例:在请求中移除必填参数(如用户登录接口的“username”),发送请求;预期结果:接口返回明确的错误信息(如“username参数缺失”),状态码为400(BadRequest)。(2)参数类型验证:测试用例:若参数“age”要求为整数,传入字符串(如“十八”)、浮点数(如18.5)、空值(null);预期结果:接口返回“age参数类型错误”,状态码400。示例:某用户注册接口要求“mobile”为11位数字字符串(必填),“age”为整数(非必填)。测试用例1:移除“mobile”,发送请求→应返回“mobile不能为空”;测试用例2:“mobile”为“138abc12345”(含字母)→应返回“mobile格式错误”;测试用例3:“age”为“25.5”(浮点数)→应返回“age必须为整数”。3.请说明Mock测试的应用场景,并列举至少3种常用Mock工具。答案:Mock测试适用于以下场景:(1)依赖接口未开发完成(如支付接口待联调时,模拟“支付成功/失败”响应);(2)依赖接口不可用(如第三方API因故障无法访问);(3)测试极端场景(如模拟第三方接口返回超时、异常错误码);(4)降低测试成本(避免频繁调用真实接口产生费用,如短信验证码接口)。常用Mock工具:PostmanMockServer:通过Postman直接创建模拟接口,支持设置响应数据和延迟;WireMock:独立服务,支持通过JSON/Java代码定义请求匹配规则和响应;MockServer:支持动态响应、日志记录,适合与自动化测试框架集成;JsonServer:快速模拟RESTful接口,通过JSON文件定义数据。4.设计接口自动化测试框架时,需要考虑哪些核心要素?请简要说明。答案:(1)灵活性:支持多协议(HTTP、WebSocket、gRPC)、多数据格式(JSON、XML)的测试;(2)可维护性:采用分层设计(如基础层、业务层、测试用例层),减少代码冗余;(3)数据驱动:通过外部文件(Excel、YAML、CSV)管理测试数据,方便扩展用例;(4)断言机制:支持状态码、响应字段、数据库校验(如接口新增数据后验证数据库记录);(5)依赖处理:提供参数提取(如从A接口响应提取token)、动态变量生成(如时间戳、UUID)功能;(6)报告输出:生成可视化报告(如Allure、HTMLTestRunner),包含用例执行结果、错误日志;(7)集成能力:支持与CI/CD工具(Jenkins、GitLabCI)集成,实现代码提交后自动触发测试。5.某JWT令牌格式为“header.payload.signature”,请说明接口测试中需验证的安全点。答案:(1)签名有效性:修改payload内容后重新计算签名,验证接口是否拒绝非法令牌(正确令牌应验证签名与内容一致性);(2)过期时间(exp):生成过期的令牌,验证接口是否返回“token已过期”;(3)颁发者(iss):使用其他颁发者的令牌,验证接口是否拒绝非信任来源;(4)加密算法:检查header中的“alg”是否为强算法(如HS256、RS256),避免使用“none”(无签名);(5)敏感信息脱敏:检查payload中是否包含密码、身份证号等敏感信息(JWT不应存储敏感数据);(6)HTTPS传输:验证令牌是否通过HTTPS传输,避免明文暴露在网络中;(7)刷新机制:测试“refreshtoken”的有效性(如是否只能使用一次,过期后能否正确刷新)。四、综合题(每题10分,共30分)1.用例设计题:某电商平台“提交订单”接口(POST/api/order/submit),输入参数为:userId(必填,整数)productId(必填,字符串,格式为“P”+6位数字,如P001234)quantity(必填,整数,1≤quantity≤10)addressId(必填,整数,关联用户收货地址)输出:code(200=成功,400=参数错误,500=服务器错误)message(描述信息)orderId(字符串,成功时返回)请设计至少10条测试用例,覆盖功能测试的正常场景和异常场景。答案:用例编号测试场景输入参数预期结果1正常提交订单userId=1001,productId=P001234,quantity=2,addressId=5code=200,返回orderId2userId缺失productId=P001234,quantity=2,addressId=5code=400,message=“userId不能为空”3productId格式错误(无“P”前缀)userId=1001,productId=001234,quantity=2,addressId=5code=400,message=“productId格式错误”4productId长度错误(7位数字)userId=1001,productId=P0012345,quantity=2,addressId=5code=400,message=“productId格式错误”5quantity小于1(0)userId=1001,productId=P001234,quantity=0,addressId=5code=400,message=“quantity需在1-10之间”6quantity大于10(11)userId=1001,productId=P001234,quantity=11,addressId=5code=400,message=“quantity需在1-10之间”7quantity为字符串(“2”)userId=1001,productId=P001234,quantity=“2”,addressId=5code=400,message=“quantity类型错误”8addressId不存在(如9999)userId=1001,productId=P001234,quantity=2,addressId=9999code=400,message=“addressId无效”9重复提交同一订单(幂等性验证)连续调用2次相同参数两次均返回code=200,orderId相同(或第二次返回“订单已存在”)10参数类型混合错误(userId为字符串“1001”)userId=“1001”,productId=P001234,quantity=2,addressId=5code=400,message=“userId类型错误”2.自动化测试题:使用Python+requests+pytest框架,编写“用户登录”接口的自动化测试脚本。接口信息如下:URL:/login方法:POST请求体:{"username":"testuser","password":"e10adc3949ba59abbe56e057f20f883e"}(password为MD5加密)预期响应:{"code":200,"message":"登录成功","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}要求:(1)使用参数化测试,覆盖正常登录、密码错误、用户名不存在3种场景;(2)断言响应状态码为200(正常)或400(异常);(3)断言响应中的code字段符合预期;(4)输出测试报告。答案:```pythonimportpytestimportrequestsimporthashlib测试数据(参数化)test_data=[("testuser","123456",200,"登录成功"),正常登录(密码123456的MD5为e10adc3949ba59abbe56e057f20f883e)("testuser","wrongpass",400,"密码错误"),密码错误(错误密码的MD5)("wronguser","123456",400,"用户不存在")用户名不存在]defmd5_encrypt(pwd):"""MD5加密函数"""returnhashlib.md5(pwd.encode()).hexdigest()@pytest.mark.parametrize("username,password,expect_code,expect_msg",test_data)deftest_login(username,password,expect_code,expect_msg):构造请求体(密码加密)payload={"username":username,"password":md5_encrypt(password)}发送POST请求response=requests.post(url="/login",json=payload)断言状态码assertresponse.status_code==200解析JSON响应res_json=response.json()断言code和messageassertres_json.get("code")==expect_codeassertres_json.get("message")==expect_msgif__name__=="__main__":执行测试并生成Allure报告(需提前安装pytest-allure-adaptor)pytest.main(["-s","-v","alluredir=./allure-results"])```3.性能测试题:某秒杀活动接口(GET/api/seckill/{productId})需支持1000并发用户,要求平均响应时间≤200ms,错误率≤0.1%。使用JMeter设计测试方案,并分析可能的性能瓶颈及优化建议。答案:JMeter测试方案设计:(1)线程组配置:线程数:1000(模拟1000并发用户);Ramp-Up时间:10秒(10秒内启动所有线程,每秒启动100个);循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 9.2《项脊轩志》课件 统编版高二语文选择性必修下册-2
- 2025年事业单位招聘考试综合类专业能力测试试卷及答案(工程类)
- 2026年人工智能图像识别服务协议
- 2026年清洁服务合作协议
- 2026农产品加工技术提升与品牌价值培育研究
- 2026农业技术行业市场市场供求现状分析及投资发展规划研究蓝
- 2026乌克兰农业科技行业市场供需分析及投资评估规划分析研究报告
- 2025中铁一局选拔领导人员副职后备干部笔试历年参考题库附带答案
- 山东省青岛市西海岸新区6中2026届中考语文五模试卷含解析
- 特种设备维护保养检查记录表(报警系统)
- 企业安全生产总体和年度安全生产目标
- 特殊困难老年人家庭适老化改造工作台账
- 奥林巴斯相机μ-840说明书
- 【中考真题】2024年山东省青岛市中考数学试题(含解析)
- GA/T 2167-2024移民管理机构对外窗口设置规范
- 标准化厂房总体设计方案
- 组合铝合金模板工程技术规程
- DB31∕T 1043-2017 暴雨强度公式与设计雨型标准
- 《土建施工员培训》课件
- 机械识图全套课件
- 2025年江苏省南通市中考生物试卷(含答案解析)
评论
0/150
提交评论