基于CNN的自动化测试实践在软件测试领域,自动化测试已成为节省人力、验证成熟模块与功能的重要手段。然而,随着互联网产品的快速迭代和运营活动的频繁上线,传统自动化测试方法,尤其是基于OCR(光学字符识别)的图片识别方案,面临着诸多挑战。本文介绍了一个基于卷积神经网络(CNN)的自动化测试实践,旨在优化图片识别环节的成功率与可维护性。一、UI自动化的痛点传统自动化测试使用OCR判断测试结果的痛点主要包括:识别率不稳定:OCR通过对比两张图片的差异值来判断图片一致性,但页面元素变动引起的差异值不稳定,导致测试脚本输出测试结果时会引起误报或取值不精确。外部因素干扰大:全屏截屏包含手机通知栏等图标显示变化,对图片差异值影响较大,进而影响自动测试结果。运营活动影响:运营活动弹窗破坏测试界面的一致性,是自动测试的大敌,往往导致大量测试的误报。二、实现思路为了改进优化图片识别这一关键节点的成功率与可维护性,本项目尝试引入机器学习模型。APP启动时长自动化测试接入机器学习模型,主要以APP的三个页面(首页、登录、我的账户)为试点,分为以下步骤进行:训练模型:采用基于浅层卷积神经网络算法的机器学习框架训练三个目标页面模型。图像切分:对图像进行处理,使其更适合作为数据集来分析。特征工程:将大量图片样本转化为计算机可以进行计算的矩阵或张量。建模:构建神经网络模型。训练调参:训练模型,使其具有更好的表现效果,能够精准判断页面属性。编写测试脚本:编写APP三个页面功能的自动化测速脚本各测试100次,调用机器学习模型接口,将实时截图与训练模型进行比对后,接口返回比对结果。同时调用OCR接口进行比对,并将两者结果进行比对。获取运营活动数据:通过自动化测试脚本获取不同运营活动数据,观察识别成功率。借助CI平台:借助CI自动化测试平台,对应务场景用户量峰值时段进行自动化多次测试,获取当天不同时段性能趋势图并自动发邮件给相关人员。三、具体流程本次项目的具体流程包括:数据打标签并切分数据:对收集到的图片数据进行标签标注,并根据需求切分成训练集、验证集等。输入数据并划分batch:将处理好的数据输入到模型中,并划分成合适大小的batch进行训练。确定模型架构:根据数据特点和需求,选择合适的卷积神经网络架构。本项目参考了经典的AlexNet结构,并加入了LRN层。模型训练、存储、调用:使用TensorFlow等深度学习框架进行模型训练,训练完成后将模型存储起来,以便在测试过程中调用。四、图像切分与特征工程图像切分:针对不同场景特性,将图片切分成更具有特征性的小块,并对小块进行分类。这有助于减少训练过程中的计算量,并提高模型的识别精度。特征工程:将输入数据(png图片)转化为3通道(R,G,B)的tensor,并读取所有样本转化为合适尺寸的tensor作为模型的输入。五、建模与代码实现模型选择:选择常用于图像识别分类的卷积神经网络作为模型。由于数据并不复杂,选择浅层网络即可。神经网络架构:参考AlexNet结构,加入LRN层。具体架构包括两层卷积层、一层全连接层和一层Softmax层。代码实现:使用TensorFlow完成建模。第一层卷积层使用16个3x3滤波器,进行RELU激活、最大池化和LRN处理;第二层卷积层类似;第三层为全连接层,将卷积得到的空间结构转化为向量,并进行两次全连接和RELU激活;第四层为Softmax层,对结果做Softmax回归并返回最终结果。六、总结与展望机器学习接入自动测试是一个新的尝试,本项目在图片识别方面取得了初步成果。然而,过程中也遇到了不少困难,需要不断学习和解决。未来,在测试实践中将借力机器学习在大数据处理方面的优势,在测试用例生成、测试环境部署与数据初始化等环节更好地辅助自动化测试,推动自动测试智能化的进一步发展。(注:以上图片为神经网络架构示意图,展示了卷积层、池化层、全连接层和Softmax层等关键组件。)



































