作者回复: 1.自动化测试确实会耗费很多时间
自动化测试代码通常是金字塔结构:
单元测试(小型测试)代码最多,执行也最快,占总比例的70%左右,通常1分钟内
集成测试(中型测试)代码其次,执行比较快,占比20%左右,控制在10分钟以内
端对端测试(大型测试)最少,执行慢,占比10%左右
一般CI里面跑单元测试和集成测试,耗时10-15分钟左右,其实还可以接收。
2. 跑自动化测试,数据库有不同策略
单元测试不访问数据库,完全模拟
集成测试只访问本机数据库,或者模拟的内存数据库,每次创建新数据库,或者使用完清空数据库
端对端测试,每次创建唯一数据(例如增加固定数据+时间戳),连接真实的测试环境,可以不清理数据
3. 高覆盖率的关键在于在写代码就注意让代码方便的被测试。也不必过于追求100%覆盖,70%以上我觉得就不错了。
作者回复: 确实,这样的频繁打扰特别影响效率。
不过我在用了Slack之后,还是改变了看法,觉得从沟通的角度看,尤其是异地办公。
沟通很及时,跟当面沟通一样
通过Channel可以对消息进行区分和过滤
通过Thread可以展开讨论以及避免对不想干人员的打扰
作者回复: 是这样的,CI本质上只是一个像流水线传送带,你的代码提交了,流水线传送带开始工作,你可以在传送带上面添加任务。
简单来说,你可以想象成CI的一个任务启动后,给你一个干净的虚机(实际是运行Docker Container),然后帮你把当前代码下载下来,帮助你配置好运行环境,然后你就可以在里面安装任何软件、服务和运行任何脚本。
举例来说,你可以在传送带上增加以下任务:
1. 安装所有的依赖包
2. 运行模拟服务(比如一个内存数据库)
3. 运行单元测试
4. 运行集成测试
如果上面所有任务都成功了,那么这一次的CI任务就成功了,其中一个失败这一次的CI任务就失败了,然后你就要检查什么原因导致的,然后修复再重新执行,保障CI任务成功执行位置。
作者回复: 我觉得是有帮助,但这个问题的关键在于分析反思Bug。
自己对自己Bug的反思才是价值最大的,其他人看过之后不一定能有那么大的共鸣,因为一个Bug都有复杂的业务背景,是很难被记录,缺少上下文也很难理解。
StackOverflow是很有价值的,因为它是从问题切入,而问题是有很多共性的,很容易引起共鸣。
作者回复: QQ作为Bug反馈是没有问题的,但是无法有效对Bug跟踪,另外效率太低。及时是通过QQ报的Bug,也应该重新录入到Bug跟踪系统,进行管理和跟踪。
自己维护一套Bug和任务跟踪系统成本是有点高,建议直接使用在线托管的,Gitlab、GitHub、腾讯、阿里云、Coding、微软都有现成的,小团队的话价钱也不高。
作者回复: 抱歉这个问题我真不知道,test case的翻译也算是约定俗成的吧。
test use case我也没见过🤦♂️
作者回复: 可以试试App的自动化测试框架,比如说appuim、katalon。
作者回复: 👍謝謝你的精彩分享
作者回复: 像开发写自动化测试这样的事,一方面要提高开发人员的认知,另一方面还必须要有一些规章制度强制要求执行。
作者回复: 👍赞总结。
帮你补充一条:
4. 自动化测试很重要
作者回复: 一般都是自己写框架,基于TestNG + Selenium,应该也有很多其他的选择,但是抱歉我对Java了解不多,建议可以问问其他人或者通过搜索引擎搜索一下。