跳到主要内容

持续交付加速产品迭代V2

· 阅读需 6 分钟
何丰良
技术支持人员

悦库经历了过去一年快速功能迭代,文件管理业务逐渐丰富,为了确保在快速开发迭代的同时保证产品质量,今年5月份我们在现有持续交付流水线V1基础上进行升级,增加自动测试任务以帮助悦库实现稳定质量的可持续发展。

计划

自动化测试主要包括单元测试、API测试、UI测试、系统测试、性能测试等,每一种测试方法都针对不同工程维度,全面覆盖需要大量的人力,我们在资源有限的情况下,需要首先解决当前面临的优先级最高的测试问题,然后根据我们产品个性,制定一个中长期的实现愿景。

悦库每次发布前,必须要做的工作是安装和升级测试,要确保新用户首次安装和老用户升级后基础功能可以正常使用,但做这项测试工作需要在多平台下(Window、Linux X86/ARM64)人工完成,很费时费力,所有平台做一次测试需要至少2小时,且人工测试过程很难在各个平台中全面覆盖基础功能。

我们首先实现对多平台部署测试自动化,然后对服务端主要API进行自动测试覆盖,测试任务实现后立即加入持续交付流水线。

迈出第一步

我们选择使用基于Python的pytest测试框架,简单易上手,辅助Copilot AI结对编程,提升了不少工作效率。

自动化部署测试分为首次安装测试和升级测试,需要分别对Windows、Linux X64和Linux ARM64三个平台进行测试,基本流程如下:

首次安装测试:

  1. 保存当前测试机原有环境。

  2. 获取流水线构建好的安装包,命令行运行执行安装过程。

  3. 登录测试,验证服务安装有效性。

  4. 使用yshell(悦库命令行客户端)执行新建、上传/下载、删除等基础用例,确保基础功能有效性。

  5. 还原测试机环境。

升级测试和首次安装测试差别在于需要先使用yshell从悦库内盘存档中下载当前平台上一次发布包,部署安装并执行升级后验证基础功能有效。

以下是构建流水线中的安装/升级测试任务:

image-20230530161256951

如果测试任务失败是这样的:

image-20230530163326409

直接点击出错任务节点,查看原因:

image-20230530163514939

下一步

我们现在已经实现了基本的安装/升级测试,这也仅仅是实现悦库单服务器版本。下一步我们将实现集群版的部署和多平台客户端自动部署测试,在发布流水线中增加对官网在线体验Demo和内盘的自动发布升级。

远方

凡事皆有利弊,自动化测试提高了测试效率的同时,也增加了测试用例实现和维护成本,一旦测试目标发生业务变更对应的测试用例也需要调整,因此从成本上考虑,应该选择对业务较为稳定成熟的工程模块进行自动测试的用例覆盖,理想主义思维容易陷入焦油坑。

悦库现在致力于对部署和核心API进行用例覆盖,其中API用例覆盖将是一个长期持续的过程,需要对工程人员进行培训,以适应开发API同时为其添加测试用例的工作方式。

另外,测试用例任务是必须与持续交付系统集成才有意义,这样每日构建时可以尽早发现问题,尽早解决~