软件测试中的思辨让我们的思维更自由
最近在在参加一个文本识别算法测试的方案评审时。
研发同学提到这样一个要求:“测试图片中文字旋转角度不要大于水平30°” 。
软件测试同学表示:“好的。”
看到这样的一段对话,不由得引发出一个的思考——对于类似于这种要求,测试人员是否也需要有自己的判断,有一个思辨的过程,还是不假思索的以研发同学说的为准。
以这个为例,是否可以依据真实数据特征分布进行判断。比如参考真实数据或者打标数据中的特征分布,是否绝大部分图片中文字旋转角度不超过30°,若不是,那么是否可以认为研发同学对于这个角度设定的要求是存在问题的,若继续按照这个方式去准备测试集,存在即使模型指标测试通过,但在实际应用效果可能会并不好的风险。如果真实数据分布大部分均不超过30°,那么同样需要在测试报告中,对类似于这种准入设定,需要单独进行说明。
我们再进一步抽象一下,算法数据的选择主要从算法的应用方向与应用场景两个角度考虑。 与研发同学选择什么数据进行训练其实关系不大,因为研发也需要这些角度考虑,测试的思维应该是相对独立的,否则可能存在研发选错或者选偏,我们跟着错的风险。包括测试方案、设计评审环节,评审的是我们的测试设计是否需要完善,存在何种风险,而不是测试是否按照研发的思路在测试。
算法的应用方向指的是,比如同样是人脸识别算法,可以用于人脸签到、人脸检索等等,这就使得我们在数据集准备上数据来源需要具有多样性、多分布的要求。夸张上的说,如果人脸识别算法不去做失踪儿童识别,那么除了婴儿其他任何年龄段任何场景下的人的照片,基本都是我们的收集范围。
算法的应用场景指的是,不同的应用方向决定了其具体的应用场景的,对应的场景的数据基本具有与其相对应的数据特征,特征的分布与其他场景也有所差异。比如人脸签到,通常,光照不会很暗、 人脸占比不会很小。因此在算法产品化的测试中,应用场景已经确认,数据的选择也应该考虑该场景下的数据特征,而非盲目的选择。