本文由Markdown语法编辑器编辑完成。
1. 背景
最近公司项目比较紧张,我负责的一个组件,要同时满足公司多条产品线的产品需求。
假如A产品线,本期需要新增功能A1, A2; B产品线,下一期要新增功能B1, B2, B3.
那么,我一般会基于组件的最新的dev分支,分别checkout出两个不同的分支,分别对应A, B两条产品线的开发需求,分别进行开发和提测。等两个产品线测试基本结束,再把两个产品线的分支,都merge回之前的dev分支。
最近一周,连续遇到几个bug, 我已经修复了,而且我很认真地进行了自测。本来以为,问题已经修复了。
但是,测试组测试,还是有问题,问题又被reopen, 内心非常沮丧。
如果说,我自己没有测试,直接提交给测试组,被打回来,那我是理亏的。
但是,明明自己已经测试过了,但仍然被测试组打回来,我都有点怀疑人生了。
但是,再仔细分析测试组测试出来的问题,又的确是问题。这就值得我认真反思了。这是什么原因造成的?
2. 分析
根据我印象中几次遇到这样的问题,一般的原因,有以下几条:
1> 根据bug描述的现象,用bug中附带的数据,验证修复后的版本是ok了。但测试组,会拿其他的数据,就是之前别的问题,反馈的问题数据再验证,结果出bug了。
2> 我修复完问题,用一两套数据验证,看起来没问题了。但测试组做性能测试,批量发图时,问题就暴露出来了。
3> 我修复了A产品线的问题,且A产品线验证通过。测试组测试B产品线时,问题复现,或引发别的问题。
4> 我修复完,用默认的环境变量测试,验证通过。测试组,修改了默认环境变量的值,出现新的问题。
问题类型 | 原因 | 避免 |
---|---|---|
测试数据覆盖面窄 | 开发人员,一般只用bug描述中的数据进行验证。忽略了特异性数据。 | 特殊数据,加强对待。 |
测试数据量不够 | 开发人员,一般只用1~2套数据进行验证。但有一些问题,如性能问题,需要积累到一定数据量才能显现。 | 开发时,要考虑处理一套或多套的逻辑是否有差异,性能是否有差异。 |
功能或产品线多,顾此失彼 | 开发人员只测试问题对应的功能和产品线,其他时间紧没来得及测试。 | 如果时间允许,最好是能冒烟测试一下。 |
配置参数设置差异 | 开发人员一般只测试一套默认参数,很难把很多情况都顾及到。 | 重要的配置参数,特别是现场可能修改的,要多关注。 |
解决上面的问题,很多可以靠机器自动化的方式来实现。
比如用CI, 把一些基本的测试用例,提前写好,放到代码仓库中。每次提交测试前,都先跑一波之前写好的测试case, 以保证本次提测的代码,能够通过这些基本的测试case.
但话说回来,有一些复杂的问题,可能CI里面的测试case都过了,但是测试组测试,还是会遇到问题。这个无法避免。
这可能也是测试组存在的最大意义吧。
毕竟,每个人都有自己擅长的一面。
开发者和测试者,在面对一个需求和功能时,看到的点可能不同。就会导致,开发的人,始终还是会存在一些盲点,这时就需要测试人员帮忙发现这些盲点了。
当然了,造成这个问题的原因,还有很多。以后我会再根据自己遇到的情况,进行补充。