游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

给研发工程师的代码质量利器

  1项目介绍
  在分享使用操作前,我将引导大家来熟悉下SOFAActs的项目背景、基本原理等。
  对于研发质量保障而言,金融系统和金融业务的多样性、复杂性同样也会在测试场景、测试验证和测试流程的复杂程度上得到充分体现。
  譬如,对于包含出参、RPC调用、DB变更和异常等多个测试验证点的用例而言,在研发和测试人员维护和验证用例场景的过程中,时常发生业务结果校验遗漏,对我们及早发现和纠错问题造成干扰,进而无法严格保障产品质量。这些问题对研发质量保障提出了很高的挑战,相应的自动化、精细化的白盒测试工具需求日益增长,这其中就包括SOFAActs。
  为了解决上述痛点、满足精细化测试需要,在多年测试实践积累与沉淀下,我们研发了基于模型驱动的SOFAActs测试框架,它可以灵活、可扩展的提供一站式用例管理,标准化测试执行和精细化校验。目前SOFAActs测试框架逐渐成熟并在蚂蚁金服内部得到广泛应用。1。1项目架构
  介绍完背景,我们来看下SOFAActs的大体框架,SOFAActs底层封装并集成适配SOFABoot等运行环境。
  在重要的引擎层,SOFAActs封装了工具类和数据模型,并将测试模式的过程进行了标准化,提供通用测试能力和扩展点。对于有自动化测试经验的同学来讲,测试模式其实并不复杂,这其中有很多工作是可以抽象和固定的,SOFAActs将这部分内容内聚到引擎层,封装成标准测试流程等,尤其是模型驱动和精细化校验等,从而释放精力,将更多关注点聚焦在待测目标上。
  引擎层之上,是SOFAActs提供的可视化用例管理功能,可以一站式的维护测试脚本、测试数据和数据模型,借助可视化编辑器可成倍提高用例管理等等操作效率,整体而言SOFAActs围绕模型驱动引擎和可视化编辑器,将测试代码的编写工作量极尽降低,目标聚焦在测试对象上。
  这里我们示例看下,SOFAActs对测试代码和效率的优化。这里以Credit接口为例,业务处理开始之前会检查传参,构造上下文、随后发起业务处理,涉及对三张表的读取或变更,并在数据库事物结束之后,返回业务处理结果。
  针对这一业务逻辑,这里我们构造一个Credit接口的完整测试用例,在代码驱动测试时,它需要一下9个步骤,手动准备依赖数据、构造请求参数、执行业务逻辑、校验业务结果以及数据清理等等,人工介入成本居高,尤其当存在多个用例时,测试代码可复用性低,测试效率是难以得到有效提升。而与之对比,在模型驱动测试下,Credit接口的SOFAActs测试脚本会对固有的测试模式进行封装,用例复杂度得到极大精简,众多用例数据可以得到高效的可视化管理。1。2执行原理
  在开始使用SOFAActs之前,我们来了解一下有关SOFAActs执行引擎的运作原理。SOFAActs框架也提供了非常多的扩展点,如果需要个性化的定义,可以对每一个环节进行扩展。
  上文中已提到过SOFAActs执行引擎是对测试模式过程的封装,Setup方法是引擎入口,用于加载初始化SOFAActs运行时的必需资源,如获取数据源。
  以下是主体测试过程:clear、prepare、execute、check这4个方法依次负责环境清理、依赖准备、执行、结果校验等。这些内容是代码驱动测试时需要手写的测试代码和内容,每个测试脚本的完成意味着上面的过程会被我们重复一遍,于是SOFAActs将这部分内容进行了封装,实现了最通用基础的功能。
  右侧,我们对高频数据如方法入参、出参、异常和依赖DB数据进行了抽象,给出SOFAActs的模型,这是代码驱动转向模型驱动、精细化校验的基础。左侧的数据总线会贯穿每个用例的执行生命周期,即贯穿中间的主体测试过程,如果大家对框架封装的基础功能有自定义需要,可以通过数据总线对SOFAActs的对象、方法进行获取、重写,以便更灵活的控制框架行为。当然SOFAActs对这些内容作了较好的封装,覆盖了大部分的测试需求,无需大家过度关注。
  以上就是SOFAActs的执行原理,接下来我会给大家详细介绍SOFAActs的接入和使用。2SOFAActs接入
  SOFAActs分为两部分,其一是可视化编辑器,在SOFAStack官网上我们可以获取该编辑器的安装包,并通过IDEA的插件管理进行安装。其二是SOFAActs的基础jar,它提供了SOFAActs用例运行的环境支持,在test模块pom中添加下列依赖即可,有关test模块或者多模块详细内容大家可以参考SOFAActs的快速开始文档。3功能介绍和使用
  下面,我们进入SOFAActs的功能介绍和使用章节,这部分我将分为三小节展开:一站式构建、SOFAActs核心的模型驱动以及SOFAActs提供的精准校验。3。1一站式构建
  一站式构建中,SOFAActs通过可视化编辑器为我们提供了便捷操作,以帮助一键配置初始化、构建测试脚本与模型,可视化管理用例数据等等。借助可视化编辑器,在整个过程中我们可以替换大部分手工编写代码的工作,进行一站式操作。
  一键初始化
  这里我们示例看下,如何操作一键初始化以及一键初始化做哪些内容。首先一键初始化框架只需要3个鼠标点击步骤。在Package视图下选中测试模块并右键选择SOFAActs功能,一键初始化,输入该应用的应用名称和工程编码格式。在一键初始化完成后,SOFAActs将会在test模块写入SOFAActs配置文件,DB连接配置文件,测试套件配置文件以及创建模型存储目录等。
  actsconfig配置文件是SOFAActs的核心配置,提供了测试环境切换、数据库连接切换、冒烟测试以及预跑反填等配置,来开关SOFAActs的相关功能;model目录用于存放对象模型、数据模型,以便对模型进行统一管理;DB配置文件指明了数据库连接信息,用于生成数据模型时自动填充表结构和模版数据。
  一键生成测试脚本
  在完成配置初始化操作后,我们可以开始第一个用例的编写,SOFAActs提供了一键测试脚本生成功能。以待测的getMessage接口为例,在其方法定义上右键选择SOFAActs功能,生成测试用例,在弹出框中检查用例信息,修正无误后点击确定可以生成该接口的测试脚本。校正依赖的启动类并运行SOFAActs测试脚本,可以看到能够正常启动SOFABoot,SOFAActs会拉起SOFABoot以尽量模拟业务代码运行时的容器环境,因此如果存在SOFABoot上下文加载失败,需要排查应用配置。
  一键生成数据模型
  通常在我们创建SOFAActs测试脚本时方法入参和出参的对象模型会一并生成好,因此这里着重介绍下如何一键生成数据模型。事先,我们在actsconfig配置文件中,指明DB环境如dev并配置dev环境下DB连接信息。就绪后,我们打开测试脚本,在被test注解的方法上右键选择SOFAActs功能,生成DB表结构模型,在弹出视图中选择需要的DB表,当有多个表时,可以一并添加至右侧,点击OK以生成DB模型,之后可在modeldbModel目录查看生成的数据模型。
  稍后模型驱动内容中,我将给大家详细介绍SOFAActs中模型的概念和使用。
  可视化用例管理
  在SOFAActs编辑器中,我们能够可视化地修改入参、DB和结果数据等。在用例级别,编辑器提供了用例复制功能,对于设计等价用例而言,通常正常测试用例之间,异常测试用例之间的差异可能只在于某一关键字段的取值,而大部分数据是相同的,这时用例数据复用十分必要。SOFAActs提供了用例复制等管理功能,可用于快速发起用例构建。3。2模型驱动
  下面我们介绍模型驱动,在代码驱动测试时,方法入参、出参和DB等测试数据是通过代码组织的,随着业务复杂度提升,尤其在金融级业务场景中,类和表动辄十几个属性或者字段,属性嵌套也时常可见,代码驱动测试难移应对:测试脚本可复用性低、测试数据管理困难等问题。于是,SOFAActs将方法入参、出参、异常和DB等数据抽象为模型,用以结构化地记录数据类型、取值和校验规则,可以快速发起用例数据构建。
  SOFAActs中的模型主要分为:数据模型和对象模型。
  对象模型:主要用于构造方法入参、期望结果和期望异常。期望结果和期望异常是指在符合测试预期下被测方法的返回结果或者异常抛出。
  数据模型:对于一个有DB依赖的业务场景的测试验证,需要生成相关DB表的数据模型,用于快速构建DB准备数据和期望数据。DB准备数据是业务执行期间依赖的前置DB数据,例如在验证转账场景时参与双方的账户余额等,DB期望数据是指在符合测试预期下,被测方法对DB的变更。
  经过模型化,一个复杂对象或数据可以被快速模版化地创建、拷贝和校验,达到测试数据与测试代码解耦合的效果,另一方面,配套使用SOFAActs编辑器,实现测试数据一站式管理,来提高用例编写效率和降低维护成本。
  下面我详细介绍下数据模型和对象模型的结构和使用。3。2。1数据模型
  通常SOFAActs只需要填充DB准备数据,而DB期望数据可以利用预跑反填功能进行自动采集。
  为了更好地理解数据模型,在modeldbModel下的csv文件中,我们可以看到某一张表的全部字段、取值以及校验规则。数据模型聚合了表的结构、数据和校验规则,结合可视化编辑器可快速创建、复制DB数据,一次编辑多次使用。这里我们来看下示例,在编辑器如何使用数据模型。3。2。2对象模型
  对象模型,它是方法入参、出参等对象在SOFAActs中的映射,可以在modelobjModel目录下查看生成的对象模型。对象模型的结构和数据模型相似,是属性、取值、校验规则的聚合,与数据模型不同的是,对象模型可能存在多层嵌套,因为类的某一属性可以是map、集合、类等引用类型。
  在SOFAActs编辑器中可以为一个新的用例添加入参数据,如果入参是简单类型,如int、String等可以选择简单类型填充,这里示例下复杂类型,即业务对象的模型使用,在左侧的列表中选择目标对象,添加至右侧,如果有多个入参可以一并添加到右侧后,再点击确定,即可以在入参设置中看到入参数据并可进行编辑。对于有多个入参的方法,入参设置中从上之下的顺序和方法声明入参顺序是需要一致的。3。3精细化校验
  下面我们介绍精细化校验,在一开始时,我们提及到复杂业务场景下极易出现校验遗漏,形成校验假绿。为此,SOFAActs内置了精细化校验,从校验规则和行为还原两点,来保证复杂场景的校验覆盖。
  如右图,SOFAActs将重复性assert代码抽象归纳为校验规则,与测试数据一同作为数据模型的一部分,可以细化校验每个字段。目前acts支持的校验标签如下,其中常用有Y、N、C标签,Y表示了校验时必须一致的对象或属性、N表示校验时不关心的属性或记录值、C标签标示DB数据校验时的DB查询条件,即where条件,参考右图我们可以理解标签的使用。
  为了真实还原业务行为以提高验证覆盖和用例数据的编写效率,SOFAActs提供了行为还原,作为精细化校验的一部分,行为还原在SOFAActs中称为预跑反填功能,是指在方法入参、依赖的DB数据等用例正常执行的基本数据准备完成后,可先不必填写期望数据而直接运行测试脚本,框架可自动捕获运行时方法返回结果、所有DB表变更等数据,通过SOFAActs编辑器可填充用例的期望数据,小幅度修正和标记校验规则后即可完成全部校验点的参考数据的编写。
  这里我给大家演示如何使用SOFAActs的预跑反填功能:
  启用SOFAActs的预跑反填功能需要在actsconfig中打开结果收集开关,然后执行用例,运行完毕唤起SOFAActs编辑器,点击左上角的预跑反填,选中需要的用例数据,点击确定就完成了相应用例的期望结果、期望DB数据的构造,但预跑反填功能本身并不保障校验数据的准确性,需要针对待测业务场景将数据修正。4进阶功能
  下面,我们进入本次分享的最后一部分,SOFAActs进阶功能的使用。这里为大家介绍使用频度最高的两个功能:自定义引擎流程和参数化。
  稍做回忆,在一开始我们熟悉了SOFAActs的运行原理,提及到SOFAActs执行引擎是对测试模式过程的封装,同时为数据模型、数据总线提供了扩展点,这里我们举例使用、重写这些API。另一个高频功能是参数化,提供了运行动态替换String类型取值的功能,以满足部分随机动态的测试需要。Overridepublicvoidcheck(ActsRuntimeContextactsRuntimeContext){if(actsRuntimeContext。caseId。endsWith(001)){if(((AccountTransResult)actsRuntimeContext。getResultObj())。isSuccess()){actsRuntimeContext。paramMap。put(status,0);}else{actsRuntimeContext。paramMap。put(status,1);}actsRuntimeContext。refreshDataParam();}super。check(actsRuntimeContext);}
  我们以check流程为例,重写了check方法来满足动态校验,这里依据返回结果设置了自定义参数,放置到数据总线Actsruntimecontext中,我们将期望DB数据中的mast表的status字段设置为自定义参数,表示该字段的期望值应该和方法返回结果中的状态保持一致或者关联。然后运行用例来查看我们重写的校验是否达到了预期。5总结
  SOFAActs提供了很多扩展点可以让大家适配应用的测试需求,如果你需要一个更强大的SOFAActs,可以动手重写这些API将基础功能进行延伸,当然更欢迎大家在Github中提Issue、Commit来一同完善SOFAActs。

数据结构与算法跳表(SkipList)我们都知道Redis支持以下五种数据类型:字符串String列表List哈希Hash集合Set有序集合SortedSetredis基础知识回顾Java高频面试题每日……早买早享受!平价降噪耳机的天花板漫步者FitPods如今市面上的主流耳机都有一个强有力的卖点主动降噪。像AirPodsPro虽然实力出众,但其高昂的定价也是劝退了不少学生党。而平替耳机市场又鱼龙混杂,完全不知道哪些耳机是真正带有……源自腾讯!20212022社交App设计趋势报告近期,腾讯社交用户体验设计中心ISUX发布了20212022社交App设计趋势报告,对从事视觉设计、UI设计的同学有一定参考价值,我们一起来看看吧。01hr互联网社交发展……新能源车主必看!关于你的车险,又有新消息今天,中国保险行业协会正式发布《新能源汽车商业保险专属条款(试行)》,备受关注的新能源车三电(电池及储能系统、电机及驱动系统、其他控制系统)纳入保障范围,涵盖新能源汽车行驶、停……一夜之间国产机纷纷抛弃苹果刘海屏,网友好像说的有道理!2017年iPhoneX发布以后,刘海屏设计几乎成为了大家的新宠,国内很多产品撞脸iPhoneX,不过随着时间的推移,有趣的一幕发生了,很多品牌像是说好一样,纷纷舍弃了刘海屏设……奔驰EQAEQB预售3744万元网友勇气可嘉10月21日,梅赛德斯奔驰官方公布两款新车预售价,其中奔驰EQA3004MATIC预售价格为37万元,EQB3504MATIC预售价格为44万元,即日起全国范围内接受预订。……东风汽车以出行平台支撑业务转型【数字经济应用场景案例说产业互联网系列(三十一)】东风汽车:以出行平台支撑业务转型发布日期:20210928来源:北京软件和信息服务业协会北京产业互联网既肩负着再造……YOGAPro13s2021体验评测精致唯美,颜王YOGA我们在选购笔记本时,最在意什么?有的小伙伴在意性能,有的小伙伴在意设计,而作为文字工作者的我则在意轻薄,只有真正的轻薄,才能带来真正的便携,很多小伙伴让我推荐轻薄笔记本,……如何选择百搭T恤,七款T恤上身试穿告诉你前言大家好,我是小猴。随着温度逐渐走出冬日的寒意,即将到来的炎热夏季和温暖春天为我们穿上漂亮的衣服出门踏青郊游提供了很好的条件。作为内穿百搭的白T恤又成为了取代保暖内衣的……大型数据中心建设中的政企合作模式探讨当前,互联网、物联网、云计算等新兴信息技术的快速发展,将人类带入了全新的数字时代。数字经济成为带动经济增长的全新的核心动力,数据更是数字经济时代最为核心的生产要素之一。全球范围……互联网公司的流量生意互联网公司都是怎样把流量变成现金的最近使用滴滴的人都知道,如果你在支付车费时,更换成银行卡支付,将享受优惠,大多人数以为是滴滴为了建立自己的支付渠道,但是你每次打开app……挖矿科普好烦啊,老板没在,我才敢发这篇文章搜索微信公众号矿视界关注我们是的,今天老板不在,不知道等老板回来发现我今天写这样的文章会不会给我删了,然后叫我下周一别来了TT。看到这篇文章的你,很幸运,因为可能下……
立陶宛指责小米手机有审查功能德国安全部门查无证据参考消息网1月14日报道据路透社柏林消息,德国网络安全监督机构德国信息技术安全局(BSI)发言人当地时间13日说,经过数月的调查,他们没有找到任何证据证明中国小米公司生产的手机……外壳完全透明,这款手提箱终于成为主流!今年早些时候,我们讨论了RimowaX灰白色透明手提箱,探讨了绝对透明的手提箱的优点(可能还有一些缺点)。覆盖小米90分透明手提箱(说实话,这是一个相当敲诈)的想法是解决一个方……Redmi10国际版已官宣,百元神机终于来了,外观是亮点越来越多的手机厂商都开始着重于高端市场的发展,曾经主打性价比的小米也不例外,先后发布了小米11系列和MIX4等辨识度较为明显的旗舰机型来冲刺高端市场,但小米并没有放弃中低端市场……干货认领POI以及通过POI商品审核应该如何做呢?对于我们咫尺同城圈的运营者来说,POI这个词一定不陌生,想要进行商品的添加,商家的入驻,都必须提到POI。那么POI是什么,如何进行POI的认领,以及如何能快速的通过PO……为打破日韩垄断,80后夫妻砸百万研发,一年卖出300万米汉服穿的人多了,也就不小众了。文吴鹤鸣编辑范婷婷不止一次,丽丽在街上看到漂亮的小姐姐,穿着自家布料做的汉服。她和丈夫经营一家布料厂,之前做的就是普通布料,走……2020年中国生鲜供应链市场研究报告核心摘要:我国生鲜品类繁多,主要包括蔬果类、肉类、海鲜类等,具有鲜活易腐、不耐贮运、生产季节性强、消费弹性系数小等特点。传统分销供应链模式下,生产者与消费者相隔多层分销环……realme真我大师探索版VS小米Mix4,实际上手体验谁更随着物联网(IOT)时代的到来,智能移动终端显得越为重要。越来越多的移动智能终端也纷纷加入了自家的生态链在其中,使得万物互联;人们的生活也越来越智能化。那么问题来了?如何选择一……怎么选手机才能持续用个两三年而不卡?这些参数你需要注意现在人们买手机,不管是学生党还是上班族,都希望自己的手机可以用久一点,那要怎么选手机才能在让手机可以持续用个两三年而不卡呢?注意好下面这些参数,你的手机占个两三年是没任何问题的……补贴退坡,车企断奶新能源车迎来新拐点来源:南方日报补贴退坡,车企断奶新能源车迎来新拐点新年伊始,新能源车补贴也迎来了新的历史阶段:较2021年退坡30(公共领域20),补贴至2022年12月31日终止。……推荐一款40005000元的商务投影仪,明基E540投影仪必前段时间纠结啊,公司刚成立不久,团队壮大起来要买一台智能投影仪。上网一搜网友们推荐的投影仪大部分都是家用的,好是好啊,投影仪选择有智能系统的,可以无线投屏可以装软件,但亮度太低……更多有关微软SurfaceGo3设备的规格被泄露我们上周发布过泄露的微软SurfaceGo3的基准数据,表明SurfaceGo3的性能表现将比SurfaceGo2强大得多。而今天德国网站Winfuture公布一些进一步的规格……发票只能对公转账吗?能不能付现金?千万别大意开票一定要对公转账,能付现金吗?付现金符合三流一致吗?今天就带大家一起来看看:(此处已添加小程序,请到今日头条客户端查看)1、开发票一定要银行对公转账才行吗,不能付现金吗……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网