深圳门户网站建设案例,福田网站建设龙岗网站建设罗湖网站建设罗湖网站建设,为企业做一件小事,代码生成器怎么用简介#xff1a; 对于现代软件研发来说#xff0c;持续、快速、高质量、低风险地交付需求特性#xff0c;是业务对研发的主要诉求。而要做到这一点#xff0c;除了要有良好的架构设计、卓越的工程能力#xff0c;快速可靠的测试反馈也是其非常重要的一环#xff0c;达到这… 简介 对于现代软件研发来说持续、快速、高质量、低风险地交付需求特性是业务对研发的主要诉求。而要做到这一点除了要有良好的架构设计、卓越的工程能力快速可靠的测试反馈也是其非常重要的一环达到这一点需要依靠测试自动化。 作为面向企业开发者的DevOps平台云效提供了丰富的能力帮助大家在DevOps流程中落地测试自动化实践。 对于现代软件研发来说持续、快速、高质量、低风险地交付需求特性是业务对研发的主要诉求。而要做到这一点除了要有良好的架构设计、卓越的工程能力快速可靠的测试反馈也是其非常重要的一环达到这一点需要依靠测试自动化。
作为面向企业开发者的DevOps平台云效提供了丰富的能力帮助大家在DevOps流程中落地测试自动化实践。
简单来说企业自建测试自动化体系分为三种形式
形式一基于开源测试自动化工具
很多企业自建测试自动化都是从选择一个开源测试自动化工具开始的。一个开源测试自动化工具往往包含以下几部分以RobotFramework为例
测试执行工具如robot测试用例如.robot文件测试结果和报告如执行完生成的log.html和report.html测试能力库用来完成特定的测试如SeleniumLibrary
对于一个测试自动化体系往往还需要加上
调度和执行平台结果分析与统计报表测试结果通知能力基于云效整个的架构是这样的。 测试自动化用例存储在云效代码平台的git仓库中用于执行测试自动化的测试步骤基于云效的自定义step能力创建触发和串联代码、构建和自动化测试的云效流水线通知机制钉钉消息针对质量情况的数据报表可以直接显示在流水线测试结果中也可以将数据发送给自建的数据报表服务展示以RobotFramework框架为例在云效上接入开源测试自动化工具有以下几步。
1. 选择或编写对应开源测试自动化工具的flow step
云效没有内置开源测试自动化组件但是基于其提供flow cli工具企业可以很容易地定制符合自己要求的测试自动化组件。如何通过flow cli实现并发布一个flow step可以参考云效学院flow cli相关内容。
这里仅以RobotFramework为例对其关键部分做一下说明。
首先通过flow step init命令初始化一个flow step组件的项目。
1.1 执行的环境和命令
在step.yaml文件中image为测试执行的环境镜像这里是 registry.cn-hangzhou.aliyuncs.com/feiyuw/flow-robotframework:1.0镜像的内容在Dockerfile里面定义。
在items中添加type为shell的输入框用于设置执行命令这里默认值为robot -L Trace -d robot_logs .当前目录“.”即为代码所在目录。
# ...
image: registry.cn-hangzhou.aliyuncs.com/feiyuw/flow-robotframework:1.0
items:- label: 执行命令name: STEP_COMMANDtype: shellvalue: |# NOTE: output directory should be robot_logsrobot -L Trace -d robot_logs .
# ...
1.2 红线配置
首先在step.yaml中定义红线配置组件这些组件会在流水线配置步骤的时候显示给用户。 items:- label: 红线信息name: CHECK_REDLINEStype: addable_grouprules:- require: falseadd_button:type: iconicon: plustext: 增加红线tip:icon: question-circledescription: 红线校验失败步骤标记为失败template:items:- name: redlinelabel: 红线position: flattype: custom_redline_dropdowndatamap: [{key: PassRate, type:GE}]rules:-requires: false
flow step编写及调试完毕后publish到当前企业中。
2. 在代码库中添加测试自动化用例
对于针对整个产品或一个子系统的自动化测试我们建议自动化测试用例保存在单独的代码仓库中而对于针对某个特定应用的自动化测试我们建议其测试用例保存在该应用的代码仓库中并与开发使用同一个分支推荐。
将自动化测试用例与应用代码在同一个代码库中管理有许多好处
测试用例与代码互相匹配且是最新的让自动化测试在开发阶段就可以及时介入直接复用开发的分支模式不用考虑自动化用例的版本管理开发和测试基于git代码库紧密协作方便落地ATDD这样的优秀实践容易集成到流水线中当测试代码或者开发代码变更后都能快速被执行和反馈加速问题的定位和修复
示例alpd-bot-ssh的测试自动化用例。 alpd-bot-ssh是一个SSH的服务提供IP归属地查询和天气查询能力该测试自动化用例基于RobotFramework框架实现。其测试自动化用例保存在代码库的atest目录下结构如下 atest
├── __init__.robot
├── ip.robot # 用于ip归属地场景的测试集
├── resources # 测试公共资源包括通用变量定义、公共函数等
│ ├── common_resource.robot
│ └── ssh_lib.py
└── weather.robot # 用于天气查询场景的测试集 在代码根目录下通过 robot -L Trace atest 执行测试。 3. 添加测试自动化节点到流水线
打开持续集成流水线如果没有在flow上创建一个。
编辑流水线添加一个空白任务2、添加自定义步骤“RobotFramework测试” 3、配置执行命令和红线 4. 上传测试报告到云效以在云效流水线执行结果中展示
编辑第三步的测试自动化节点添加一个步骤配置测试报告目录这里是robot_logs和测试报告入口文件这里是report.html5. 同步测试结果到自建的报表系统
有些时候我们需要对测试结果进行进一步的统计分析此时仅靠测试自动化工具提供的报告就无法满足了。通常我们会自建一个报表系统。那么云效中执行的测试自动化结果如何上传到我们自建的报表系统呢
5.1 确保报表系统能够被云效访问到
由于网络问题云效无法访问我们建在私有网络环境中的报表系统要求报表系统开放公网访问接口。为了安全我们建议仅开放必要的接口同时做好IP白名单防护。
5.2 在flow step中添加上传报告步骤
打开步骤1的flow step编辑step.sh添加上传报告步骤。 注意 该步骤需要放在redline检查之前同时建议传递的信息包括测试结果、代码分支、代码版本、提交者、流水线名字等。 # ...
# sh -ex $WORK_SPACE/user_command.sh
bash -c $STEP_COMMANDoutputpython3 /root/parse_output.py $OUTPUT_XMLSTEP_ROBOT_PASSecho $output | awk -F, {print $1}
STEP_ROBOT_FAILEDecho $output | awk -F, {print $2}
STEP_ROBOT_PASSRATEecho $output | awk -F, {print $3}# upload test result to report server
python3 /root/upload_to_report_server.py $OUTPUT_XML $CI_COMMIT_REF_NAME $CI_COMMIT_SHA $EMPLOYEE_ID $PIPELINE_NAME $BUILD_NUMBERredline Passed:成功:$STEP_ROBOT_PASS:Success Failed:失败:$STEP_ROBOT_FAILED:Error PassRate:成功率:$STEP_ROBOT_PASSRATE:Default
形式二测试自动化自建Jenkins
对于已经自建Jenkins等工具用于测试自动化调度执行甚至在Jenkins上进行了二次开发和定制的团队或者对于像ioT开发这样有特殊环境要求的应用复用现有的工具资源更为经济。为此云效提供了与客户现有Jenkins服务无缝对接的能力帮助企业通过串联起研发测试。
1. 确保自建Jenkins能够被云效访问到
自建Jenkins服务需要支持公网访问以便云效能够访问并触发对应的任务。同样为了安全考虑建议仅开放必要的接口并开启IP白名单防护。
2. 添加Jenkins任务节点到流水线中
编辑云效流水线添加一个任务节点选择Jenkins任务。 其中调用了测试平台的两个接口并且生成了一个index.html的测试报告文件。注意该测试报告只是将请求转发到了自建测试平台的对应页面上。
2. 添加测试自动化节点到流水线
在流水线上添加空白任务节点在其中添加一个步骤选择前面我们自定义的flow step记得publish到对应的企业中。在步骤中配置好测试平台地址和测试用例并设置好红线信息。 3. 查看测试报告
在测试节点添加报告上传步骤测试报告目录填“report”测试报告入口文件为“index.html”。 4. 数据统计与报表
在流水线执行结果中可以看到通过率等summary信息详细的统计与报表建议在自建测试自动化平台内实现。
总结
针对上面提到的三种自建测试自动化的形态这里给一个简单的小结帮助大家更好地进行选择。
当下还没有实践测试自动化且打算开始建设测试自动化能力建议选择形式一基于开源测试自动化工具来建设。这样可以把我们的精力集中到具体的测试工作让测试自动化能够快速落地同时又能享受到开源社区的大量的技术沉淀少走弯路。已经搭建了jenkins但是没有进行二次开发仅用来执行自动化测试建议选择形式一基于开源测试自动化工具来建设。这样可以节省维护jenkins的成本同时测试报告和卡点可以更好地与研发过程整合避免工具割裂和数据孤岛。基于jenkins搭建了CICD流水线或基于jenkins进行了二次开发和工具整合建议选择形式二测试自动化自建jenkins。这样能更快地进行系统整合同时也不会影响后续的迁移和改进动作。自研测试自动化执行和分析平台建议选择形式三自建测试自动化平台。如果不打算推倒重建我们还是建议采用现有系统与云效整合的方式避免工具切换对团队的干扰也可以更好地复用已有资源。本文作者云效专家团张裕阿里云工程实践专家曾在诺基亚网络负责测试自动化和CICD工具平台开发做过测试自动化教练也在初创企业做过开发、运维负责人和测试架构师推崇持续、快速、高质量的软件交付方式目前专注于云原生和DevOps领域。
本文为阿里云原创内容未经允许不得转载