您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > DevOps持续交付的实验
恒生电子股份有限公司|项目应用背景•互联网2.0的需要–持续运营•全员参与、互动交流•快速迭代•持续测试、持续交付•传统的流程模式已经无法满足快速交付的要求背景说明•传统交付模式•形成部门壁垒,降低工作效率背景说明•应对方案本次演示内容•分享在ARESCloud的DevOps实验–沟通和总结前期试验的经验自动打包自动升级部署用例管理和自动执行用例执行框架用例开发框架自动打包打包、部署、测试环境准备交给技术经理自动打包•问题定义–手工或简单脚本操作效率低–错误会遗留到后期阶段,增加返工–需要专人操作,浪费资源更新代码代码走查编译打包初步检查自测验证提交测试冒烟准入自动打包•改进方案–重复的事情交给电脑去做–技术经理一人负责和,减少沟通环节•实现–整合版本管理、自动打包、自动测试、代码自动检查•效果–技术经理在版本管理系统一键完成打包过程自动打包–效果自动打包–实现原理•JenkinsRemoteAPI–提供远程代码调用Jenkins的各种功能自动打包–实现原理•JenkinsRemoteAccessAPI–提供远程代码调用Jenkins的各种功能–查询信息•/job/JobID/api/json–会提供最新版本及打包情况、下一个版本号等信息–触发打包•/job/JobID/build–查询版本构建信息•/job/JobID/BuildNO/api/json–提供打包的进展情况–下载进度日志•/job/JobID/BuildNO/logText/progressiveHtml–…查询进度自动打包–实现原理•JenkinsRemoteAccessAPI–查询信息–触发打包–查询版本信息–下载进度日志–…客户端路由分发服务端查询版本信息提交打包服务调用自动打包–安全控制•两层防护–HTTPBasicAuthentication•身份访问令牌–APIToken•API访问令牌•更简单的建议–划分安全区•只有版本管理系统允许访问打包服务器自动打包–总结•处理方式–更新代码、编译、打包交由Jenkins完成–代码走查通过在Jenkins上挂接自动走查工具–初步检查、自测和冒烟准入通过Jenkins驱动冒烟用例自动完成更新代码代码走查编译打包初步检查自测验证提交测试冒烟准入自动升级部署测试环境准备是一件费时费力的事情自动升级部署•问题定义–环境问题导致人员等待,效率降低–随着互联网的快速交付需要,升级频率加快–多阶段、分布式、灰度…,升级部署复杂度提供自动升级部署•解决方案–整合Jenkins、升级脚本、IAAS云技术•多阶段自动升级•版本回退–未来展望:灰度、多版本同时运行自动升级部署•目前完成–技术经理打包完成,开发集成环境已经升级完成,项目团队可以立即开展内部测试•实现原理–在Jenkins的后处理步骤增加升级脚本调用自动升级部署–原理•升级脚本①从归档服务器下载指定版本的升级包②解压缩到对应版本目录③将本机专有配置更新到配置文件④开启服务器TIPS:使用Linux软连接指向需要启动的版本,无需修改服Web服务器配置自动升级•项目组员即可立即使用环境自动升级•后期计划–构建多阶段环境,如系统测试环境,并在版本管理中操作”提交测试”时,自动建立SVN测试基线,并使用对应的版本升级系统测试环境;在提交发布时,使用版本自动升级仿真环境–多版本同时运行(灰度),通过服务总线实现多版本请求路由用例管理和自动测试选择用例、执行用例是测试人员的重要工作用例管理和执行•问题定义–选择哪些用例?–时间都去哪了?•找用例•准备工具•写报告用例管理和执行–效果用例管理和执行•功能–按照提测范围自动关联用例用例管理和执行•功能–按照提测范围自动关联用例–在管理系统直接驱动用例执行用例管理和执行•功能–按照提测范围自动关联用例–在管理系统直接驱动用例执行–多阶段支持•同一个用例逻辑根据测试阶段不同挑选不同测试数据–自动生成测试报告用例管理和执行–原理•服务化用例管理和执行–原理•服务化–用例执行环境•用例配置服务–扫描可执行的用例,并调用用例管理系统的类型更新服务通知本执行环境支持哪些用例以及是如何执行•用例执行和报告服务–提供用例执行调用接口,执行用例并生成执行报告–用例管理系统•用例类型更新服务–设置自动用例的执行方式用例执行框架将用例发现、用例执行服务化用例执行框架•启动时–扫描当前环境可以执行的用例•两种用例约定–TestSuite的名称定义为/suite/子系统/模块/需求/CaseXXXX.xml–TestClass名称定义为CaseXXXX.xml»其中XXXX是0-9的数字组合,对应用例ID»可以在用例ID后增加其他非数字的名称以补充说明–调用用例管理系统API注册自动用例•扫描后系统会判断新增用例和删除用例,并调用用例管理系统的API设置该用例是否可以自动执行以及执行方式(目前仅完成了testng方式,jmeter执行方式正在编写)用例执行框架–原理•启动时–搜索TestSuite–搜索TestClass–与本地库比较判断新增或删除–向用例管理系统注册用例执行方式用例执行框架•运行时–响应/test/run服务接口•参数:–caseId:需要执行的用例ID,必填–runId:执行ID,默认0»在提测版本的测试时,对应测试计划中的执行ID;即,如果用例是从用例编写执行,相当于是开发阶段测试;如果将用例关联到测试计划执行,则执行结果是当次版本测试的执行–j_teststage:测试阶段,默认是DEV»测试阶段用于用例执行时选择对应的测试数据,测试人员可以为不同测试阶段的测试环境准备各自的测试数据,复用同一份测试逻辑–callback:JSONP的回调接口,默认执行完成后是将浏览器转发到报告页面,如果提供了JSONP回调,可以返回执行结果的JSON格式用例执行框架–原理•运行时–响应/test/run服务请求–组装和调用TestNG用例开发框架快速开发用例的组件用例开发框架•说明–框架本身直接使用TestNG,我们主要是增加了方便使用的部分组件和功能•此部分是技术细节,可以跳过•主要实现功能–HTTPClient–T2Client–行情5Client–JDBCClient–基于Class的动态测试数据–基于配置参数的动态测试数据HTTPClient•使用方式–例:测试一个OAuth2授权的服务•说明–target:参数URL,返回一个HttpRequest–HttpRequest可以•addHeader:添加请求头•addParameter:添加参数•get/post/delete/put:发送请求HTTPClient•说明–请求返回:HttpResponse–HttpResponse方法:•getStatus:返回HTTP状态码•getContent:返回应答文本•getJSON:如果应答是JSON格式,直接返回JSON•getBody:如果是下载等,直接获取二进制流•其他功能和改进–super.authorize():自动按照配置文件中的信息登录和授权Oauth2,后续请求可以自动设置访问令牌HTTPClient•其他功能和改进–request.enableCookie():•手工控制是否启用Cookie,用于模拟不同客户端连接–request.addParameterIF:•如果值为空,自动忽略•对数组参数,可以在一个语句添加–HTTPS自动授权•自动对所有HTTPS进行授权,无需额外挂接证书为什么自己做一个:其实推荐使用Apache的HttpClient41)Apache的有Bug,反应太慢,如在系统错误时,返回内容是在ErrorInputStream的,需要额外处理的,提了半年才改好2)Apache的使用起来不够方便,提出增加单句访问功能,一直不改3)Apache在安全方面做了很多限制,要使用一些特殊操作需要很费劲从底层切入T2Client•一句完成请求–无需额外准备Event,DataSet…,一条语句即可完成T2调用行情5Client•通过H5协议访问行情这个接口是基于手机版的行情5SDK改装过来的,还不太成熟JDBCClient•支持多数据库•自动清理连接,放在连接泄漏•直接对最底层连接操作,可以模拟各种特殊场景其他功能•动态测试数据–简化测试用例编写,仅需要关注业务逻辑和业务数据–CVSDataProvider•只需要配置dataProvider=“CVSDataProvider”,系统会自动查找当前测试类同名的测试数据–支持多阶段,例如ClassName是ABC,测试阶段是SIT,优先匹配ABC-SIT.csv适合于复用度比较低的用例其他功能•动态测试数据–ParameterizedCVSData•按照TestSuite中定义的参数自动匹配测试数据–系统在执行测试方法时自动查找名称是TestData参数所指定的并且是当前测试阶段的测试数据适合于复用度比较高的用例,通常情况下,一个功能我们只需要编写一个正常逻辑处理和一个异常逻辑处理即可,但是可以配上各种输入的测试数据形成N个测试用例恒生电子股份有限公司|
本文标题:DevOps持续交付的实验
链接地址:https://www.777doc.com/doc-2909877 .html