背景:公司开发用的是 java,项目 A ;测试接口自动化用的 python,项目 B 。打算做持续集成,期望达到的效果是任何一名开发人员提交代码后会去触发 pipeline 的执行,pipeline 就包含两步 build + test,然后将 test 的失败结果通知到开发,达到一种快速反馈的效果。 有个问题:A 开发在某次迭代的时候开发了一些功能,比如 F1 、F2 、F3,push 代码的时候,如何只执行 F1 、F2 、F3 对应接口测试呢? 不能执行全量的测试,因为其他开发人员可能有些 function 还没有开发完成,但是这时测试代码已经开发完成了,这个时候去执行未开发完成的功能肯定跑不通。
1
themostlazyman 2021-02-01 16:00:27 +08:00
感觉 dev 环境不用跑测试,谁提交了代码不应该自己跑通了吗?提测前整体跑通一遍不更好吗?
|
2
mikuazusa 2021-02-01 16:05:01 +08:00
Jenkins 中的项目编译启动脚本和测试接口自动化脚本,增加 1 个参数变量记录 F1 、F2 、F3,然后 2 个脚本根据这个参数来执行对应的模块化构建和接口测试即可
|
3
th00000 2021-02-01 16:11:24 +08:00
场景不成立:
如果是基于主干开发, 那么所有被提交的代码都应该是跑通的, 不应该有 block 主干的因素存在 如果是基于分支开发, 那么测试仅跑当前自己的分支即可, 也不会出现 bolck 测试的因素存在 |
4
tibifide OP @themostlazyman 跟开发人员沟通了下,dev 环境的确不适合跑接口自动化,原因是开发人员在提交的时候可能只是定义一个接口的名称,具体的内容还没有进行开发。
|
5
tibifide OP @th00000 基于主干进行开发,所有被提交的代码不一定能跑通,就像开发人员告诉测试人员可以进行测试了,但是测试环境仍有多个接口调不通的这个场景
|
6
th00000 2021-02-01 17:09:11 +08:00
@tibifide #5
基于主干开发, 所有提交的东西都不应该有已知的阻塞项目的事情发生, 如果有, 就是模块切分不好, 或者开发人员有问题, bug 是不可避免的, 但是我们讨论的应该不是 bug 的问题 感觉你们方法论出了问题, 你们在用一个看似正确的工具去解决一个错误的方法论, 看起来别扭的不行 |
7
th00000 2021-02-01 17:11:03 +08:00
具体方法论可以看这里 [Trank based develepment]( https://cloud.google.com/solutions/devops/devops-tech-trunk-based-development)
|
8
tibifide OP @mikuazusa 我在想有没有这样一种机制,开发人员在 commit 的时候如果加上了 tag,就会通知到 jenkins 去执行脚本,如果没有加 tag,就不通知给 jenkins 。然后接口自动化时可以根据 tag 去执行对应的用例。
|
10
tibifide OP @retanoj 就是没有搞清楚持续集成是在 dev 环境跑单测,还是 dev 环境开发提交代码的时候单元测试和接口测试同时跑,接口测试介入的时机
|
11
retanoj 2021-02-01 18:15:30 +08:00
|