数字科室统计面板测试

思路

  1. CREATE TABLE `base_room` (
  2. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  3. `hospital_id` bigint(20) unsigned NOT NULL,
  4. `department_id` bigint(20) unsigned NOT NULL,
  5. `project_id` bigint(20) unsigned NOT NULL,
  6. `joined_at` datetime NOT NULL,
  7. `is_sync_to_project` tinyint(11) DEFAULT '1' COMMENT 'app 同步测量数据到 project 1是 0否',
  8. `is_sync_to_app` tinyint(11) DEFAULT '1' COMMENT 'project 同步测量数据到 app 1是 0否',
  9. `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  10. `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  11. `is_deleted` tinyint(1) DEFAULT '0',
  12. `pid` bigint(20) unsigned DEFAULT NULL COMMENT '父节点id',
  13. `base_hospital_department_project_id` bigint(20) unsigned DEFAULT NULL,
  14. PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
  15. UNIQUE KEY `u_index` (`hospital_id`,`department_id`,`project_id`,`is_deleted`)
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=30001 COMMENT='room基础表';

基于 base_room 的生成情况,针对所有统计面板做基于传统的登录用户在科室项目下的统计和数字科室的统计数据对比。以及登录用户在科室管理下和对应的数字科室下视图的统计数据。

功能测试具体实现方法(service 层)

  1. 基于 base_room 构造对应的查询场景和场景下的对应入参
  2. 随机构造入参,覆盖 base_room 的部分数据(全量测试用例较多,测试环境基本上统计接口有 6000 个用例)
  3. 模拟 service 获取数据,对比不同场景下的数据是否相同

期待

统计数据完全一致,没有误差。

功能测试具体实现(controller 层)

接口http 200 判断?(用处不大)

接口数据判断?(跟 unit 部分有重复)

数据填充及验证

CI/CD

  1. .gitlab-ci.yaml 配置脚本 stage 增加 test 流程
  2. test 使用跟 deploy 一致的 pod
  3. 运行完测试即销毁进入 deploy 阶段

命令参考

  1. # 安装所有依赖包包括 dev 下的依赖
  2. composer install -o
  3. # phpunit 执行单元测试
  4. # 测试通过 exit code = 0 ,失败 exit_code = 1 or 其他
  5. vendor/bin/phpunit -v --do-not-cache-result tests