自动化接口测试在饿了么的实践之路API可视化工具研发的历程邱化峰自动化集成的复杂度沟通的成本及复杂度测试人员的效率安全性问题流程的标准化面临的问题测试行业面临的挑战面临的问题多协议支持,多协议间的相互调用SOA的RPC调用Thrift协议模块和分层的增加集成的复杂度沟通的成本及复杂度测试人员的效率及质量安全性问题开发跟测试之间的沟通成本前端工程师跟后端工程师沟通的成本不同项目间的人员的沟通成本黑盒和白盒测试分工,黑盒做不了白盒人员的事情好的白盒人员和自动化人员很难招聘到接口的覆盖率是否达标系统部署了多少个端口,多少个服务测试人员是否进行过安全测试流程的标准化自动化有无统一的Case管理和维护流程有无标准及最佳实践自动化的回归自动化的分发和执行及报告如何解决这些问题基于,设计了自己的回归工具需要在不同的环境中有相同的账号集成的复杂度沟通的成本及复杂度测试人员的效率及质量安全性问题自动扫描接口的变动,并通知自动回归相关设计接口变动的项目,并通知跨项目间接口变动的项目自动回归,并通知可视化API测试工具的开发,辅助测试人员提高测试效率支持针对接口的代码覆盖率自动化接口的扫描,自动化接口的文档展示,自动化提示Case的变动测试的环境配置中,收集了所有服务的端口号及URL提供了基于HAR的批量的端口及服务解析功能流程的标准化自动化有标准的Case管理和维护流程流程有标准的代码编写规范,以用来自动化的接口扫描流程的自动化通讯的自动化API自动化架构展示文档化工具手工录入或HAR导入RAMLSwaggerMarkdownAPI的定义扫描程序扫描API的来源场景设定选择和组装API手工组装HAR批量生成代码迁移用户场景的用例验证用例触发回归回归执行定时回归即时触发事件触发按需回归结果展示回归集成测试复杂度的挑战•1.饿了么使用面向服务的架构(Service-orientedarchitectures,SOA)•和Thrift来构建基础的服务•2.SOA和Thrift间相互调用•随着模块的增加,这些测试分支的组合,将会呈现几何级的增长模块1模块2模块2模块1模块5模块3模块4模块62个模块3个分支项目中人员之间沟通复杂度的挑战•1.开发跟测试之间的接口变动挑战•2.前段开发工程师跟后端开发工程师的接口变动挑战•3.相互依赖的项目之间的接口变动挑战项目中人员之间沟通复杂度的解决方案•1.即时的扫描代码,把接口的变动通知给测试,开发和前端•2.自动的回归相关源码变动的APP,回归完后将结果通知本项目中的所有人员•3.回归项目中有相互接口依赖的所有的APP,回归完后将结果通知本项目及涉及项目的所有人员•主要的策略,将变动通过邮件的方式,由之前的没有变动提醒,变为主动推送让项目中的人员及时的了解接口的变化测试人员的效率的挑战•1.黑盒测试人员做不了白盒测试人员的事情•2.好的白盒人员市场上很难招聘到•3.测试人员很难及时跟上开发的变动,对接口进行全面的回归•4.接口的覆盖场景是否全面•5.不同项目间的测试人员的沟通和交流测试人员的效率的解决方案•1.让黑盒人员可以做白盒测试人员的事情(可视化的API的测试工具)•2.针对接口测试引入代码覆盖率,来衡量API的接入质量•3.将开发编写的文档,自动化扫描接口,让测试人员可以明确的知道每一个API的用途,及每一个参数的意义•4.提供手工组装API的Case,和通过HAR批量的生成Case的功能•5.旧有的Case移植的问题,通过提供SDK,让有代码编写能力的,继续编写代码进行测试•6.提供SOA和Thrift的可视化测试工具且不需要他们编写代码,像业务人员录入订单一样,只需要填入参数便可进行接口测试创建项目保存Case创建服务名称配置端口协议按需回归导入录入API创建Suite选择调试API验证结果数据验证API的接入步骤-手工组装HAR文件过滤及保存脚本的修改API的接入步骤-批量生成如何动态的测试SOA-SOA设计Thriftcode_genDynamicClassloadingDynamicCallMethod如何动态的测试Thrift安全性的挑战•1.系统部署了多少端口,多少个的服务•2.测试人员是否进行过安全性的测试流程的标准化•1.有无统一的Case管理和维护流程•2.有无统一的工作流程•统一的文档编写规范和统一文档编写工具•统一的代码编写规范代码编写的及文档的规范化•用例编写的规范化,按照最佳实践去编写用例规范•基于业务场景去组装测试用例,要覆盖主要的业务场景•用例评审制度,澄清需求,让开发和产品及自身知道要求做什么测试用例的规范化•代码发布成功后,如何在半个小时内回归所有接口•回归完毕后,测试用例的维护流程的规范化回归流程的规范化•代码扫描工具的规范化•辅助检查API路径的工具的规范化•代码覆盖率的工具的规范化辅助工具规范化自动化•1.自动化的回归•2.自动化的分发和执行•3.自动化的报告框架的发展及规划•1.从开发写文档起就开始规划测试•2.减少信息交流瓶颈•3.能够让开发和测试在短时间内知道变更带来的影响•4.提升测试人员的效率,提升测试质量•5.目前不支持条件(IF,while等等),需要把Case扁平化•6.测试不应该是被动的一个验证过程,而是主动的推进产品和质量的演进过程•7.通过对API的一些模式识别来支持或者替代部分人工对API的测试