【快乐开源】为 PaddleScience 的 equation 模块添加单元测试
HydrogenSulfate opened this issue · 6 comments
This project will be mentored by @HydrogenSulfate
1. 背景
PaddleScience 套件由 13 个模块构成,每个模块的代码存放在 ppsci/ 下的文件夹中,但这些模块暂时缺少对应的单元测试,虽然目前 PaddleScience 的模块没有存在严重的 BUG,但单元测试仍然是这些模块在细节上的正确性的有力保障,避免隐蔽的 BUG。因此希望在此次快乐开源活动中给核心模块 equation(文件夹是 ppsci/equation)添加单元测试
2. 收益
保障 equation 模块的正确性
3. 添加单元测试
3.1 基本要求 (整体进度:7/7)
单元测试基于 pytest 进行编写与开发,需要对 equation 模块下的各个方程类内部代码的 if-else 分支进行全面测试,覆盖率达到 100%
为 ppsci/equation/pde 下的 7 个文件(laplace.py 除外,已作为 3.2 单测开发 中的示例)添加单元测试,编写代码时尽量使用 pytest 的 参数化测试特性 以减少重复代码
按 merge 的时间顺序,排名不分先后:@GreatV (1), @ccsuzzh (1), @jiamingkong (1), @enkilee (1), @jjyaoao (1), @ruoyunbai (1), @mrcangye (1)
序号 | 单测文件 | 认领人 | PR号 |
---|---|---|---|
1 | base.py✅ (2023/6/20) | @jiamingkong | #397 |
2 | biharmonic.py✅(2023/6/23) | @jjyaoao | #394 |
3 | linear_elasticity.py✅(2023/7/10) | @ruoyunbai | #416 |
4 | navier_stokes.py✅(2023/7/10) | @mrcangye | #414 |
5 | normal_dot_vec.py✅(2023/6/17) | @GreatV | #388 |
6 | poisson.py✅ (2023/6/19) | @enkilee | #400 |
7 | viv.py✅ (2023/6/20) | @ccsuzzh | #401 |
3.2 单测开发
- 在 ppsci 下新建一个 test 目录
- 在 test 目录下新建 equation 目录
- 在 test/equation 目录下新建与 equation 模块下同名的文件,如新建 test_biharmonic.py(对应 equation/biharmonic.py)
- 在新建的 test_xxx.py 文件中用 pytest 单元测试框架编写代码,单元测试代码需满足 3.1 基本要求 的内容
- 执行
pytest --cov=./ppsci/equation/pde test/equation/test_xxx.py
,生成带有覆盖率报告的单元测试结果,并确认被测试的源代码覆盖率为 100% - 提交 PR 到 PaddleScience
3.3 开发注意事项
由于 equation 模块中使用了诸多 jacobian, hessian 封装好的高阶微分函数,因此在单元测试中,计算标准参考结果时,应该使用 paddle.grad
等价实现 jacobian 和 hessian
4. 参考样例
以为 ppsci/equation/pde/laplace.py
添加单元测试 ppsci/test/equation/test_laplace.py
为例,在PR描述中可以看到 ppsci/equation/pde/laplace.py
的 Coverage 是 100%,满足要求。 参考 PR:#370 (所有流水线包括非required都要通过)
5. 参考资料
认领3,4
认领 7
认领1
认领6,@Liyulingyue 转让
抱歉,PR 395 的cla一直没法过,重新提了 PR 400
为 PaddleScience 的 equation 模块添加单元测试 已全部完成,感谢参与的小伙伴们!
按 merge 的时间顺序,排名不分先后:@GreatV (1), @ccsuzzh (1), @jiamingkong (1), @enkilee (1), @jjyaoao (1), @ruoyunbai (1), @mrcangye (1)
欢迎继续参与快乐开源的其他任务!