观点

2023-11-19

原文地址:https://www.sohu.com/a/315434322_672569
作者:中国工商银行业务研发中心 郝毅 霍嘉 肖烨 金石乔
本文笔者着重介绍了金融行业软件自动化测试的相关实践与思考。

近两年来,多家金融机构和专业测试组织开展了大量自动化测试技术的应用研究与工作实践,自动化测试被普遍认为可以有效提高测试效率、节省人力成本,但从实际取得的效果来,似乎并没有达到大家的期望,这让我们不得不重新审视自动化测试,需要基于不同的研发模式进行重现思考和认识。

金融行业主要软件研发模式

目前,金融行业主要有两类软件研发模式,其对应着不同的组织形态。一类是以传统商业银行为代表的规范的、稳定的、质量保障的瀑布式或类瀑布式研发模式,对应的是需求、研发、测试角色相互分离、彼此独立的组织形态;另一类是以互联网公司为代表的灵活的、迭代的、效率优先的敏捷研发模式,对应的是需求、研发、测试角色相互融合、团队协作的组织形态。这两类研发模式各有优势,传统研发模式注重质量,需要严格控制风险,确保安全生产;敏捷研发模式更看重效率,对线上问题有一定的容忍度。质量和效率在天平的两端,选择哪类研发模式取决于企业对于风险的接受程度和市场需求的响应要求。

在整个IT行业敏捷化转型的大趋势下,传统金融行业也在核心稳定的基础上探索适合自身的敏捷化研发模式,大型商业银行一般采用“双模IT”研发管理模式。一方面通过传统研发模式保障核心基础业务的稳定性,另一方面通过敏捷研发模式开展互联网创新业务需求的落地。

不同软件研发模式下的自动化测试实践

不同软件研发模式对应的自动化测试技术体系和工作实践是存在差异的。自动化测试技术只有跟组织形态、环境条件、测试阶段相匹配才能发挥效果,并且在缺陷发现(质量)、风险覆盖(范围)、效率提升(时间)和资源节约(成本)方面产生的作用各有侧重,需要区别的认识和看待。

1.传统瀑布式研发模式。
最佳实践:在传统瀑布式研发模式下,单元测试、系统集成测试(SIT)由开发部门人员完成,版本交付后有独立的测试部门团队进行用户验收测试(UAT)。自动化测试在两阶段分别开展,其中UAT作为质量保障的最后一道关卡,基于用户视角端到端的真实业务流程模拟。UAT开展自动化测试主要使用UI页面自动化测试工具,成熟的实践一般是将核心稳定的功能做成脚本,通过执行自动化测试脚本辅助对重点交易功能进行回归验证,从而起到增强质量信心的作用。当期版本改造内容的验收测试,因脚本开发投入的成本无法得到合理的回报,自动化测试一般不会被考虑。

前提条件: UAT自动化测试技术难点在于前端页面控件识别和业务逻辑核对,自动化测试实施很依赖页面控件开发的规范性,规范的程序和界面设计会显著降低自动化测试脚本开发和维护的成本,被测系统具备良好的可测性是UAT自动化测试有效开展的前提。此外,高可用的测试环境,完备的数据基础,成熟的平台工具,丰富的业务资产,标准化的案例步骤也是UAT自动化测试高效开展的必要条件。虽然UAT对于测试人员自动化测试技能水平要求不高,但对于研发规范性、环境可用性、工具容错性、数据完整性、资产成熟度、业务稳定性等外部条件依赖程度较高,在这些条件没有达成时,UAT推进自动化测试的效果会比较缓慢。

作用效果: 反复执行、流程繁琐的测试内容是UAT自动化测试实施的重点,脚本维护和保鲜是自动化测试实施的难点。通过选择成熟稳定的业务交易流程开展例行化和回归测试的自动化执行,可以提升测试工作的全面性,拓宽当期版本改造内容之外的测试范围,保障核心业务和交易流程的稳定性,从而整体提振版本上线的信心。从缺陷发现、风险覆盖、效率提升和资源节省四个维度上看,UAT自动化测试开展对于项目测试的贡献主要是通过扩大风险覆盖范围达到质量保障的作用,对于例行化和回归测试的执行效率和人力投入节省方面也实现了优化提升,但对于测试主要关注的当期版本改造内容缺陷发现、测试效率提升和人力成本节约方面并未发挥明显作用。

2.敏捷研发模式。
最佳实践:在敏捷研发模式下,研发测试都在一个团队,研发测试人员共同开展工作,人员沟通效率高,资源共享程度高。测试主要集中在接口级的功能和系统集成测试(SIT),用户验收测试(UAT)一般由业务部门开展,不承担质量把关的职责。业界成熟的实践是通过接口自动化测试工具开展自动化测试工作,接口自动化测试脚本的稳定性和可复用度比UI自动化测试脚本更好。很多金融机构测试部门基于接口开展自动化测试,并搭建了持续集成、持续构建的自动化测试流水线。被测系统集成新的接口后就自动跑一遍全量接口测试案例,保证新的接口对存量功能不会产生影响。接口自动化测试既是对当期新功能、新接口的验证,同时也是存量自动化测试脚本库的构建,其良好的特性被敏捷化研发模式所推崇,在自动化测试中发挥的效用被业界广泛认可并大力发展。

前提条件: 敏捷研发模式下测试对象是一个个独立的接口,测试人员验证的是接口功能实现的准确性,无需考虑业务本身的稳定性,测试数据直接根据接口定义进行配置,测试环境只需满足被测接口正常联通即可开展自动化测试,自动化测试对于外界条件依赖程度低。敏捷研发模式下自动化测试实施的前提是清晰的接口定义和接口暴露程度,接口只有在测试环境中能够容易获得,案例可通过简单数据配置生成才能方便地开展自动化测试;同时,接口自动化测试对于测试人员技能水平和工具框架灵活性要求更高,测试人员需要具备编码能力,能够设计良好的接口测试案例。自动化测试工具框架要灵活地支撑持续集成、持续构建的接口组装和批量测试流程,被测应用系统接口要能够被自动化测试工具很容易的集成和调用。商业工具一般难以满足需求,需要自动化测试工具研发团队具备较强的研发能力,支持敏捷研发模式下自动化测试工具灵活的需求。

作用效果: 敏捷研发模式下自动化测试案例可以继承和复用,在后续版本中反复执行,为自动化测试提供了便利的条件。从缺陷发现、风险覆盖、效率提升和资源节省四个维度上看,这种自动化测试实践可以在当期版本功能测试中发现缺陷。对于存量接口回归验证,通过积累复用接口自动化测试案例,实现存量风险的覆盖,提升存量案例执行的效率,通过机器统一调度执行节省了执行人员,整体看来在四个方面都能发挥效果。自动化测试案例一次设计反复使用使得自动化资产积累变得更加顺畅,高并发高响应的执行反馈使得全量功能回归在短时间内迅速完成,在敏捷研发模式下实现持续迭代、反复验证,一天内就可以跑几遍全量测试,自动化测试案例开发成本和执行成本都更加低廉,反复应用使得自动化测试投入回报很高,是一种经济效益良好的自动化实践。

以上两种自动化测试实践是金融行业的主要形式,两种实践模式对应着不同的测试阶段,在效率和质量平衡下,根据项目测试的需求可以在软件研发生命周期中独立或同时使用,合理取舍达到相互补充效果。正确、合理地实施自动化测试,能够快速、全面地对软件进行测试;通过自动化增强测试的全面性和充分性,在单位时间内提升测试效能,从而提振各个测试阶段的质量信心。
在这里插入图片描述

关于自动化测试的一些思考

科学地看待自动化测试,就是要了解自动化测试技术的优势和局限性。开展自动化测试可以带来收益,但也要认识到现阶段的自动化测试技术并不是万能的,不能解决全部问题,有一些在认识上的误区需要被澄清。

1.效益。自动化测试的优势如下。

可靠: 自动化测试每次运行时都会准确执行相同的操作,而人工测试则会受到精力、智力、知识、经验等方面的影响,很难做到像工具一样精确、可靠,因此自动化测试可以消除人为的错误,排除人工测试的不确定性,使测试结果更加客观。

快速: 自动化测试的脚本运行速度比人工执行要快得多,很多由于时间限制的问题无法完成的测试内容,通过自动化即可快速实现,同时和手工测试相比,计算机还可以不知疲倦的进行测试。

可重复: 自动化测试可以通过重复执行相同的操作来测试软件的反应,尤其对于跨版本、周期性进行的例行化测试内容,自动化测试的优势更加明显,一个工具或者一个脚本编写完毕,即可多次反复使用,使测试效率可以得到极大的提升,避免人工测试的倦怠感。

覆盖全: 自动化测试工具和脚本由于具有可编程性,可以通过编写复杂的测试脚本来模拟测试过程中重现的场景,找出隐藏的信息,这是手工测试很难达到的一点。
在这里插入图片描述

2.误区。

在推进自动化测试的过程中也容易走向另一个极端,尤其是陷入一些常见的误区,主要包括如下几个方面。

一是自动化测试是一种比人工测试更先进,更高级的测试手段。 假设一个项目的需求并不明确,或者对于某个产品来说,它的界面经常会发生变动,类似于这些软件的测试就不适合使用自动化进行测试。如果为了推进自动化而把这些不适合进行自动化测试的产品也通过自动化来进行测试,那么不仅不会产生正的收益,相反可能会增加测试的成本,如不断维护自动化脚本的成本。自动化测试与手工测试的关系应该是相辅相成的,互相弥补各自的局限性,以此来相互促进。

二是所有的手工测试都应该被100%的自动化。 一味片面地去追求高自动化覆盖率,不仅软件的质量得不到提高,而且还会让测试人员疲于奔命,投入巨大的精力去编写或者维护自动化测试工具和脚本,它们产出的性价比却很低。自动化测试并不是万能的,它需要根据实际情况引入并有的放矢地设定其覆盖率。

三是自动化测试能够发现大量的缺陷,它比手工测试更有效。 这个误区如果不单独提出来,可能很多人都会这样认为。然而实际情况却是,自动化测试只能发现很少的软件缺陷,手工测试反而能发现更广泛且更深层次的问题。这是因为测试发现缺陷的能力取决于案例设计而非执行频度,自动化测试的优势在于高效的执行,案例设计仍旧依靠人工,自动化测试在回归测试时大有可为,但这并不意味着其发现问题的能力就一定比手工测试更强,这也是为什么自动化测试不能完全替代手工测试的一个原因。

四是自动化测试只是测试工程师的事情,与开发人员没有关系。 在软件开发过程中,首先需要考虑的就是软件本身的可测试性。但是开发人员如果和测试人员是分离开来的,尤其是开发人员完全隔离于测试过程,那么开发人员就很有可能在一开始的时候就不把软件的可测试性考虑进来,导致其开发的软件对于测试人员来说难以进行测试,更别提还要实现自动化测试了。

五是商业自动化测试工具比开源自动化测试工具更靠谱。 就自动化测试工具而言,测试团队应该根据自身实际情况来选择。商业自动化测试工具固然有它对应的优点,比如有技术团队进行支持,遇到问题也能尽快得到解决。但是如果有特殊需求,这类软件往往就没有自由的可定制功能了。而开源自动化测试工具由于源代码都是开放的,如果团队有特殊的定制需求,可以由测试团队自行修改开源自动化测试工具来满足团队的需要。当然这就需要测试团队具有一定的开发能力,对于测试人员的综合素质又提出了很高的要求。因此要根据测试类别和人员能力实际情况来选择合适的自动化测试工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

观点 的相关文章

  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 链上繁荣,合作不断,外媒热议波场 TRON 2023 年度成绩

    近日 权威外媒Theblock 美联社和Decrypt等就波场 TRON 2023大事件进行了年度盘点 报道指出 波场TRON网络在2023年取得了一系列的发展和合作 提升了其在Web3领域的地位 其中 波场TRON网络账户数量增加了 54
  • 明日 15:00 | NeurIPS 2023 Spotlight 论文

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 哔哩哔哩直播通道 扫码关注AITIME哔哩哔哩官方账号预约直播 1月17日 15 00 16 00 讲者介绍 黄若孜 腾讯AI LAB游戏AI研究员 2020年复旦大学硕士毕业后
  • 基于opencv的大米计数统计(详细处理流程+代码)

    在我每周的标准作业清单中 有一项是编写计算机视觉算法来计算该图像中米粒的数量 因此 当我的一个好朋友M给我发了一张纸上的扁豆照片 显然是受到上述转发的启发 请我帮他数一下谷物的数量时 它勾起了我怀旧的回忆 因此 我在我的旧硬盘上寻找很久以前
  • 性能大减80%,英伟达芯片在华“遇冷”,我方霸气回应:不强求

    中国这么大一块市场 谁看了不眼馋 在科技实力大于一切的今天 高端芯片的重要性不言而喻 作为半导体产业发展过程中不可或缺的一环 芯片技术也一直是我国技术发展的一大 心病 在美西方等国的联手压制下 我国芯片技术发展处处受阻 至今也未能在高端芯片
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 如何用GPT进行论文润色与改写?

    详情点击链接 如何用GPT GPT4进行论文润色与改写 一OpenAI 1 最新大模型GPT 4 Turbo 2 最新发布的高级数据分析 AI画图 图像识别 文档API 3 GPT Store 4 从0到1创建自己的GPT应用 5 模型Ge
  • 不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

    AI 大模型技术经过2023年的狂飙 2024年必将迎来应用的落地 对 IT 同学来讲 这里蕴含着大量的技术机会 越来越多的企业开始招聘 AI 大模型岗位 本文梳理了 AI 大模型开发技术的面试之道 从 AI 大模型基础面 AI 大模型进阶
  • 人工智能 AI 如何让我们的生活更加便利

    每个人都可以从新技术中获益 一想到工作或生活更为便利 简捷且拥有更多空余时间 谁会不为之高兴呢 借助人工智能 每天能够多一些空余时间 或丰富自己的业余生活 为培养日常兴趣爱好增添一点便利 从电子阅读器到智能家居 再到植物识别应用和智能室内花
  • 蒙特卡洛在发电系统中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 3D点云检测神技 | UFO来了!让PointPillars、PV-RCNN统统涨点!

    作者 AI驾驶员 编辑 智驾实验室 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 3D目标检测 技术交流群 本文只做学术分享 如有侵权 联系删文 在这篇论文中提出了一个关于在3D点云中检测未
  • 史上最全自动驾驶岗位介绍

    作者 自动驾驶转型者 编辑 汽车人 原文链接 https zhuanlan zhihu com p 353480028 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 本
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO
  • 【产品兼容认证】WhaleStudio 成功兼容TiDB数据库软件

    平凯星辰和白鲸开源宣布成功完成产品兼容认证 北京 2023年12月27日 平凯星辰 北京 科技有限公司 以下简称平凯星辰 旗下的 TiDB 产品与白鲸开源的 WhaleStudio 已成功完成产品兼容性认证 这一重要合作旨在为全球客户提供更
  • Making Large Language Models Perform Better in Knowledge Graph Completion论文阅读

    文章目录 摘要 1 问题的提出 引出当前研究的不足与问题 KGC方法 LLM幻觉现象 解决方案 2 数据集和模型构建
  • AI 赋能绿色制冷,香港岭南大学开发 DEMMFL 模型进行建筑冷负荷预测

    近年来 城市化进程加速所带来的碳排放量骤增 已经严重威胁到了全球环境 多个国家均已给出了 碳达峰 碳中和 的明确时间点 一场覆盖全球 全行业的 绿色革命 已经拉开序幕 在一众行业中 建筑是当之无愧的能耗大户 其中又以暖通空调 Heating

随机推荐

  • 探讨Socks5代理IP在跨境电商与网络游戏中的网络安全应用

    随着全球互联网的迅猛发展 跨境电商和在线游戏成为了跨国公司和游戏开发商的新战场 然而 与此同时 网络安全问题也日益突出 本文将探讨如何利用Socks5代理IP来增强跨境电商和网络游戏的网络安全 保障数据传输的隐私和安全性 第一部分 Sock
  • 五分钟,带你彻底掌握 MyBatis 缓存的工作原理

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 8 55 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络
  • Quartz框架多个trigger任务执行出现漏执行的问题分析

    一 问题描述 使用Quartz配置定时任务 配置了超过10个定时任务 这些定时任务配置的触发时间都是5分钟执行一次 实际运行时 发现总有几个定时任务不能执行到 二 示例程序 1 简单介绍 采用spring quartz整合方案实现定时任务
  • docker菜鸟入门

    菜鸟入门Docker 说明 一 什么是Docker 1 虚拟机和Linux容器 二 Docker用途 三 Docker安装 1 设置仓库 2 安装 Docker Engine Community 3 验证安装成功 四 Docker启动与停止
  • VoVNet论文解读

    摘要 1 介绍 2 高效网络设计的影响因素 2 1 内存访问代价 2 2 GPU计算效率 3 建议的方法 3 1 重新思考密集连接 3 2 One Shot Aggregation 3 3 构建 VoVNet 网络 4 实验 5 代码解读
  • 01背包(c++版)

    dp i j 表示从下标为 0 i 的物品里任意取 放进容量为j的背包 价值总和最大是多少 void test 2 wei bag problem1 vector
  • 上班族为何需要做副业?如何靠副业月入过万?

    网上统计某某城市平均工资8千以上 诶 一看自己3 4千 其实现在每个背井离乡在外上班的打工人都挺难的 城市很繁华 工资很现实 在工厂打螺丝的更是苦逼的生活 被资本家无情的压榨 在豪华的写字楼上班的白领 也过着996的生活 甚至是007的日子
  • 操作系统复习题

    一 选择题 在计算机系统中 操作系统是 核心系统软件 网络操作系统 不是基本的操作系统 实时性 不是分时系统的基本特征 关于操作系统的叙述 能方便用户编程的程序 是不正确的 操作系统的发展过程是 设备驱动程序组成的原始操作系统 管理程序 操
  • Response 456错误

    今天使用某share拉取股票数据时 遇到了Response 456错误 然而在网上查也没有查到 感觉是是较为少见的错误 http response code HTTP状态码对照表 t 332741160的专栏 CSDN博客 后来发现这个错误
  • 【Bun1.0】使用 Bun.js 构建快速、可靠和安全的 JavaScript 应用程序

    bun js Bun 是一个现代的JavaScript运行环境 如Node Deno 主要特性如下 启动速度快 更高的性能 完整的工具 打包器 转码器 包管理 官网 https bun sh 优点 与传统的 Node js 不同 Bun j
  • python数据分析与挖掘实战 -第四章数据预处理

    数据清洗 目的 删除原始数据集中的无关数据 重复数据 平滑噪声数据 筛选掉与挖掘主题无关的数据 处理缺失值 异常值等 缺失值处理方法 删除记录 数据插补和不处理 拉格朗日插值法 对于平面上已知的N个点 无两点在一条直线上 可以找到一个N 1
  • 解决vue中样式不起作用:样式穿透/深度选择器(/deep/)

    原因1 组件内部使用组件 添加了scoped属性 原因2 动态引入html 也添加了scoped属性 原因3 非以上两种 一 添加了scoped属性 Vue中的scoped属性的效果主要是通过PostCss实现的 以下是转译前的代码
  • 关于数据结构中的叶节点和二度节点的关系(通俗的理解)。

    简单记录一下自己的一些地方和对于这个问题我的一些见解 有说的不好的地方欢迎指正 这里只给出一种理解 另一种利用公式进行理解的 我就不写了 因为csdn里面太多了 先说结论 叶节点的数目 二度节点 1 首先来看这张图 可以看到这个图大体是包含
  • redis 基础概述与使用

    目录 一 redis 概述 redis 主从同步执行流程 redis 淘汰策略 缓存常见问题 KEYS指令与SCAN指令 SpringBoot 整合 redis StringRedisTemplate 与 RedisTemplate red
  • Android练手完整项目app(三)商品分类+流式布局Tag

    1 整体布局 结合项目 一 在FunctionFragment创建整体布局 搜索框布局应该include引入 这里我就没单独抽取
  • java springboot实现手机短信发送

    以下是一个使用Spring Boot实现手机短信发送的示例 首先添加pom依赖 需要引入阿里云的短信SDK和Spring Boot的web依赖
  • 【Linux】fork()

    目录 1 fork是什么 2 fork复制原理 3 逻辑地址与物理地址 4 计算fork 输出次数 1 fork是什么 linux下创建新进程的系统调用的是fork 其定义如下 include
  • 蓝桥杯获奖比例java_2019年第十届蓝桥杯省赛总结(JavaA组)

    update3 28 省一rank4 莫名进了国赛好神奇 记yzm10第一次体验A组 纯粹瞎水 早闻山东的JavaA组神仙打架 进国赛都成了奢望 往年只有五个名额 因此抱着做分母的心态来为学弟学妹试水 来到考场发现同组中光认识的大佬就不止五
  • Glide图片加载回调监听

    前两篇文章从源码的角度对Glide的加载流程进行了分析 这篇文章将对Glide的回调进行总结 1 方法一 设置图片中监听 方法一使用的是SimpleTarget类 他继承自BaseTarget 需要重写onResourceReady方法 o
  • 观点

    原文地址 https www sohu com a 315434322 672569 作者 中国工商银行业务研发中心 郝毅 霍嘉 肖烨 金石乔 本文笔者着重介绍了金融行业软件自动化测试的相关实践与思考 近两年来 多家金融机构和专业测试组织开