关于测试自动化:Postman-发送-RSA-签名请求qbit

前言Postman 版本 10.13.6qbit 将 RSAForPostman 压缩拷贝到了码云便于国内拜访Postman 脚本示例Pre-request Script if (!pm.collectionVariables.has("forgeJS")) { pm.sendRequest("https://gitee.com/qbitoy/public/raw/master/forge_rsa_min.js", function (err, res) { if (err) { console.log(err); } else { pm.collectionVariables.set("forgeJS", res.text()); } })} else { var moment = require('moment'); eval(pm.collectionVariables.get("forgeJS")); const prikey = pm.collectionVariables.get("prikey"); console.log("prikey:" + prikey); var priv = forge.pki.privateKeyFromPem(prikey); const md = forge.md.sha256.create(); var ts = moment().valueOf(); pm.collectionVariables.set("ts", ts); console.log("ts:" + ts); var message = "/subject/eduSubject-" + ts; console.log("message:" + message); md.update(message); const data = md.digest().bytes(); const sign = forge.util.encode64(priv.sign(md)); pm.collectionVariables.set("sign", sign); console.log("sign:", sign);}Postman 内置库官网文档:https://learning.postman.com/docs/writing-scripts/script-refe... ...

May 24, 2023 · 1 min · jiezi

关于测试自动化:luckyFrame自动化测试

启动服务端java -jar luckyFrameWebV3.5.jar//或者双击启动命令start.cmd 客户端//或者双击启动命令start_service.cmd

May 17, 2023 · 1 min · jiezi

关于测试自动化:AREX-流量回放实践分享

AREX 是一款开源的测试工具,提供测试用例治理和无代码侵入的流量回放性能。 本文带来对于 AREX 的实际分享,次要集中在流量回放性能,被测利用是在官网提供的 community-test 利用上进行了肯定的功能扩充,实现了一个简略的书店生成订单性能,为特定用户生成某本书的订单,过程中会依据营销政策计算书本价格,也会调用扣库存服务扣除对应书本的库存。 该服务提供两个接口:order(生成订单)和 updateInventory(扣库存),其中 order 执行过程中会调用 updateInventory。 论断文档比拟长,先给出试用论断: 用例治理方面:整体相似 Postman,提供了 Postman 的大部分性能,如:脚本、环境变量、WorkSpace 等,本文演示中不波及。无代码侵入的流量回放性能:其外围原理能够参考官网提供的介绍。 接入不便,根本是无老本的数据采集和主动 Mock 能力十分强,反对 Http 服务、数据库、Redis、本地缓存、以后工夫的全自动 Mock,通过配置也能够反对内存数据的 Mock写服务反对良好,例如下单服务,在测试时对所有的依赖都进行了 Mock,所以齐全不须要放心生成脏订单,而且重要的是,即便进行了 Mock,也能够对订单后果进行验证(例如写到订单库的数据,看测试后果时会拿回放时的 SQL 和采集的测试用例里的 SQL 进行比对)验证点比较完善,测试时不只是对服务响应进行验证,还会对输入数据进行验证,像写到数据库、Redis 里的数据,发送给内部服务的申请也都能够进行验证美中不足: 对于性能比较复杂的利用,因为后果验证是全比对的,为了比拟好的体验,须要进行一些配置对后果降噪。疾速装置AREX 反对两种应用模式,上面别离进行介绍。 Standalone 模式Standalone 模式指的是 AREX 在本地环境中独立运行,也能够称之为命令行模式,应用非常简单。从:https://github.com/arextest/arex-standalone/releases 下载 arex-standalon-all.zip 文件后间接运行 arex-cli.bat(sh) 即可,启动后会列出以后机器上正在运行中的 Java 服务,抉择对应的服务,工具会主动将 Agent attach 到指标服务上,如下: 有以下几个次要命令: ls:列出指标服务上曾经采集的用例, 刚启动还没有任何数据,须要给服务发送一些申请后再执行该命令。 replay:将采集的用例在以后服务上进行回放,并给出回放的后果,执行后果会展现在一个弹出的网页上。 点击 Detai 按钮会显示对利用例的执行后果,也能看到运行过程中采集的所有数据,以扣库存接口为例,流程中相干的数据都进行了采集。 接口的响应: 拜访 DB 更新库存: 拜访 DB 获取书本的具体数据: 如果执行失败又不能简略判断失败起因,能够点击 Debug 按钮,间接进行代码的 Debug,这个性能能够了解成把采集到的申请发送给本地服务,从而能够在 IDE 中进行代码 Debug。在申请执行时,利用自身依赖的服务、DB等也不会产生真正的拜访,而是用采集的数据进行 Mock。 ...

April 26, 2023 · 1 min · jiezi

关于测试自动化:接口测试利器

背景在整个软件开发生命周期中,软件测试工作始终贯通其中,包含开发过程中、代码合并前的集成测试以及上线后的继续集成测试。为保障软件品质的全面性和稳定性,开发和测试人员都须要一直反复执行以下测试工作: 接口调试接口调试是开发人员在实现开发后进行疾速自测的一种无效形式,通常能够应用一些接口调试工具,如 Postman、ApiFox 等向接口发送申请并察看返回后果,调试和解决接口实现中呈现的问题。 接口自动化测试由测试人员筹备测试数据、编写测试用例并应用 JMeter 等工具编写自动化测试脚本,自动化执行测试用例,以确保代码的品质和稳定性。 接口数据 MockMock 在英文中含有模拟的意思,顾名思义,数据 Mock 就是通过结构假数据来达到测试的目标。采纳 MockJS 等工具 Mock 接口数据,能够节俭数据结构的工夫,这对前期进行回归测试工作的效率晋升至关重要。 接口回归测试回归测试旨在确保软件在通过批改、增加新性能、优化性能等后依然可能失常工作,在软件的疾速迭代开发中尤为要害。在接口回归测试中,通常须要结构数据、保护数据、测试用例及接入 CI/CD 流程。 对于一个产研团队来说,若要实现上述研发过程中所有环节的需要,至多须要应用四五种不同的工具能力满足,在理论工作中带来的问题也可想而知: 复杂性减少:应用多个工具可能会导致研发流程变得更加简单,须要更多的工夫和精力来协调和治理,团队无奈在同一套零碎中进行合作,导致各种沟通不及时、配合低效。高风险:应用多个工具也意味着须要将数据从一个工具同步到另一个工具,这可能会减少出错的危险。高老本:每个工具都有本人的应用办法和特点,须要破费工夫来学习和把握,前期也须要破费更多的工夫来保护和更新工具,特地是在长期的我的项目中。回归测试复杂度减少:对于须要疾速迭代的简单零碎,须要频繁地保护数据和用例,无论是脚本化保护还是手工保护,都须要破费大量的精力。业务复杂度高时,回归测试的复杂度可能会日益增高,这可能须要更多的工夫和资源来实现。“自动化”测试侧重于“自动化”执行,但保护工作仍旧是“手工”,工作量十分大。试想一下,如果有一款工具能够实现上述所有性能,那不是能够大大简化研发流程,进步测试效率,升高保护老本和出错率?明天咱们要介绍的就是这样一个工具:AREX。 什么是 AREXAREX 是一款开源的自动化测试平台,联合了 Postman + Mock + 比对测试,不仅提供了接口测试性能,更是通过 Java Agent 字节码注入技术,在生产环境录制和存储申请、应答数据,在测试环境回放申请和注入 Mock 数据,并存储新的应答,以此来达到主动录制、主动回放、主动比对,为接口回归测试提供便当,实现了从接口调试到接口数据 Mock,再到接口自动化测试和接口回归测试的闭环工作流。借助 AREX,开发和测试人员能够各取所需,协同单干,实现更高效的软件开发和测试。 接口调试(Postman)AREX 不仅能反对 Postman 大部分的接口调试性能,还提供了接口用例性能。 接口用例性能AREX 能够为同一个接口申请保留多个场景下的接口用例,每个用例都将主动继承以后接口申请下的配置,如 URL、申请形式及 Parameters、Header、Body 及前置脚本(Pre-request Script)等。通过继承父节点的接口申请配置,测试用例不须要一一从新定义接口的申请参数及前置脚本,后续再次调试时可间接运行接口用例,从而缩小测试用例编写的工作量和工夫。 AREX 还提供了测试用例治理性能。目前能够对测试用例增加标签(Add Tag)进行分类,前期将减少通过标签搜寻用例的性能,方便管理。另外能够为用例增加形容,进步用例可读性,让协作者更容易了解测试用例的目标和预期后果,并且能更好地把握测试内容。 导入、导出用例(开发中)各个测试团队都有本人的测试习惯,强制迁徙到一个新的测试工具,有很大的迁徙老本。AREX 后续将陆续反对各种格局的测试用例导入、导出,届时旧工具中的泛滥用例能够一键迁徙到 AREX,无需再次新建我的项目,同时也能够将 AREX 录制到的用例导出,帮忙测试团队升高迁徙老本。 目前 AREX 正在反对 Postman 导出的用例导入,如需反对其余格局的用例导入,能够在 Github 上提交 Issue,与社区共建。 固化的测试用例也反对导出,目前反对 Postman 格局的用例(JSON格局)。 接口回归测试(Mock + 比对测试)AREX 采纳 Java 的 instrument 技术实现了无代码侵入的数据采集和自动化 Mock,在进行回放时会应用录制过程中采集到的数据进行 Mock,代替真正的数据拜访,并不会产生真正的内部交互(如 DB 的写入、其余第三方服务的调用),防止了回放测试中脏数据的写入。同时反对各种支流技术框架的主动数据采集和 Mock,包含数据库 redis 等,并且反对了本地工夫、缓存等数据的 Mock,回归测试时能够在测试环境完满还原生产执行时的数据环境。 ...

April 18, 2023 · 2 min · jiezi

关于测试自动化:Web自动化测试框架TestCafe使用指南

什么是TestCafe?TestCafe是一个基于Node.js,反对多平台(Linux,Windows,macOS)的端到端web测试框架 装置指南最简略的形式是通过npm包管理工具进行装置,以下命令会在电脑上全局装置testcafe npm i -g testcafe形成TestCafe测试基于Node.js脚本执行,可通过新创建TypeScript或JavaScript文件开始进行测试用例编写,TestCafe的测试文件由fixtures和tests组成,一个fixture是一组共享初始URL的test函数组成的倡议:在每一个test文件中仅应用一个fixture,如用例集中蕴含不同初始URL的测试,最好将其调配至不同的测试文件中——通过初始URL进行分类 通过如下形式进行fixture的创立: fixture("Getting Started")而后应用page办法为fixture指定初始的URL: fixture("Getting Started").page("https://devexpress.github.io/testcafe/example")最初,通过应用test方面进行测试用例的申明: fixture("Getting Started").page("https://devexpress.github.io/testcafe/example") test("My first test", async (t) => { // Test code here })测试动作testcafe以后反对的页面操作: Click(点击) 点击操作又可分为:Click、Double Click、Right Click,示例: import {Selector} from 'testcafe'; fixture `Interact With the Page`.page`example`; test("Click Test", async (t) => { const btn = Selector("button").withText("Test") // await t.doubleClick(btn) // await t.rightClick(btn) await t.click(btn) })Press Key(键盘输入)Type Text(输出文字)Select Text (抉择文本)Hover(高亮)Scroll(滑动)Drag Element(拖动元素)Upload FilesWork with iframestestcafe以后反对的浏览器操作: ...

March 27, 2023 · 1 min · jiezi

关于测试自动化:推荐这个UI自动化测试框架像口语化一样写用例

背景携程机票从2018年年中正式引入BDD,至今已3年多,成为外部首选的麻利开发技术。 Flybirds 是一套基于BDD模式的前端UI自动化测试框架,提供了一系列开箱即用的工具和欠缺的文档,当初逐渐稳固,成为机票外部首选的BDD-UI-Testing测试框架。 为什么开源分享咱们的BDD技术计划期待业内应用BDD技术的同行通过开源社区与咱们进行更深刻的交换本文将从个性介绍、环境搭建、应用帮忙、自定义扩大、继续集成、发版打算这几个方面对框架进行介绍。 Flybirds基于Behave,实现BDD中“自然语言测试用例文档”和“自动化测试代码”关联须要用到反对BDD工具。基于Airtest,实现BDD中“测试用例能在自动化测试平台上执行”须要用到UI自动化测试框架。基于Multiple-cucumber-html-reporter,实现可视化的测试报告 个性应用Flybirds你可能实现大部分的手机端自动化操作,以下是一些帮忙入门的个性形容: 基于BDD模式,类自然语言语法反对自动化APP操作、表单提交、UI元素校验、键盘输入、Deeplink跳转等默认反对英文、中文两种语言,反对更多语言扩大插件式设计,反对用户自定义自动化扩大提供cli脚手架,疾速搭建我的项目提供html报告环境搭建应用pip装置flybirds框架,过程中会主动装置所需的 依赖包pip3 install flybirds在Mac/Linux零碎下,须要手动赋予adb可执行权限 for mac cd {your_python_path}/site-packages/airtest/core/android/static/adb/macchmod +x adbfor linux cd {your_python_path}/site-packages/airtest/core/android/static/adb/linuxchmod +x adb应用脚手架创立我的项目flybirds create 疾速上手运行演示为了帮忙应用,我的项目创立时,会生成中英文的Android、iOS演示feature,不便用户参考。 features/test/features/test/androidfeatures/test/android/cn/everything.featurefeatures/test/android/en/everything.featurefeatures/test/iosfeatures/test/ios/cn/everything.featurefeatures/test/ios/en/everything.feature以“Android”为例 执行命令 adb devices , 查看设施列表中是否蕴含测试设施开始运行 cd {PATH_TO_PROJECT_FOLDER}flybirds run -P features/test/android框架会通过flybirds_config中配置的packagePath主动下载测试包并装置(请确保手机曾经关上”容许装置未知起源“ ) 运行后果如下 11 features passed, 0 failed, 0 skipped, 0 untested23 scenarios passed, 0 failed, 0 skipped, 0 untested117 steps passed, 0 failed, 0 skipped, 0 undefined, 0 untestedTook 5m21.300s===================================================================================== Multiple Cucumber HTML report generated in: /Users/test/my_first_project/report/7eb9162a-9d42-4fde-a5d7-d8d4bca7a8d8/index.html=====================================================================================接下来,理解下更多我的项目细节 ...

March 2, 2022 · 2 min · jiezi

关于测试自动化:mitmproxypython-实现游戏协议测试

本文偏重介绍如何应用 python 和 mitmproxy 实现拦挡数据包、重发数据包,以及解析 protobuf 数据内容,对于相干依赖的装置不做介绍。 一、游戏协定平安测试内容参考https://testerhome.com/topics...,这篇文章讲的很分明。 二、实现原理想间接应用的同学能够跳到第三局部。 mitmproxy 作为代理,能够获取客户端与服务端通信的数据,并且能够拦挡、批改和自主发送数据。当配合其证书应用时,还能够解密 wss 连贯中的 websocket 数据。 Websotcket 数据处理源码剖析在 http 代理的过程中若发现 upgrade websocket 申请,则创立 WebSocketLayer 实例,并调用其_call_办法。# mitmproxy/proxy/protocol/http.py"""以下为Httplayer的_process_flow办法的局部代码"""if f.response.status_code == 101: # Handle a successful HTTP 101 Switching Protocols Response, # received after e.g. a WebSocket upgrade request. # Check for WebSocket handshake is_websocket = ( websockets.check_handshake(f.request.headers) and websockets.check_handshake(f.response.headers) ) if is_websocket and not self.config.options.websocket: self.log( "Client requested WebSocket connection, but the protocol is disabled.", "info" ) if is_websocket and self.config.options.websocket: layer = WebSocketLayer(self, f) else: layer = self.ctx.next_layer(self) layer()WebSocketLayer 初始化时会创立用于此次 websocket 通信的编解码器。 ...

February 9, 2022 · 5 min · jiezi

关于测试自动化:CasePlayer2嵌入式软件的说明书制作及解析工具

CasePlayer2 : 实用于嵌入式软件的说明书制作及解析工具动态解析C/C++源代码主动生成流程图等文件实用于各种嵌入式微机用汇编代码具备合乎编程规范MISRA-C 1998/2004的标准查看性能,Code Metrics计测性能实用于把握以往程序的内容,审阅会议时评估程序等,有利于改善软件品质的工具 产品概要CasePlayer2是通过解析ANSI C语言,C++,嵌入式C语言(非ANSI),以及汇编语言的源代码,制作包含流程图等的程序说明书的工具。不论是对以往的程序进行逻辑剖析,还是为新开发的程序制作说明书,都提供了强有力的声援。作为程序动态剖析性能,包含内部变量参照/代入的列表性能,以及C语言的编程规范[MISRA-C]的标准查看性能。 只需将程序注销,能够主动生成各种说明书CasePlayer2是通过剖析ANSI C语言,C++,嵌入式C语言(非ANSI),以及汇编语言的源代码,制作包含流程图等程序说明书的逆向CASE(computer aided software engineering tool)工具。利用GAIO的次要技术也就是编译技术,不须要追加其余代码就能够解析代码结构,制作各种流程图。而其余公司的CASE工具往往须要追加代码能力实现流程图生成。而且,只需几秒钟就能够将数万行C语言程序转换成流程图,具备引以为豪的压倒性性能。[制作的说明书]・流程图・模块(函数)说明书・模块结构图・模块(函数)表・structure说明书,structure表 依据动态解析性能,生成内部变量对照表,typedef表,各种参照表具备通过动态剖析制作内部变量表和内部变量对照情报表的性能。能够用来确认整个Project中的外部变量在那里被参照,在那里被写入。也能够通过列表跳到绝对应的代码所在行。可能在晚期发现不正确的写入及读取,发现那些意想不到的谬误,领有强有力的性能。[依据动态解析制作的说明书]・内部变量表・typedef表・#define表・内部变量参照表・函数参照表・structure参照表・structure成员参照表 反对ANSI C语言,非ANSI嵌入式C,嵌入式汇编语言[CasePlayer2]也反对嵌入式汇编的源代码。程序包(Package)提供了近60种微机的参数(parameter)文件,简直笼罩了目前应用的各种微机。即便须要对个别的微机或个别微机的机型减少新的命令语,用户只有在参数文件中减少新命令语的定义,就能够立刻应用。对于C语言代码,不仅反对ANSI C语言,也反对#ifdef这样的设定编译条件的预编(preprocessor)代码。另外,也反对应用near,far一类非凡代码的程序。 可能设置最佳打印布局防止不必要的用纸不仅能够打印Word文件,也可能打印HTML文件[CasePlayer2] 提供流程图打印的最佳化性能,防止打印不必要的空白节约用纸。在打印布局性能方面,相比其余公司的CASE工具有着压倒性劣势。只需扭转打印倍率,即可失去用纸起码,布局最佳的打印。流程图之外的说明书也能够用同样的办法打印。另外,打印出的说明书还能够生成为HTML,Word(doc)格局的文件,生成比例能够自在设置。 具备[MISRA-C]的标准查看性能,合乎MISRA-C1998、MISRA-C2004规范MISRA-C是MISRA(Motor Industry Software Reliability Association)针对汽车工业畛域的C语言软件制订的规范。MISRA是以汽车工业畛域为核心无关软件可靠性的非营利机构。最近,MISRA也开始被汽车软件以外的畛域所采纳。[CasePlayer2]包含合乎[MISRA-C]规范的程序结构解析性能。GAIO的代码解析技术是从开发编译技术造就起来的,可能发现不同用户编写的不同程序中的不符合规范的局部,同其余公司的标准查看工具相比,CasePlayer2以其解析的”深度”,失去高度评价。查看的标准我的项目能够任意抉择。※MISRA标准查看性能不反对C++。只有Code Metrics情报输入性能反对C++。[次要性能]●MISRA-C 1998 : 可能对127项标准中的124项进行谬误查看 ●MISRA-C 2004 : 可能对141項标准中的138项进行谬误查看 ●点击HELP能够阅览标准讲解,举例说明容易了解(日语) ●对代码的测试,代码的重复使用,代码的保护有很高利用价值的Code Metrics测试 ・门路复杂度・Myer's Interval ・NET深度・代码文件的大小・注解(行数/比率)・动态pathcounterCasePlayer2利用实例CasePlayer2是能够随时随地将源代码变换成视觉形象的风行图的工具。能够在开发的各种环节灵便利用,例如源代码的解析,程序说明书的制作等。[A]开发初期的根本设计及探讨阶段,须要对现有的源代码进行考察解析对现有源代码,无论是资源中的源代码还是其余工程师编写的源代码,都须要在短时间内了解它们的逻辑内容,确认将它们插入时须要的批改规定等事宜。模块结构图以及流程图可能提供强有力的声援。CasePlayer2具备在几秒钟转换几万行的C语言程序的能力,能够即刻将代码变换成图形,进步源代码的解析效率。[B]程序编程前期的源代码审阅会议,进步软件品质进步软件品质首先要在开发团队中开展相互审阅查看,发现自己未能觉察的谬误,总结提出更无效的编程办法。 能够随时将源代码变换成流程图和模块结构图,将情报视觉化,使在短时间内对代码做出明确的评估成为可能。[C]开发实现后的开发内容记录,制作标准化程序说明书书面化的开发内容将成为今后的重要资源。通过CasePlayer2可能主动制作各种书面文件。与手编写相比,能够戏剧性的削减说明书制作工作。同时,不同于手编写容易造成各自格局的不同,可能制作对立格局对立编写办法的说明书,为开发project的文件格式通用化标准化提供无力的声援。次要性能●反对C/C++言語(V5.0之后)●说明书的综合化制作[说明书浏览器]・各种说明书之间任意挪动(从各种参照表挪动到绝对照的源代码的中央等)●从程序主动生成各种说明书・流程图・模块说明书・模块结构图・模块表 ・structure表・内部变量表・typedef表・#define表・成员函数说明书・内部变量参照表・函数参照表・structure参照表・class表 ・class说明书・class参照表・成员函数参照表 (←V5.0之后)●ANSI C言語、嵌入式C语言(非ANSI)、以及汇编●「MISRA-C」的标准查看性能合乎MISRA-1998、MISRA-2004规范●说明书的MS-Word格局转换性能●任意设定放大率,防止不必要的用纸,最佳布局的打印性能●HTML格局变换性能●印刷时格局布局的客户化性能●目录主动追加性能●流程图,模块结构图的图像文件(BMP,PNG)的输入性能动作环境●操作PC/OS ・IBM PC/AT 兼容机 ・Windows XP,Windows Vista, Windows 7(32bit)(※Windows 95/98/Me/NT/2000 未反对) ●License Key・USB Board Hardware Key (Dongle) ●装置须要的HDD容量・起码30MB以上的容量●须要的其余利用性能・HTML格式文件浏览:Microsoft Internet Explorer 5.5以上・MS-Word格式文件生成:Microsoft Word 2000以上

January 17, 2022 · 1 min · jiezi

关于测试自动化:从功能测试进阶自动化测试熬夜7天整理出这一份3000字超全学习指南

因为我最近在分享自动化测试技术,常常被问到: 功能测试想转自动化,请问应该怎么动手?有没有好的资源举荐? 那么,接下来我就联合本人的经验聊一聊我是如何在工作中做自动化测试的。(学习路线和网盘资源放在文末了) 测试新人我的职业生涯开始和大多数测试人一样,刚开始接触都是纯性能界面测试。那时候在一家电商公司做测试,在这个吃技术的IT行业来说,一直学习是至关重要的。然而我之前做的是最根底的业务工作,随着工夫的消磨,让我产生了对自我价值和岗位意义的困惑。 一是感觉本人在浪费时间,另一个就是做了快2年的功能测试,感觉每天过得糊里糊涂,薪资也从不见涨,岗位也始终得不到晋升,身边的许多共事要么升职加薪,要么跳槽去了更好的公司工作,特地感觉本人碌碌无为。 抉择Python不得已开始思考怎么去改变现状。过后最简略的想法是挤出工夫去学习各种测试技术和工具,进步本人的价值,也就是外围竞争力。起初被主管偶尔发现,给了我一些资源和文档,倡议我去钻研下自动化测试。 过后来说,我还没有接触过自动化测试,然而通过主管给我的资源,让我意识到开发常识对于测试工作的帮忙,编程语言的能力会决定你测试技术的深度。当然也能带来支出的高度。 那时候正是脚本语言开始流行起来,因为过后我的项目的起因跟Python结缘,开始用Python和Selenium来尝试做自动化测试。那时,对于Python版的Selenium并不多,在学习的同时我开始发表相干博客。 分享是学习新技术的驱动力,大多数时候咱们很难保持学一个新技术的起因就在于短少反馈,不论是做外部分享或者是博客都是很好的反馈机制。当然,也很有成就感。 2015年的时候,因为我的项目的起因,开始应用Robot Framework测试框架,正因为有Python的根底,所以很快就了解了Robot Framework框架的工作原理,并能够依据我的项目的须要开发零碎关键字。 把握自动化工具的原理应用起来才会更加熟能生巧,而这也须要你有肯定的编程根底的起因。 2016年随着挪动App越来越风行,趁着换工作的间隙,我开始学习了一个月的appium自动化工具,但工作中用不到起初就没在持续了。 起初,我开始针对另一个社区我的项目编写Web UI自动化测试,前后做了好几个月,积攒了一些教训,开始尝试设计Web自动化框架,过后次要还是针对Selenium API的封装。 自动化测试过后因为公司的规模和产品的局限性,导致自动化测试始终未能利用到公司实战我的项目中。我感觉里面的世界有更多机会,自动化曾经风行而且越来越遍及,我想要冲破本人的测试技术瓶颈,我毅然决然的跳槽一家公司专职做自动化测试的工作。 起初的机缘巧合,敌人举荐我去一家金融公司做测试开发,负责开发公司定制化的测试品质平台。 这对于我来说是一个挑战,新的畛域,测试开发在一线城市十分吃香。过后的待遇比初、中级开发工程师要高。 到岗后就是顶住压力,一直的学习测试开发技能,而且学以致用。技术架构采纳的是前后端分享,包含Python的后端开发框架Flask,前端框架vue,elementUI组件等 保持做了几年的测试开发,实在的领会到测试开发等于测试全周期的工作,包含产品性能业务相熟,测试平台的需要设计,平台前后端研发,平台的自测,给到测试部门几十号人的推广、培训产品应用、经营。 所以测试开发的大前提是功能测试经验丰富,接口自动化,UI自动化十分纯熟,不然很难以发展自动化测试开发工作。 行业内卷最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业。想要取得更好的待遇和机会,一直晋升本人的技能栈成了测试老人火烧眉毛的问题。 不论是面试哪个级别的测试工程师,面试官都会问一句“会编程吗?有没有自动化测试的相干教训?” 所以还停留在手工功能测试层面,如果不去晋升技术,不仅要面临长江后浪推前浪的压力,还要顶住当下行业的内卷之势。不然就只能承受困境,最初甚至是面临淘汰。更别说升职涨薪了 如何从高级功能测试到高级自动化测试开发,达到技术晋升和待遇进步的目标,是很多高级测试人必经的一个阶段。作为一个过来人,对学习过程中的艰难深有体会。 所以我热衷于收集整理资源,记录踩坑到爬坑的过程。心愿能把本人所学,理论工作中应用的技术、学习办法、心得及踩过的一些坑,记录下来。也心愿想做自动化的你一样,通过我的分享能够少走一些弯路,能够造成一套本人的办法,并利用到理论中。 学习指南如果你也在往自动化测试开发方向倒退 在适当的年龄,抉择适当的岗位,尽量去施展好本人的劣势。 我的自动化测试之路,一路走来都离不每个阶段的打算,因为本人喜爱布局和总结,所以,我和敌人特意花了一段时间整顿编写了上面的《自动化测试工程师学习路线》,也整顿了不少【网盘资源】,须要的敌人能够关注公众号:程序员二黑,获取网盘链接。心愿会给你带来帮忙和方向。 自动化测试学习路线1. 自动化测试必备Python编程内容 2. Web UI 自动化测试根底内容3. Web UI 自动化测试实战内容4. APP UI 自动化测试根底内容 5. APP UI 自动化测试实战内容 6. API 接口自动化测试根底内容7. API 接口自动化测试实战内容 8. CI/CD继续集成专项技术 9. 自动化测试框架实战技术 网盘资源关注公众号:程序员二黑,获取上方网盘链接!最初也祝大家早日拿到称心的offer ~ 如果你不想再体验一次自学找不到材料,问题得不到帮忙,保持几天便放弃的感触的话,能够退出咱们的QQ群:642830685,大家能够一起探讨交换,外面会有各种软件测试材料和技术交换。 明天次要是和大家分享我的学习路线和网盘资源,后续我会分享一些面试攻略,有被帮忙到的敌人,大家能够点赞反对一下~

January 13, 2022 · 1 min · jiezi

关于测试自动化:HTMLTestRunner生成测试报告时报错write-argument-must-be-str-not-bytes

应用python3时,以file = open(os.getcwd() + "/report.html","w")的形式生成报告会报write() argument must be str, not bytes错,如图。解决办法时把"w"改为"wb"。 生成的html报告

August 24, 2021 · 1 min · jiezi

关于测试自动化:单元测试工具集成测试工具

CoverageMaster winAMS : 实用于嵌入式指标机代码的单元测试/集成测试工具全面反对嵌入式微机!验证嵌入式C/C++软件 施行以模块为单位的自动化单元测试工具不须要HookCode 间接应用指标机代码进行单元测试联结动态解析工具[CasePlayer2],提供C0(语句),C1(断定),MC/DC覆盖率报告,优化测试用例制作已获得第三方认证机构TUVSUD对实用于汽车机能平安ISO26262软件工具的认证产品概要[Coverage master winAMS]是以嵌入式软件的函数为单位,施行模块单元测试以及C0/C1/MCDC覆盖率测试(coverage test)的嵌入式软件自动化单元测试工具。指标机源代码通过穿插编译器生成指标机执行代码,通过跟理论处理器同样的模仿处理器环境进行单元测试,不须要对执行代码做任何变动,使高信赖性的模块测试成为可能。在汽车控制软件这样的对安全性要求极高的畛域,单元测试曾经成为不可短少的一部分。应用指标机代码进行单元测试也是为了合乎汽车行业中ISO26262性能平安认证规范。产品专长全面反对嵌入式微机!验证嵌入式C/C++软件 施行以模块为单位的自动化单元测试工具作为可能测验出仅凭零碎测试以及整体测试无奈发现的[潜在谬误]的检测办法,[单元测试]在嵌入式开发畛域受到宽泛器重。同时,单元测试也是汽车用软件性能平安(ISO26262)畛域中要求施行的认证我的项目之一。 [Coverage master winAMS]间接应用通过穿插编译生成的指标机代码,在模仿处理器环境下进行单元测试。既能实现C语言程序的逻辑上的单元验证,又可能对嵌入式微机组装为产品后可能产生的问题等进行具备高信赖度的白盒(white box)测试。不须要HookCode 使间接应用指标机代码进行单元测试成为可能的业界惟一的工具有些公司的单元测试工具往往采纳在被测试对象的源代码中追加测试用代码或者测试用驱动器的办法,导致测试时所用的代码与组装为产品后的指标机用代码不同。尽管[实践上运行性能应该是雷同的],然而从嵌入式开发的角度思考,这样就如同对穿插编译所生成的通过优化解决的代码进行了加工,无奈确保最终产品的品质。Coverage master winAMS是业界惟一的,具备[不须要对被测试对象做任何加工]施行单元测试性能的工具,特地是在安全性要求高的畛域中失去很高的评估。不需建设单元测试专用的环境,能够在开发用穿插编译环境进行单元测试Coverage master winAMS不须要追加任何测试用驱动器或测试用代码,能够间接应用将组装成产品的指标代码进行单元测试。单元测试可能与软件开发应用独特的穿插编译环境,不再须要对测试资源进行专门治理,也不再须要建设其余专用环境。因而,既不便程序资源管理,又可能缩短筹备测试环境所需的工夫。合乎汽车性能平安规范(ISO26262)[不做加工间接应用指标机代码施行单元测试]这一要求的最佳工具ISO26262是从IEC61508衍生进去的实用于汽车制作畛域的性能平安规范。其中的Part.6-9[软件程序单元测试]包含了对于软件程序的结构覆盖率测试以及无关的规定我的项目。依据汽车平安规范(ASIL),提出了测试语句覆盖率(statement coverage),分支覆盖率(branch coverage),MC/DC覆盖率的推荐性事项。其中的另一个推荐性事项是[尽可能使单元测试的环境与指标环境雷同]的规定。如果在与指标环境不同的环境下进行单元测试,必须表明源代码与指标代码的差异,以及指标环境和测试环境的差异。因而,对于那些应用与指标微机不同的电脑进行编译和单元测试的其余公司的工具而言,这个要求很难满足。 还有些公司的单元测试工具尽管包含穿插编译环境及编译性能,而且也可能在与指标环境雷同的环境下进行测试,然而所有的测试都须要插入测试用代码,进行再次编译,因而测试也只能在与指标环境不同的环境下施行。GAIO提供的单元测试工具Coverage master winAMS具备●采纳全面反对嵌入式微机的微机化功能测试平台环境●不须要插入测试用代码间接应用指标机代码进行测试的特色,提供合乎ISO26262规范要求的必须性能。GAIO提供的Coverage master winAMS是合乎ISO26262规范[间接应用整装用代码施行单元测试]这一要求的业界惟一的工具。对于汽车机能平安ISO26262的对应以及认证的取得已获得第三方认证机构TUVSUD对实用于汽车机能平安ISO26262软件工具的认证2012年6月28日,「Coverage master winAMS / General」测试工具取得由德国TUVSUD第三方认证机构,在汽车机能平安规格的ISO26262软件工具方面的认证,包含日本在内亚洲地区首次取得该项认证。通过此项认证,阐明本公司的单元测试工具「Coverage master winAMS / General」,以及程序剖析工具「CasePlayer2」,在动态剖析和单元测试畛域,是合乎所有平安度水准的工具,并由TUVSUD认证机构失去了保障。ISO 26262对于不同的开发用软件工具在工具置信水平(TCL),都须要开发者提供开发软件工具的认证书。此项认证实用于在工具认证当中,最为简单的TCL3工具认证规范。因而,导入本公司的单元测试工具之后,不须要对TCL的局部进行认证,进而能够缩减手续跟工夫。次要的单元测试性能采纳SSTManager治理单元测试projectSSTManager是Coverage master winAMS的利用性能,用于治理单元测试project,制作测试数据(test data)。从设定测试环境开始,到报告测试后果为止,均由微机化功能测试平台(ISS)施行综合治理。采纳通用便当的CSV文件治理测试数据的输入输出Coverage master winAMS不须要插入测试用代码,间接应用指标机代码进行单元测试。采纳通用便当的CSV文件治理函数测试时应用的输入输出数据。测试完结后,输入的测试后果和输入的期待值也将以雷同的格局显示在CSV文件之中。C0/C1覆盖率报告的自动化制作性能(规范性能)依据测试的输入输出数据主动报告相应源代码的C0/C1测试覆盖率后果。包含通过图形(viewer)显示测试数据,以及与其相应的被测试的源代码门路的性能,用于分析测试后果。作为选项性能也包含MC/DC覆盖率测试性能。MC/DC覆盖率的自动化测试性能(选项性能)作为选项性能提供MC/DC覆盖率测试性能。C0/C1覆盖率测试不须要加工即可间接应用指标机代码。然而,MC/DC覆盖率测试对于复合式的条件式,须要主动插入HookCode将复合式的条件式合成,能力对各条件式进行测试。这样就有可能导致测试用代码与指标机用代码的不同。为了验证HookCode的得当性,在MC/DC覆盖率测试的同时,运行指标机代码,确认运行后果与期待值的一致性。注:右图举例显示,第2个if句的复合条件式中,[gbc>30]为false时的分支没有被测试到。以C1覆盖率测试来说,它的测试后果是OK;而对于MC/DC覆盖率测试来说,它的后果是NG。注: MC/DC覆盖率测试性能不反对C++程序。单元测试的效率化性能联结程序解析工具CasePlayer2,实现代码参照解析作业的效率化利用CasePlayer2生成的流程图表以及模块结构图(调用函数的结构图)与源代码的连贯(link)性能,使单元测试用源代码的解析工作效率化。可能自动检索被测试函数的内部变量,使测试条件设定效率化联结程序解析工具CasePlayer2,自动检索被测试函数所应用的内部变量。缩短了以往必须对源代码进行搜寻找出输出条件的变量所需的工作。而且,可能避免人工操作导致的相似变量指定脱漏的的谬误。依据代码解析自动化制作C0,C1,MC/DC 覆盖率测试计划联结程序解析工具CasePlayer2,自动化制作合乎覆盖率测试要求的条件分支if,switch,for,while等的测试数据。能够将被测试函数中含有的条件式(if以及switch等)在数据制成图形(Viewer)上列表显示。点击其中的条件,工具将主动开始检索与之相干的变量,进而从所设置的条件的境界值中主动生成覆盖率测试所须要的数据。为了达到C1/MCDC覆盖率,测试时须要对各函数的数据进行组合。利用CasePlayer2提供的解析后果,剖析条件式的net结构,在重复性限度在最小限度下生成C1/MCDC覆盖率测试用数据。反对MPU CoverageMaster winAMS Supported Processor List(English)动作环境・操作PC/OS・IBM PC/AT 兼容机・Pentium(相当) 2GHz 以上的CPU・存储器 512MB 以上(推荐值)・显示器分辨率 XGA(1024*768)以上(推荐值)・Windows XP, Windows Vista, Windows 7(32bit/64bit)(※Windows 95/98/Me/NT/2000 未反对)

August 20, 2021 · 1 min · jiezi

关于测试自动化:unittest系统七产生漂亮的测试报告

之前分享了一系列的文章,别离从原理,运行,断言,执行,测试套件,如何跳过用例来解说unittest,如何初始化一次,那么咱们持续分享丑陋的html测试报告。   在之前咱们的测试报告中,咱们有测试报告,然而原生的给咱们带的比较简单,咱们要想进去丑陋的html测试报告,是否能够呢,答案是能够的,这里我展现两个丑陋的unittest的测试报告,简洁慷慨。         github地址:https://github.com/easonhan00...         下载后,咱们间接复制BSTestRunner.py到我的项目目录下,咱们在代码中演示下 import unittestfrom BSTestRunner import BSTestRunnerclass TestDemo(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testEqual(self): self.assertEqual("12","122")def suite(): suite = unittest.TestSuite() suite.addTests(unittest.TestLoader().loadTestsFromName("testdemoone.TestDemo")) return suiteif __name__ == "__main__": report="test.html" suitone=suite() openone= open(report,'w+') bstest=BSTestRunner(title="演示",description="演示测试报告",stream=openone) bstest.run(suitone)咱们展现下 运行的后果。 上面在举荐一个产生测试报告的框架,个人感觉也很棒开源地址:https://github.com/Testerlife...,这是有mock大佬开源。咱们下载后间接复制BeautifulReport.py,template到我的项目门路下。创立一个门路report。咱们复制到本地所以,我略微改变了 PATH。 class PATH: """ all file PATH meta """ config_tmp_path = os.getcwd() +'/template/template'咱们如何组织用例呢。 import unittestfrom BeautifulReport import BeautifulReportclass TestDemo(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def testEqual(self): self.assertEqual("12","122")def suite(): suite = unittest.TestSuite() suite.addTests(unittest.TestLoader().loadTestsFromName("testdemoone.TestDemo")) return suiteif __name__ == "__main__": report = "test.html" suitone = suite() result = BeautifulReport(suitone) result.report(filename='test.html', description='测试deafult报告', log_path='report')咱们看下最初的执行的后果 ...

August 1, 2021 · 1 min · jiezi

关于测试自动化:灰度黑洞零风险的混沌工程实验-IDCF

Netflix应用了灰度部署进行混沌试验,但仍会有小局部用户可能会受到影响。灰度黑洞,为混沌工程测试的安全性提供了现实的环境,对用户的影响则齐全为零。 一、又快又稳的新挑战人总有完美主义偏向,而事实是:写的代码不会没有Bug,所有的测试不可能齐备,生产的构建部署不会没有缺点,用户永远都会遇到问题。不过,咱们变革和扭转的能源,往往来自惨痛的生产事件: 2019年7月CloudFlare的大宕机,是由谬误配置的Web利用防火墙造成的。Facebook的反垃圾邮件零碎,意外地折叠了指向非法起源的链接。因为临床记录管理系统的软件更新,谬误地为超过10,000名的患者开了药。 采纳DevOps实际曾经成为共识,公布周期的缩短,新性能推向生产的速度比以往更快。同时,微服务和云原生架构正在减少利用的复杂性。当速度和复杂性减少时,软件缺陷进入生产的机会也在减少。 为了解决这一危险,咱们须要增强在生产中的测试实际,这一过程经常称为“测试右移”。 测试右移,从前期生产阶段开始测试工作。这些测试是为了确保稳定性、性能和可用性规范。这样,就能够从指标用户那里收集反馈和评论,以理解在事实世界中的利用行为。这有助于进一步提高品质。 二、生产中测试的迫切性在新产品投产之前,单元测试、功能测试、集成测试和非功能性测试等多种测试类型,对品质保障至关重要。上面这个图十分有意思,从测试对象的范畴(从单个组件到零碎层面)以及是否取得新常识这两个维度,对上述测试类型进行分类。 ( “混沌工程”在图的右上角) 一般而言,测试都在隔离的环境中进行。这些环境尽可能复制生产,以便为测试人员提供相当的测试环境,而不在生产环境间接测试,防止用户因为测试面临危险。 然而,仅进入生产之前的测试不足以解决所有问题,起因有以下几种: 2.1 生产是一个独特环境生产不可代替。咱们能够构建测试环境,应用与生产雷同的基础设施和数据(基础设施即代码的办法等等),然而永远无奈齐全复制生产。环境具备其独特的配置,这会影响利用的行为形式,而且难以重现。当咱们须要投入大量的工夫和金钱,来达到环境之间的均等性。随着生产的一直变动,这种希图简直是痴心妄想。 2.2 生产是用户在的中央生产之前的测试受到工夫、资金和人员技能的影响,无奈做到齐备测试。生产中的测试为测试人员提供了额定的机会来发现缺点,免得对用户体验产生负面影响。 三、生产中测试的危险在测试环境中进行测试的一个益处是,测试人员能够平安地运行侵入性测试,例如压力测试、压力测试和劫难复原测试。 在生产中运行这些测试存在以下危险: 影响性能或稳定性,侵害用户体验;产生用户数据透露、批改或失落;影响营销剖析和经营指标,例如用户流量或错误率;引起违反法规或规范的事件(遵循GDPR、PCI、HIPAA等规范的个人身份信息 PII的应用)。因而,与在测试环境中进行测试相比,在生产中进行测试须要一种更加受控的办法。 四、生产中平安的部署策略许多利用部署策略非常适合生产测试: 测试在生产的基础设施上上运行;将危险管制在绝对较少的用户中;在重大缺点或故障的状况下回滚。4.1 蓝绿部署蓝绿部署(Blue/Green Deployment)是一种公布策略,实质上就是并排运行两个雷同的生产环境。一个环境(蓝色)托管利用的以后版本,而另一个环境(绿色)托管新版本。绿色环境开始放弃闲置状态,不提供任何用户访问量,逐渐将用户流量从蓝色环境切换到绿色环境中,不会产生停机工夫。 蓝绿部署的次要益处是,可助力DevOps团队验证生产中的更改,不会给用户带来危险。通过将用户路由到以前的版本来回滚任何有问题的变更,DevOps团队始终领有牢靠平安的生产环境。最大的问题是,在切换流量之前,绿色环境没有用户流量,很难测试利用刚上线时的行为。此外,保护两个独立的生产环境会减少老本和经营开销。 4.2 灰度部署在灰度部署(Canary Deployment)中,新的更改最后会部署到一小部分用户,而后逐步推广到所有用户。蓝绿部署由两个独自的生产环境组成,灰度部署则是一个生产环境,托管着利用的两个不同版本。稳定版会持续解决大部分用户流量,而灰度所占的用户流量比例要小得多。灰度部署的次要益处是: 在理论的生产零碎上运行;面向大量用户,缩小缺点带来的潜在影响;便捷地向所有用户推出经灰度验证的新版本。例如,Netflix应用灰度部署来进行混沌试验、负载测试和回归测试。其中一个试验可能波及部署一个API生效的服务版本,将一小部分用户路由到该服务,随着失败申请的减少,察看零碎行为。测试实现后,能够删除灰度部署,并将这小局部用户从新路由到该服务的稳固版本。 不过,灰度部署仍可能存在有问题的服务,有影响小局部用户的危险,然而这种危险绝对较小。 4.3 黑洞启用在黑洞启用(Dark Launch)中,实时用户流量将被复制并发送到利用的稳固版本和新版本中。稳固版本将持续响应用户申请,而新版本将没收其所有响应,不让用户可见,相似只进不出,俗称“黑洞启用”。 黑洞启用,可全面测试新版本的端到端性能,以及在理论负载下的性能。和灰度部署相似,黑洞部署能够逐步扩充规模,以解决随着时间推移一直增长的流量,所以有时候也称之为“灰度黑洞(Dark Canary)”。 上图中,服务A领有多个实例来接管用户申请,并调用服务B检索必要的信息。这是一个典型的分层零碎,其中服务A是中间层服务,服务B是后端服务。而服务A是咱们要验证的服务,则须要启用服务A的灰度黑洞群集。 LinkedIn应用Rest.li中的动静发现(D2)服务发现机制,D2库装置在每个服务实例中,向Zookeeper查问领有该服务的集群,负责将服务A中的申请转发。灰度黑洞群集的流量就是这么来的。(https://linkedin.github.io/re... ) 灰度黑洞集群的响应会疏忽,不会返回给用户。 一旦对新版本进行了残缺的测试并进行了审核,如果要公布该新版本,只需启用新版本的返回响应,并禁用原始版本的响应即可。 当然,这须要一次运行两个版本的利用,会有老本的开销,但这比蓝绿部署要低得多。 灰度黑洞,为混沌工程测试的可靠性提供了现实的环境。Netflix应用了灰度部署进行混沌试验,但依然会有小局部用户可能会受到影响。如果是灰度黑洞的办法,咱们能够在与生产雷同规模上运行这些试验,而对用户的影响则齐全为零。 咱们能够在基础架构的不同点引入故障,掂量对理论用户申请的影响,并解决间接影响用户的危险点。同时还能够发现,测试环境中的功能测试或端到端测试无奈发现的问题。灰度黑洞,能够做到这一点而不会影响任何用户。 五、论断白璧无瑕的利用是一种奢望,咱们不得不面对现实,在任何可能呈现问题的中央查看利用行为。在生产中测试,助力DevOps团队更好地理解利用行为及其基础设施,升高故障危险,改善用户体验,这是有微小价值的。 蓝绿部署、灰度部署和黑洞启用,能够从只在测试环境中的查看,扩大到生产中的测试,应用受控的办法,管制用户危险。我置信,它们会使你的零碎变得更加牢靠,生产缺陷率将继续降落,用户体验将变得更好。 起源:混沌工程实际作者:码六贾申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 6月每周四晚8点,【冬哥有话说】开心一“夏”。公众号留言“开心”可获取地址 0603 无敌哥 《IDCF人才成长地图与5P》(《端到端DevOps继续交付(5P)精品课》第1课)0610 冬哥 《带你玩转翻新设计思维》0617 无敌哥 《麻利项目管理到底是个啥》0624 冬哥 《VUCA时代的麻利领导力》

June 23, 2021 · 1 min · jiezi