Re: [心得] 我在科技业遇到的鬼故事之一

楼主: DrTech (竹科管理处网军研发人员)   2023-07-28 09:03:08
单纯经验交流一下
我遇到正常的软件UT与品质验证流程吧:
1.开发者写完程式码与UT。
2.在自己电脑上跑UT。
在自己电脑上跑UT,是部门不认的UT。
没人知道你自己电脑的环境与有没有动手脚。
3. Commit and push 到 repository 开发分支。
4. 启动 CI ,CI有个stage会去跑开发者的UT。
由于UT已经不在开发者的电脑或环境跑了。
所以有许多优点:
a. 环境是独立的,而且通常设计成接近 release后的环境。比较容易提早发现问题。
b. 开发者有没有做好UT,Pass UT,是有自动记录,而且自己没有权限修改的。避免了前
5. 所有CI流程都过了,UT过了,开发者以外的工程师或主管,才开始审核程式码 code review。(正常情况,至少两人)
这时审核的人,系统都会自动纪录。
比较大的公司也会有规定,或惯例该review哪些重点。
6. Code review 过了,系统才会自动 merge到 "开发"分支。(因为还没给QA测过,没办法release)
7. QA 测试前,先再次跑CI流程,包含UT,确认开发部门有按照基本品质要求走。(避免被Dev部门黑)。拉取程式与自己的测试程式,在接近生产环境的设备上测试。
8. QA测试出报告,有问题,提issue修改。没问题,上系统或出Mail说验证通过。(为品质背书)
9. 程式码品质Ok了,要将 dev merge到release分支。开发者根本没这权限。只有技术的owner或 Tech lead 有merge权限。有merge权限的人,要对这程式码品质负责。
以上的流程,已经简化蛮多细节了,而且变化很多,同家公司不同部门细节也不同,但大原则没变。
看似复杂冗长,其实大多机器自动化去做,大多写程式就能完成自动化,习惯了就好。两个星期跑release 一个线上版本很正常。
线上系统出问题,谁有责任:
开发者,owner,开发者主管,测试QA工程师,QA工程师主管,PM都可能会有责任。
大家不是靠嘴去争的,拿出Log与证据来讨论吧。
自己开发电脑上有没有Bug或 Log根本没人看。
Bug是否产生,所有Log,都在第三方电脑(或云端),而且是接近Release环境的。
以上的流程与技术其实也不难,open source都搭建得起来,流程摸久也就习惯了。
简单成本就能大幅提高软件品质与工作效率。最大差异在于,你有没有待过这样的工作环境,学习到这种工作观念而已。
(可以思考一下,以上有哪些点,怎么改善自己工作流程,不用硬套别人公司做法)
作者: blackrays (黑芒)   2023-07-28 09:23:00
推这篇
作者: CMJ0121 (请多指教!!)   2023-07-28 09:24:00
依照他遇到的 case 正常 CI 跑应该是采不太到问题可能需要用 integration test 或者是 behavior test 架设特定环境 不过从他的文章看不出来有没有这种东西 :)
楼主: DrTech (竹科管理处网军研发人员)   2023-07-28 09:31:00
Integration通常有另外的repository,跑其他整合测试才对,或是在QA做真实上线环境下的整合测试,变化还蛮多的。但原则就是大家都要看得到别人的UT 怎么做。真的别用嘴巴讨论到Dev有没有做UT,太不科学了。没有在自己电脑以外,公认的测试环境,跑的UT/IT,一律都不能算有做,基本原则。
作者: CMJ0121 (请多指教!!)   2023-07-28 09:51:00
上面那个完全同意 没上 CI /QA 画押的测试怎么会是测试
作者: rayway30419 (RayWay)   2023-07-28 10:11:00
人能炸烂线上环境的不检讨制度也是很有趣
作者: wmtsung (Tsung)   2023-07-28 10:20:00
因为环境很难改变,大家都爱检讨人啊XD
作者: shibin (喜饼)   2023-07-28 10:22:00
推分享
作者: yamakazi (大安吴彦祖)   2023-07-28 10:25:00
我以为Push后在Jenkins上面会自动跑完git fetch抓分支,build code,跑Gtest,自动化测项,Review完后给QA人工测完才merge是基本常识,看来很多公司没这么做
作者: luciferii (路西瓜)   2023-07-28 10:41:00
看原PO描述,他们公司的UT环境是随需求在随时改,而且没有侧录机制。(这也好像是常态,除非非常重视SDLC而且真的实作的公司),所以出事只能靠嘴巴追责任而不是靠log追踪开发流程。而上篇说,B有责任UT自己交出去的东西,他自承没作(无论是不是说谎),这样就一定有责任。差在真的没作是轻责,作了故意放过是重责。
作者: xam (听说)   2023-07-28 10:59:00
你的1&2是开发者自己测pass不能算有效,但自己测都失败是根本不该commit叫QA帮你试.. 除非有人想看preview
作者: wtl (比特)   2023-07-28 11:07:00
自己pass不算有效那自己fail也不算无效吧 commit后是自动QA有过就过了 这问题主要是环境 自己电脑环境不一定对 所以才要CI/QA看结果
作者: luciferii (路西瓜)   2023-07-28 11:26:00
自己fail还 commit是有事吗?
作者: Vick753 (彬彬)   2023-07-28 11:47:00
推推
作者: Burwei (系馆守护神)   2023-07-28 12:00:00
推推,整串读完正需要这个
作者: sniper2824 (月夜)   2023-07-28 12:08:00
笑烂 那跑Test干嘛
作者: f496328mm (为什么会流泪)   2023-07-28 12:14:00
推这篇,这才是正常的软件开发流程
作者: puring0815   2023-07-28 12:32:00
笑烂,同推这篇,拜托用制度解决问题而不是一直在解决人好不好
作者: sirlers   2023-07-28 13:18:00
推分享 这样的流程好好导入原原po就无从把自己team的锅推给B囉
作者: Litfal (Litfal)   2023-07-28 13:33:00
原po公司重点在于没有根据客户环境做测试,尤其看起来像是做专案的厂商,没有这个环节QA还敢放行真的奇怪
作者: newhandfun (新手方)   2023-07-28 15:23:00
比起建立制度,解决人比较轻松(X)
作者: safe (safe)   2023-07-28 16:39:00
感谢大大无私分享
作者: superpandal   2023-07-28 20:05:00
原PO是事后越想越不对劲 而且也保了B 所以不是解决提出问题的人 而是后知后觉发现被坑了上来找人评评理况且B是提出问题的人与B犯错不能互相抵销认为B没错
作者: viper9709 (阿达)   2023-07-28 20:23:00
推分享

Links booklink

Contact Us: admin [ a t ] ucptt.com