什么是自动化测试?顾名思义就是以程序测试程序,自动执行指定动作,实现测试目的。以代码实现测试思维,以脚本替代手工执行。从简单的独立功能脚本到依托自动化框架运行的脚本集合都属于自动化测试范畴。本文旨在通过讨论以下几个方面,总结自动化测试价值最大化的经验。
一、 什么项目适合自动化测试?
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。
通常需要同时满足以下条件
1) 需求变动不频繁
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。
2) 项目周期足够长
自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
3) 自动化测试脚本可重复使用
如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试价值就无法体现,所以要求测试脚本人员在开发自动化框架和自动化脚本时需要注意到兼容性和可扩展性,尽量生成可通用的测试AW集合,测试脚本集合。
另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。
比如复杂场景构建、大压力下测试、大量重复性测试等。
二、 自动化测试的基本流程以及注意事项
如图1所示,自动化测试的基本流程主要包含需求分析,自动化测试计划设计,用例设计,自动化测试框架设计与开发,脚本开发,环境搭建,整体联调运行等。
1) 需求分析:分析哪些点需要进行自动化,在需求分析阶段参与进来,在被测代码开发阶段输出依赖点,保证自动化开发时效率更高,代码改动更小;
2) 用例设计:建议先根据测试点设计所有用例,然后分别查看是否可以实现自动化,最后正向补充可能遗漏的自动化场景;
3) 自动化测试框架设计与开发:
自动化测试框架与软件架构类似,定义了在使用该套脚本时需要调用哪些文件、结构,调用的过程,以及文件结构如何划分。
而根据自动化测试用例,我们很容易能够定位出自动化测试框架的典型要素:
a. 公用的对象。
不同的测试用例会有一些相同的对象被重复使用。这些公用的对象可被抽取出来,在编写脚本时随时调用。当这些对象的属性因为需求的变更而改变时,只需要修改该对象属性即可,而无需修改所有相关的测试脚本。
b. 公用的环境。
各测试用例也会用到相同的测试环境,将该测试环境独立封装,在各个测试用例中灵活调用,也能增强脚本的可维护性。
c. 公用的方法。
当测试工具没有需要的方法时,而该方法又会被经常使用,我们便需要自己编写该方法,以方便脚本的调用。
d. 测试数据。
一个测试用例需要执行很多个测试数据,我们便可将测试数据放在一个独立的文件中,由测试脚本执行到该用例时读取数据文件,从而达到数据覆盖的目的。
在该框架中需要将这些典型要素考虑进去,在测试用例中抽取出公用的元素放入已定义的文件,设定好调用的过程。
图1 自动化测试流程
4) 测试脚本的开发:需要注意脚本兼容性和可扩展性,尽量保证测试脚本在不同的测试环境上均可执行,在不同版本中均可达到测试效果。可扩展性即为在本脚本基础上方便地增加测试步骤或者增加执行的循环次数等。
三、 过往自动化测试过程中的一些经验
1) 自动化测试的资源和技术储备
根据项目情况合理安排资源,包括物料设备和人力技术,保证能够持续推动工作。
2) 自动化测试依赖于开发,运维,测试的配合
a. 运行测试脚本的必要条件,需要特别注明
b. 接口有变更需要开发提前需知会测试,测试进而调整接口测试脚本
c. 测试脚本需要随时review,确认脚本实现了用例的测试意图
3) 用例质量
用例应该能够保证预期结果的确定性和准确性,避免出现因用例导致的脚本失败,影响自动化测试结果的可信度,浪费大量资源去定位问题。
4) 测试脚本质量
脚本务必完全实现用例的测试意图,脚本要方便兼容和扩展,数据集中存放,脚本内不出现写死的输入参数,如果脚本存在问题,但测试结果为PASS,则可能会长期掩盖一个真实的BUG。
四、 DapuStor的自动化测试
DapuStor自验盘片HaiShen系列,在研发过程中进行了大量的自动化测试工作,包括CI测试、开发自验测试、性能测试、掉电测试、冒烟测试、长稳测试等,目前采用TestLink+Jenkins+RobotFrame模式实现自动化框架的设计,用例的管理,以及任务的构建和执行,通过持续的自动化构建,比较有效地保证了产品的质量,支撑了产品的研发进度。
参考资料
1. https://zhuanlan.zhihu.com/p/58470137
2. https://zhinan.sogou.com/guide/detail/?id=316513501653
3. https://baike.sogou.com/v5803755.htm?ch=zhihu.topic
高端微信群介绍 |
|
创业投资群 |
AI、IOT、芯片创始人、投资人、分析师、券商 |
闪存群 |
覆盖5000多位全球华人闪存、存储芯片精英 |
云计算群 |
全闪存、软件定义存储SDS、超融合等公有云和私有云讨论 |
AI芯片群 |
讨论AI芯片和GPU、FPGA、CPU异构计算 |
5G群 |
物联网、5G芯片讨论 |
第三代半导体群 |
氮化镓、碳化硅等化合物半导体讨论 |
存储芯片群 |
DRAM、NAND、3D XPoint等各类存储介质和主控讨论 |
汽车电子群 |
MCU、电源、传感器等汽车电子讨论 |
光电器件群 |
光通信、激光器、ToF、AR、VCSEL等光电器件讨论 |
渠道群 |
存储和芯片产品报价、行情、渠道、供应链 |
< 长按识别二维码添加好友 >
加入上述群聊
带你走进万物存储、万物智能、
万物互联信息革命新时代