openEuler是一个开源、免费的Linux发行版平台,通过开放的社区形式与全球的开发者共同构建一个开放、多元并且架构包容的软件生态体系。openEuler发布上千个软件包,如何保障系统整体的质量成为衡量社区的一个重要指标。
从单包级和版本级两个维度介绍openEuler社区是如何进行测试和质量保障的。
openEuler社区软件包根据来源分为两类:上游社区和原创。对单软件包的质量保障从如下三个方面进行覆盖:
- 门禁类检查
- 开发者测试
- 社区众测
开发者通过PR的方式将对软件包的修改提交后,CI工程会自动触发门禁类检查,当门禁类检查通过后进行软件包的编译构建。当前openEuler社区规划的门禁类检查包括:license检查、基本信息检查、接口变更检查、敏感信息检查;各项目的maintainer需要对门禁检查结果进行检查。
当上游社区已有开发者贡献测试代码到软件包的源码中,并且在spec文件中指定make check动作,则OBS构建二进制包的时候会进行相应用例的测试执行,以保证每次对源码的修改不会对软件包的基本接口/功能产生影响。
此部分质量保障依赖开发者主动对软件包进行测试贡献,当开发者提交patch时,补充或者修改相应patch涉及的用例到源码包中,持续丰富单软件包的基本接口和功能验证能力;patch提交者也可通过在对应项目中发布任务类issue,任务中对合入patch进行必要的功能说明,以便其他开发者了解改动内容后贡献相应的测试用例。
openEuler社区秉承’upstream first‘ 的原则,建议开发者直接贡献patch和相应用例代码到上游社区,openEuler社区会进行同步,当然openEuler社区也欢迎开发者直接贡献。
openEuler作为一个开放、创新的linux社区,欢迎业界所有开发者参与到社区的各类活动中。社区众测顾名思义需要更多的开发者投入到社区的质量保障活动中,对新特性引入/修改的软件包以及升级修改影响较大的包进行测试验证和质量保障。
QA团队运维的测试开放日(test open day)就是为社区众测提供的一个平台,详见测试开放日(敬请期待)
openEuler社区版本发布计划请移步releasemanagement,QA团队对规划的版本进行质量保障测试。openEuler社区版本按照构建分类如下:
- daily build版本
- β版本
- release发布版本
Daily build版本即日构建版本,CI工程从各个项目代码仓中拉取相应包编译构建后集成构建出ISO。成功构建后,自动触发版本的冒烟测试,具体覆盖项:
- 安装部署
- 软件包安装/卸载
- 组件测试(内核/虚拟化/容器/编译器等)
- 系统集成类
- 系统服务类(登录/防火墙/分区/服务状态检查/日志/kdump)
β版本是在daily build版本基础上,合入正式发布版本规划的新需求和特性后提供给社区用户预使用的版本,此版本能够满足社区用户基本需求,版本质量基本稳定。在版本发布前,QA团队会进行和组织更全面的测试覆盖:
- 冒烟测试内容
- 新需求/特性功能验证
- 性能测试
- 升级
- 社区众测
release版本即社区规划的两年发布周期LTS版本和六个月发布周期创新版本,此版本是社区对外发布的正式版本,质量要求更高,具体测试覆盖如下:
- β版本测试内容
- 压力稳定性测试
- 安全测试
- 兼容性测试
- 文档测试