关于自动化测试:以创新抵御经济环境压力自动化测试ReadyAPI帮助企业平衡软件质量与成本控制

任何行业的公司都可能会经验重大的财务窘境,这种窘境往往导致供应链中断、劳动力短缺和经营成本增加。 通货膨胀压力、利率回升和地缘政治不确定性的压力减轻了企业的资产负债。企业须要适应一直演变的消费者需要和数字化转型,加上面临着强烈的竞争,利润空间收到压缩。 这些财务窘境迫使企业摸索翻新的办法,在高度不稳固的经济环境中放弃弹性并降低成本。 应用ReadyAPI就是其中一种办法。借助ReadyAPI,企业能够在放弃软件公布品质的同时节省开支。您的组织能够简化测试流程,发现能节约老本的潜在机会,并确保您的软件放弃一流水准。 为您提供实质性帮忙的几种办法自动化测试手动测试既耗时又低廉,还可能产生人为谬误,缩短公布周期。ReadyAPI提供了弱小的自动化性能,您能够编写脚本测试用例并主动执行它们。通过主动执行反复的测试,能够 开释贵重的资源、缩小人为干涉并减速测试。晚期发现并解决缺点在开发周期的晚期进行彻底的API测试。如果您能在初期阶段发现潜在问题,就能大大降低开发前期修复bug的老本。缩小了应急解决问题的工夫,您就有更多的工夫专一在构建新性能上。虚拟化API,实现具备老本效益的测试在理论我的项目中,API通常依赖于内部服务,这在开发和测试阶段可能难以获得。这有几率导致延误,减少额定的费用。ReadyAPI的虚拟化性能让您能够模仿一个API,因而不须要内部的依赖项。通过虚拟化 API,即便内部服务不可用,您的团队也能够持续测试,从而缩小停机工夫,升高内部服务应用的老本。负载测试对于任何一个胜利的软件应用来说,可扩展性都是要害的因素。从久远来看,在正式公布之前发现问题能够节俭大量老本。ReadyAPI 提供负载测试性能,因而您能够模仿一个重负载环境,并在其中对API和应用程序进行压力测试。通过分析测试后果,您能够优化零碎的性能和基础架构,防止在最蹩脚的状况下呈现问题。促成合作,放慢上市ReadyAPI促成了开发、测试和经营团队之间的合作。借助其用户敌对的界面,所有相干人员都能够轻松地参加测试。这种合作不仅确保大家领有统一的指标,而且减速了开发和测试周期,从而实现更快上市,升高总体开发老本。测试数据治理生成测试数据既繁琐又低廉。ReadyAPI通过各种性能简化了测试数据治理,例如数据驱动的测试和数据源集成。通过无效地复用测试数据,您能够节俭贵重的资源,并在测试场景中放弃较高的准确性。继续集成和继续交付(CI/CD)工具集成ReadyAPI与风行的CI/CD工具无缝集成,如Jenkins、TeamCity和Bamboo。这意味着您能够将自动化的API测试纳入CI/CD流水线,确保在投入生产之前,每次代码更改都通过全面的测试。尽早发现潜在问题能够显著为您节省成本。不要让估算限度障碍您交付高质量的软件通过将ReadyAPI纳入软件开发生命周期,您能够在节约老本和交付高质量的软件公布之间获得均衡。 自动化、晚期谬误检测、API虚拟化、负载测试、协同开发、高效的测试数据治理和CI/CD集成只是ReadyAPI提供的局部弱小性能。 有了松软的测试根底,您就能够专一于翻新,创立出超过用户冀望的卓越软件产品,同时将老本管制在预算内。 文章起源:https://smartbear.com/blog/balancing-your-budget-with-excelle...

September 22, 2023 · 1 min · jiezi

关于自动化测试:精简版stf基于adbkit的android设备管理

起因是看到stf(设施治理平台)有开源了adbkit这个精简的adb交互库,又感觉部署stf太麻烦了,就想着用adbkit实现一个精简的设施治理,用于自动化测试先提供一个思路 后期首先这是一个node我的项目,先引入adbkit npm install adbkit --save监听设施把多个android手机插入同一台电脑,如果每次都用adb devices去查问,未免有些太过麻烦,而adbkit提供了监听的办法 const client = AdbInteraction.getInstance().getClient()client.trackDevices().then((tracker) => { tracker.on("add", async (device) => { console.log(device.id) }}其中的device.id就是设施的serial号(即adb devices中的id) 设施治理当设施连贯后,能够在监听事件中对设施调配一个端口,并绑定端口 const client = AdbInteraction.getInstance().getClient()const bridge = {}client.trackDevices().then((tracker) => { tracker.on("add", async (device) => { // 指定一个端口,或者能够写一个办法去调配 const availablePort = 3000 // 创立一个adb usb连贯 bridge[serial] = client.createTcpUsbBridge(serial, { auth: () => Promise.resolve() }) // 绑定端口 bridge[serial].listen(availablePort).on("error", (e) => { console.log("err" + e) }) // 设施信息写入数据库 // 如serial号,port号 }}这里咱们假如调配3001端口给刚刚连贯到的设施,间接执行命令 ...

September 12, 2023 · 1 min · jiezi

关于自动化测试:超好用的回归测试工具我不允许你还不会用

AREX 是一款开源的基于实在申请与数据的自动化回归测试平台(我的项目地址:https://github.com/arextest),利用 Java Agent 技术与比对技术,通过流量录制回放能力实现疾速无效的回归测试。同时提供了接口测试、接口比对测试等丰盛的自动化测试性能,无需编程能力也可疾速上手。 在应用 AREX 流量录制性能时,AREX Java Agent 会记录生产环境中 Java 利用的数据流量和申请信息,并将这些信息发送给 AREX 数据存取服务(Storage Service),由数据存取服务导入 Mongodb 数据库中进行存储。当须要进行回放测试时,AREX 调度服务(Schedule Service)将会依据用户的配置和需要,通过数据存取服务从数据库中提取被测利用的录制数据(申请),而后向指标验证服务发送接口申请。同时,Java Agent 会将录制的内部依赖(内部申请/DB)的响应返回给被测利用,指标服务解决实现申请逻辑后返回响应报文。随后调度服务会将录制的响应报文与回放的响应报文进行比对,验证零碎逻辑正确性,并将比对后果推送给剖析服务(Report Service),由其生成回放报告,供测试人员查看。在整个过程中,AREX 的缓存服务 Redis 负责缓存回放过程中的 Mock 数据和比对后果,以进步比对效率。 本文以 community-test 工具为例,从 AREX Agent 配置到录制回放、问题定位,残缺展现 AREX 接口自动化回归测试的全过程。 community-test(https://github.com/arextest/arex-community-test)是一个由 AREX 提供的用于测试和验证 AREX 零碎性能的工具,它是一个 Java 应用程序,依赖于 MySQL 和 Redis,用于模仿业务服务。 AREX 运行环境笔者在应用环境申请了 Linux 服务器,这是由 OPS 提供的设施。 服务器的 IP 地址是 10.5.153.1,领有 128GB 内存和 32 Core。该服务器能够通过公司办公网进行拜访,但其余外部环境无法访问。次要目标是在该服务器上安装 AREX 服务和部署 community-test 的测试环境。 为了确保服务器可能拜访公网,须要进行一些设置。在装置过程中,须要下载 AREX 的安装包,并获取 community-test 的代码进行编译和公布。如果你的服务器能够间接拜访公网,则能够跳过设置代理的步骤。否则,须要设置代理以确保服务器可能拜访公网。 ...

May 25, 2023 · 2 min · jiezi

关于自动化测试:自动化回归测试平台-AREX-028-版本正式发布

新增性能反对发送、录制 Dubbo 3.x 申请相干 PR:https://github.com/arextest/arex-agent-java/pull/76 Apache Dubbo 是一款高性能的分布式服务框架,在提供高可用性、可伸缩性、服务主动注册和发现、负载平衡、容错、调用链追踪、服务治理等方面提供反对。新版本中 AREX 反对对 Dubbo 3.x 版本的申请进行录制和回放。 发送 Dubbo 申请须要填写 Dubbo 服务的地址。Dubbo 服务的地址通常包含三局部信息:协定、服务地址和服务端口。例如,Dubbo 服务的地址为:dubbo://{{本机ip}}:20880/com.xxx.service.XXXService。 协定:Dubbo 反对多种协定,包含 dubbo、rmi、hessian、http 等等。在填写 Dubbo 服务地址时须要指定应用的协定,例如 dubbo。服务地址:Dubbo 服务提供者的 IP 地址或者主机名称。服务端口:Dubbo 服务提供者的监听端口。新增录制用例详情页面为了不便查看和治理录制到的用例,新版本中在回放报告中的录制用例列表中新增了一个录制详情页面,该页面中展现了申请的详细信息,如申请参数、申请头、响应内容等。 为被测利用新增 Agent 状态显示在利用设置页面新增了显示被测试利用的 AREX Agent 状态的性能,不便测试人员查看以后服务的 Agent 是否失常运行,从而及时发现和解决问题,保障测试过程的可靠性和稳定性。 相干 PR:https://github.com/arextest/arex/pull/119 arex-agent-java 版本升级为 v0.2.01.欠缺动静类性能a. 反对 Spring @Cacheable相干 PR:https://github.com/arextest/arex-agent-java/pull/123 新版本中 AREX 反对 Spring 框架中的 @Cacheable 注解,能够将办法的运行后果缓存到指定的缓存中,下次再调用该办法时,能够间接从缓存中获取后果,防止数据库拜访等操作,更加不便地实现缓存的治理和应用。 b. 反对应用配置形式和代码注解形式配置动静类相干 PR:https://github.com/arextest/arex-agent-java/pull/114,https://github.com/arextest/arex-agent-java/pull/133 配置动静类 Mock,可间接在下图所示的界面进行配置: 以下是 AREX 中反对动静类配置的示例,用于模仿内存中的类数据。 ...

April 27, 2023 · 1 min · jiezi

关于自动化测试:漫谈前端自动化测试演进之路及测试工具分析

作者:京东批发 杜兴文 随着前端技术的一直倒退和应用程序的日益简单,前端自动化测试也在一直演进。 Web 前端 UI 自动化测试发展史能够追溯到 2000 年,过后最早的 Web 应用程序越来越简单,开发人员开始应用自动化测试工具来确保应用程序的正确性和可靠性。 在晚期,自动化测试是通过应用脚本或脚本来模仿用户的操作来实现的。这些测试工具通常基于 JavaScript 编写,并且须要对 Web 应用程序的交互方式进行深刻理解。 随着 Web 应用程序变得越来越简单,自动化测试的需要也越来越高。2005 年,Selenium 开始风行,它是一种基于 Java 的自动化测试框架,能够用于模仿用户操作并进行 Web 应用程序的自动化测试。 Selenium 和其余自动化测试工具的呈现使得 Web 前端 UI 自动化测试变得更加容易和高效。随着 Web 应用程序的一直演变,自动化测试工具也在不断更新和倒退。现在,自动化测试曾经成为 Web 利用程序开发过程中不可或缺的一部分,它们能够帮忙开发人员更快地发现和修复谬误,进步应用程序的性能和可靠性。 上面是前端自动化测试经验的阶段:手动测试:晚期的前端开发过程中,开发人员须要手动测试代码的正确性,这须要大量的工夫和精力。2.单元测试:随着前端技术的一直倒退,单元测试开始呈现。单元测试是一种自动化测试方法,它测试代码中的最小可测试单元,例如函数或模块。单元测试能够帮忙开发人员更快地发现和修复代码中的谬误。 集成测试:集成测试是单元测试的进一步倒退,它将单元测试集成到整个应用程序的测试中。这种办法能够更疾速地发现整个应用程序中的谬误。端到端测试:端到端测试是一种自动化测试方法,它测试从输出到输入整个端到端应用程序的过程。这种办法能够帮忙开发人员更快地发现和修复应用程序中的整个端到端谬误。继续集成和继续交付:继续集成和继续交付是一种自动化测试方法,它将测试集成到整个开发周期中,包含代码提交、构建、测试、部署等环节。这种办法能够帮忙开发人员更快地交付高质量的应用程序。自动化测试框架和库:随着前端自动化测试的一直倒退,呈现了许多自动化测试框架和库。这些框架和库能够帮忙开发人员更疾速地编写和运行测试用例,进步测试效率和品质。人工智能和机器学习:最近这些年来,人工智能技术和机器学习办法逐步利用于前端自动化测试中。这些办法能够帮忙开发人员更疾速地辨认和修复谬误,进步测试效率和品质。总之,前端自动化测试是一个一直倒退的畛域,随着前端技术的一直倒退和应用程序的日益简单,测试人员须要一直地学习新技术和办法来跟上变动。 同时呢,咱们在做前端自动化的时候又会随同着一些挑战编写 UI 测试脚本可能会很耗时,因为这部分工作须要测试循环之前就要做好。但这份辛苦是值得的;只不过,UI 脚本实质上是软弱的。大多数测试是通过 Selenium 测试脚本实现的,这些脚本能够用多种语言编写,例如 Java、Python 和 C++。 上面列举一些挑战事项:重常识。编写脚本的人必须具备该方面的技术常识和教训。耗时。因为流程的起因,一项测试可能须要 5 – 10 多分钟能力运行。加载浏览器 > 执行工作 > 设置和解析测试 > 数据加载等等。保护。古代应用程序具备动静前端 UI。当同一页面从新加载时,其中的元素定位器和链接可能会在后盾更改它们的定义形式。期待条件可能会毁坏测试。如果页面加载工夫更长,则会返回一个损坏的测试。解决多个谬误。简单的场景意味着微小的数据量。筛选这个可能很麻烦。故障排除。依据问题的频率和修复它所破费的工夫,找出是什么毁坏了测试可能很艰难。动静利用。因为麻利开发,Web 应用程序以及应用程序自身始终在发生变化。测试必须从保护角度和后果角度来思考。前端自动化测试最佳实际又是什么呢,上面列举一些: 因为用户界面是用户触摸和看到的,因而实现自动化测试以缩短公布周期至关重要。与开发一样,所有团队都能够遵循一些相似的最佳实际,以确保从他们的自动化投资中取得丰富的投资回报。 1. 遵循统一的命名约定。 2. 查看哪些测试用例应该自动化。 3. 创立品质测试数据。 4. 放弃测试独立。 5. 不要只依赖一种类型的测试。 ...

April 19, 2023 · 2 min · jiezi

关于自动化测试:月光宝盒vivo流量录制回放平台正式对外开源

作者:vivo 互联网服务器团队- Liu Yanjiang月光宝盒是一个基于流量录制回放的自动化测试平台,通过录制回放取代编写脚本进行自动化回归,晋升测试效率和覆盖率。因为其解决方案具备很强的通用性,所以咱们把这它开源进去,心愿能帮忙到有须要的用户。 一、月光宝盒 是什么?Moonbox(月光宝盒)是 JVM-Sandbox 生态下的一款流量录制回放产品。所谓流量录制回放是服务端通过挂载agent探针主动注册到服务端,拦挡服务端调用,将所有内部调用依赖的内容(如数据库、分布式缓存、内部服务响应等)进行残缺记录造成录制流量。其外围价值是通过录制流量数据,将流量数据转化成可复用、可执行的自动化用例,疾速在测试环境中进行回放比对接口返回值和内部调用依参数(见下图)。Moonbox(月光宝盒)提供了大量的罕用插件,可能对常见的两头调用进行录制回放,同时也提供了十分牢靠、高性能的数据存储、计算能力。 二、月光宝盒 有哪些劣势?正如结尾所说月光宝盒是一款面向测试、研发工程师应用的低门槛、高性能、更易于应用的自动化测试工具。这款产品曾经在vivo运行了2年多了,通过咱们继续优化、打磨领有很多实用、易用性能。它的长处次要体现在上面几方面: 2.1 全面可视化视操作(局部性能)(1)基于工作、接口维度的流量治理能力 (2)具体的流量展现细节(申请、响应、子调用) (3)基于工作、接口维度的回放数据管理,叠加各种维度统计、查问能力 (4)易于人工剖析的回放比对后果和差别展现 2.2 丰盛的插件反对月光宝盒反对十分多组件录制和回放能力,基本上能满足绝大多数人诉求。 2.3 多种部署形式Docker:这种形式简略、牢靠,让您能够摒弃简单的环境配置和装置,疾速在本地体验咱们我的项目。惯例形式:这种形式简单、步骤繁琐,须要依照步骤创立ES和MySQL数据库,初始化数据表,更新好利用配置,装置好前端node服务。此外月光宝盒是前后端拆散我的项目,当您应用该我的项目须要别离部署前端、后端,十分有助于您后续将我的项目部署到生产环境。 2.4 性能安全可靠平台对性能进行了长期优化,在vivo外部历经多个高并发系统验证。咱们对agent端录制流量进行了一系列平安防护,例如对雷同接口同时只能有一个进入采样中,限度并行录制接口数量。服务端应用了ES贮存流量,无效晋升了数据贮存规模。 三、月光宝盒 实现原理3.1 整体架构月光宝盒平台分为2个局部,别离为moonbox-agent 和 moonbox-server(整体架构如下图所示) moonbox-agent 应用Java-attach技术(理论的动静字节码加强由JVM-Sandbox实现)动静代理到指标过程上,提供流量录制和回放的加强。moonbox-server Agent端应用接口,提供配置查问、录制流量保留、流量查问、回放后果保留等服务录制工作/回放工作的配置,agent工作远程管理能力和治理后盾操作界面(前后端拆散部署) 3.2 流量录制&回放流量录制 外围逻辑是将agent散发到用户填写的机器上(本地、近程机器),而后将agent attach到用户填写利用所对应的正确过程下来。而后通过JVM-Sandbox的BEFORE、RETRUN、THROW事件机制拦挡要害调用地位获取流量入参、出参。整体流程见下图整体流程见下图: 流量回放 外围逻辑是将agent散发到用户填写的机器上(本地、近程机器),而后将agent attach到用户填写利用所对应的正确过程下来,agent启动后从服务端一直拉取流量去散发到对应接口做回放,整体流程见下图: 心跳治理 Agent启动后会独自开启线程固定间隔时间通过http申请给服务端上报心跳 3.3 Agent启动过程执行脚本将sandbox agent attach到指标java过程上,sandbox 启动jetty服务,加载moonbox module,而后从服务端拉取moonbox配置,加载流量录制和回放插件。 四、 和 jvm-sandbox-repeater 关系?Moonbox是基于jvm-sandbox-repeater从新开发的一款流量回放平台产品。在jvm-sandbox-repeater根底上重写了很多模块,并提供了更加丰盛性能,同时便于线上部署和应用,和jvm-sandbox-repeater差别如下: 五、为什么要开源?流量录制回放技术简单,挑战较高,开源社区尽管有很多相似产品然而在易用性方面都有一些欠缺,咱们心愿通过开源月光宝盒帮忙对该方向有趣味的开发者疾速构建本人的自动化工具,同时能够基于咱们这款产品制订个性化诉求。此外,月光宝盒自身也借鉴了jvm-sandbox-repeater设计和计划,是开源的受害方,当初咱们将本人思考和摸索回馈给开源社区,丰盛流量回放开源技术生态。除此之外通过社区中开发者的应用,也能够帮忙咱们更好的改良咱们的工具,取得更多的需要场景输出,也能让该工具取得更加久远的倒退。 六、Roadmap月光宝盒曾经实现V1.0.0版本开源,初步实现了各项重要性能开源,后续咱们会持续性的实现平台性能、体验优化工作,同时踊跃收集社区应用反馈的性能需要,将一些好的需要纳入咱们版本打算外面。2023年咱们布局了一些迭代版本,如下图所示: 七、写在最初明天月光宝盒的开源只是咱们迈出的一小步,后续咱们会继续依照打算向社区奉献版本和个性。如果您对月光宝盒有趣味,欢送体验咱们开源产品。如果您有问题或者更好的计划,欢送向咱们开源我的项目奉献反馈ISSUE和奉献PR,这将是咱们莫大的荣幸。 GItHub我的项目地址:https://github.com/vivo/MoonBox

April 7, 2023 · 1 min · jiezi

关于自动化测试:自动化回归测试平台-AREX-027-版本正式发布

重构回放测试剖析性能,可视化调用差别之前的版本中回放测试的差别剖析界面如下所示: 在 0.2.7 新版本中,回放测试报告中将录制回放过程中的主体及第三方调用差别进行了可视化展现,帮忙使用者更直观地理解录制回放之间的差别。如下图,表明回放测试中呈现两个差别: 回放时 HttpClient(Http 客户端库)对第三方依赖 /posts/2 呈现调用缺失(call missing),即回放过程中 HttpClient 没有正确地收回针对 /posts/2 的申请调用。回放过程中 HttpClient 对第三方依赖 /posts 的调用后果绝对录制后果呈现差别(value diff)。 表明比对后果无差别,如上图示例中,回放后主接口 /httpClientTest/okHttp 的返回后果与录制无差别。 减少测试用例标签配置和形容配置新版本中,对测试用例增加了更多治理性能。目前能够对测试用例增加标签(Add Tag)进行分类,前期将减少通过标签搜寻用例的性能,方便管理。 另外能够为用例增加形容(description),进步用例可读性,让协作者更容易了解测试用例的目标和预期后果,并且能更好地把握测试内容。 减少比对测试及批量比对性能当咱们须要比对新老零碎两个接口响应报文的差别时,能够应用 AREX 比对测试,将雷同的申请报文发送至不同环境的两个接口地址,比对响应报文的差别。如后端系统重构(或架构降级)时,通过比照新零碎和旧零碎接口返回的数据是否完全一致,来确保零碎重构没有没有带来接口问题。 在日常测试工作中,同样的两个接口之间的比对测试通常须要涵盖多种场景,如果每个场景或用例都须要一个一个手动执行,测试的效率是很低的。新版本中减少了批量执行比对测试的性能,能够自动化测试过程,大大提高测试效率。 如果须要比对两个接口在多种状况下的响应报文差别,只须要将所有的状况保留为比对测试用例,批量运行即可。 抉择测试用例汇合下拉菜单中的 Batch Compare 批量运行比对测试用例。 或将鼠标移至 Collection 右侧的批量运行图标,点击 Batch Compare 批量运行测试用例。 在关上的标签页左侧抉择要执行的测试用例,点击右侧 Run Compare 运行。 运行完可查看所有 Case 比对后果。 将鼠标移至呈现差别点的节点上,显示的是该节点在响应报文中的具体位置: 测试用例默认继承父节点接口申请配置0.2.7 版本中,在接口申请下新建的测试用例将主动继承以后接口申请下的配置,如 URL、申请形式及 Parameters、Header、Body 及前置脚本(Pre-request Script)等。 通过继承父节点的接口申请配置,测试用例不须要一一从新定义接口的申请参数及前置脚本,从而缩小测试用例编写的工作量和工夫。 下载 AREX 0.2.7应用 Docker 装置:git clone https://github.com/arextest/deployments.git cd deploymentsdocker-compose up -d部署 Agent:详见文档。AREX 文档:http://arextest.com/zh-Hans/docs/intro/ ...

April 4, 2023 · 1 min · jiezi

关于自动化测试:自动化回归测试工具-AREX-上手实践

AREX 是一款开源的自动化测试工具平台,基于 Java Agent 技术与比对技术,通过流量录制回放能力实现疾速无效的回归测试。同时提供了接口测试、接口比对测试等丰盛的自动化测试性能,无需编程能力也可疾速上手。 AREX 能够通过 Docker-Compose 一键装置所有的根底服务组件。除此之外,AREX 也同步提供了在线试用平台 AREX Demo,与官网公布的最新版本保持一致,无需部署所有的服务组件即可试用,大大减少了试用费力度。 本文将介绍试用 AREX Demo 平台中接口测试性能及回放测试性能的具体操作步骤。心愿通过本文,为大家提供一种实现高效自动化回归测试的新思路。 拜访 AREX Demo 环境应用 Chrome 浏览器拜访 AREX Demo 环境:http://demo.arextest.com/,首次登录须要进行注册。 输出邮箱后,点击 Send Code 按钮, 稍后邮箱将接管到 AREX 发送的登录验证码,如下图,将验证码填入即可登录。 登录后,进入 AREX Demo 的前端页面,如下图所示: 页面包含 Work Space 治理区域、接口测试(Collection)、回放测试(Replay)、环境配置(Environment)和利用配置(AppSetting)、用户操作配置等局部,详见 AREX 官网文档。 Chrome 插件装置因为浏览器拜访跨域名服务受限,在应用 AREX 接口测试性能前,须要装置 Chrome 插件,通过插件实现对外申请接口。 拜访 Chrome Web Store,在搜寻框中输出 AREX,增加 Arex Chrome Extension。如下图: 如无法访问 Web Store,能够间接下载最新的插件包到本地进行装置,以后最新的插件版本是 v1.0.45。 至此,所有的后期筹备工作实现,接下来将介绍如何应用 AREX 的接口测试及录制回放性能。 应用 AREX 进行接口测试本文中验证性能应用的是由官网提供的模仿服务 AREX-Community-test,Demo 环境中该服务接口裸露地址是 demo.arextest.com:18080。 ...

April 4, 2023 · 2 min · jiezi

关于自动化测试:如何在本地编译安装部署自动化回归测试平台-AREX

AREX 官网 QQ 交换群:656108079本文将具体为大家介绍一下如何在本地进行 AREX 的编译和配置。 背景AREX 是一款由携程开源的自动化测试工具, 基于 Java Agent 技术,录制生产环境实在用户的申请,并在测试环境回放,同时智能比对剖析回放后果,从而实现疾速无效的回归测试。除此以外,也提供了用例治理、接口测试(脚本验证、双环境比对)等丰盛的自动化测试性能,是一个不须要编程技术,也可疾速上手的自动化测试工具平台。 目前你能够通过 Docker-Compose 命令,一键缺省装置 AREX 所有根底服务组件,包含前端 UI,MongoDB 数据库,Redis 缓存,数据存取服务(Storage Service), 调度服务(Schedule Service),剖析服务(Report Service)等(如上图所示)。这种形式不须要手动装置和配置每个服务,大大简化了装置过程,进步部署效率。(详见文档) 当然,你也能够通过在本机上构建 Docker 镜像的形式在本地对各个服务组件进行编译和装置。这种形式实用于须要对单个服务进行开发和测试的场景,能够防止装置不必要的依赖项,同时也实用于须要在离线环境下部署的场景。 本文将具体为大家介绍一下如何在本地进行 AREX 的编译和配置。(如果你有其余非凡的部署需要或倡议,也能够在 GitHub Issue 中提出) 本地构建 Docker 镜像首先,创立 github-arex 目录,用于寄存 AREX 各个服务组件。倡议将 AREX 各个我的项目放在同一个目录下,Deployment 仓库中 Shell 脚本都是以相对路径来进行拜访的,如果目录门路产生变更,也须要同步批改 Shell 脚本中的相干配置。 下载 AREX Deployment 仓库Deployment 仓库中蕴含编译命令、Dockerfile(用于构建镜像,蕴含了构建镜像所需的指令和依赖项) 和 Docker-Compose file(用做容器编排进行环境部署)等文件,编译时须要切换至 dev 分支。 cd github-arexgit clone https://github.com/arextest/deployments.gitcd deploymentsgit checkout dev # 切换到代码仓库的 dev 分支,并将当前工作目录中的代码更新为 dev 分支的最新版本下载编译 AREX 前端 UIAREX 前端 UI,是交互组件,次要负责用户配置执行的交互界面。 ...

April 4, 2023 · 3 min · jiezi

关于自动化测试:龙智被SmartBear评为2022年最具动力营销团队

近日,寰球当先的软件开发和可视化工具提供商SmartBear进行了首届合作伙伴评比,并向寰球不同地区的9个合作伙伴颁发了首个年度合作伙伴奖。DevSecOps解决方案提供商龙智是惟一一家来自中国的获奖合作伙伴,取得 “最具能源营销团队”名称。 SmartBear国内销售和渠道高级副总裁Darin Welfare示意:“祝贺咱们优良的合作伙伴,他们凭借各自杰出的成就而取得了奖项,这在咱们宏大且一直增长的合作伙伴生态系统中是一项微小的成就。SmartBear合作伙伴在帮忙软件开发团队提前发现问题、缩短交付杰出软件的过程中施展着关键作用。” 龙智自与SmartBear建设合作伙伴关系以来,就致力于为中国企业用户引入其主动UI测试工具TestComplete和主动API测试平台ReadyAPI,并围绕着这些工具提供征询、销售、施行、培训、技术支持等一站式服务,助力企业进步软件开发的测试效率与品质,帮忙中国企业落地更平安、更自动化的DevSecOps实际办法。 在2022年12月6日,龙智与SmartBear联结举办了“如何通过自动化测试实现降本增效与提质”网络研讨会,分享如何在晋升研发效率、确保公布品质的同时节俭研发老本。 对于龙智 龙智是一家DevSecOps解决方案提供商,专一于软件开发经营一体化畛域十多年,集成DevSecOps、ITSM、Agile治理思路及该畛域的优良工具,提供从产品布局与需要治理、开发,到测试、部署以及运维全生命周期的解决方案,通过业余征询、计划定制、施行部署、专业培训、定制开发等一站式服务,帮忙企业实现软件开发经营一体化,并确保安全防护融入软件研发的整个生命周期中。龙智与寰球DevSecOps畛域的许多出名厂商放弃合作伙伴关系。咱们是SmartBear受权合作伙伴 ,同时也是Atlassian寰球白金合作伙伴、云业余搭档,Perforce, CloudBees, Mend(原WhiteSource)的受权合作伙伴。 除了上海之外,龙智还在中国香港、日本东京、加拿大滑铁卢设有分支机构,服务寰球客户。凭借继续深耕、不断创新的精力,龙智的解决方案先后取得了金融、汽车、通信、游戏、互联网、芯片等行业1000多家企业的认可与信赖,被评为“高新技术企业”、“上海市‘专精特新’中小企业”。 对于SmartBear SmartBear提供了一系列值得信赖的工具,通过测试治理和自动化、API开发生命周期和应用程序稳定性,使世界各地的软件开发团队可能理解端到端品质,确保每个软件版本都比上一个版本更好。旗下屡获殊荣的工具包含SwaggerHub、TestComplete、Bugsnag、ReadyAPI、Zephyr和Pactflow等。SmartBear失去了32,000多个组织的超过1600万开发人员、测试人员和软件工程师的信赖,其中包含像Adobe、JetBlue、FedEx和微软这样的创新者。通过一个沉闷的P2P(端对端)社区,SmartBear满足客户的需要,让技术驱动的世界变得更美妙。SmartBear致力于恪守企业道德实际和社会责任,在服务的所有社区中促成善举。

April 3, 2023 · 1 min · jiezi

关于自动化测试:如何使用RunnerGo做自动化测试

RunnerGo反对自动化测试性能,其工作流程是:接口治理-场景治理-性能测试-自动化测试,所以自动化测试的运行内容为场景下的用例,咱们能够在“场景治理”中事后配置好该场景下的用例,也能够在自动化测试中创立用例。 打算治理在左侧导航栏抉择:自动化测试-打算治理-新建打算,创立自动化测试计划。 新建场景或导入场景自动化测试计划创立好之后能够间接导入场景或者新建场景 测试用例设计场景导入后能够在场景下创立测试用例,能够依据需要创立不同的用例,执行测试计划时会按程序执行每个场景下的测试用例。 工作配置RunnerGo自带定时工作配置,配置好测试用例后能够抉择定时工作配置,反对抉择每周、每天、每月执行,能够抉择程序执行或者同时执行每个场景。 增加收件人能够在右上角增加收件人,自动化测试完结时会发送邮件到指定收件人。 测试报告在报告治理页面点击查看按钮即可查看测试报告详情。能够点击某个场景查看这个场景下的用例执行状况。

March 30, 2023 · 1 min · jiezi

关于自动化测试:高效易用的自动化测试框架设计

在自动化测试工作中,有两个痛点始终困扰着很多团队: 每次测试都要专人从新编辑脚本,内容反复造轮子,费时费力,甚至不如人工测试不便;提前写好多个不同性能的脚本,编辑格调导致脚本间差别微小;大量调试批改升高了脚本复用性,脚本保护困难重重。如果将各类脚本中大量重复性内容固定下来,用对立的规范来标准脚本的编辑,那么团队只须要破费大量工夫精力,根据工作需要批改大量的内容,就能够疾速复用脚本,迅速开展自动化测试。这就是自动化测试框架能实现的事件: 代码复用率高标准规范,保护不便用例全面,应用灵便、便捷广州天纵的测开团队很早就留神到了这点,他们在自动化测试框架的设计和应用上积攒了丰盛教训。接下来咱们就一起和大家分享下天纵团队应用UWA Pipeline实现自动化测试框架的设计教训。 一、自动化测试框架天纵团队通过设计这套自动化测试框架,在每次发展测试工作时,都能依据需要,灵便配置对应的测试用例,将游戏内简单的GM操作简单化,实现了UI按钮的截图生成与配置。这些都极大中央便了自动化测试工作的发展。 1. 执行步骤的切分与组合 1.1 拆到不同的脚本中在框架中,应用动静导入所有的用例文件,通过动静model对象去调用用例中的指定函数来执行对利用例,例如model.Run(),代码逻辑写在run()外面。 #用os库,获取用例文件下所有用例返回列表list#遍历列表,应用importlib库,动静导入所有模块import os, importliblist = os.listdir('./示例/用例')for case in list: mod = importlib.import_module(f'示例.用例.{case}') mod.run()由此就将我的项目的测试内容拆分为一个个小的模块,在抉择执行用例时,就能够进行灵便的拼接组合。 1.2 依照ID与分类进行划分个别我的项目的老手流程中工作会很多,而且更改也很频繁,如果不对工作做一个分类,间接上代码,那么当有某个工作流程有调整时,前面可能全副都要跟着调整,导致耗费大量的人力和工夫。 因而,天纵团队对工作做了分类,每类工作对应1个工作ID。例如对话工作的工作ID为1,那就写一个办法task1(),对话工作的流程就写在task1()外面。多个对话工作,都是调用task1()办法,当前,不论对话工作有新增或缩小,都不须要改代码,若是流程有扭转,只须要改task1()外面的逻辑。 2. 通过RPC调用客户端接口 在Unity集成的Poco SDK中,客户端程序人员减少了“接管Python通过Poco收回的音讯”的性能,而后能够依据接管到的不同音讯内容去执行对应的性能。 目前已实现的性能有“返回游戏中Lua的配置表数据”、“关上指定界面”,以及上图的“调用GM命令”,本来须要人工关上GM界面手动进行配置的各种GM调试工作,当初在自动化测试过程中间接代码调用就能实现。 在此天纵团队揭示大家:对于用Poco去读取Lua配置取得数据的操作,尽量放在游戏工作流程前,或者说放在开始收集性能数据前。因为Poco读表会带来肯定的性能开销,大家须要防止这个开销对游戏性能剖析的影响。 3. 按钮的配置 自动化测试中,各类按钮的点击,是相当广泛和频繁的。天纵在框架中保护了两套按钮的点击形式,别离是“图片”和“字符串”,前者通过Airtest的图像识别进行按钮定位和点击,后者通过Poco的UI层级信息执行点击。 但随着我的项目迭代,UI的改变会很大,图片资源会被替换,UI元素名字也会更改,导致脚本也要频繁批改。为了解决这个痛点,于是在框架中将数据拆散,把按钮依照名称进行索引,把索引关系保留在配置表外面,在执行用例时,从表格中获取按钮来执行点击。 对于通过Poco的UI层级信息执行点击的计划,揭示大家在游戏开发后期就要同步好构造,把按钮的name写在配置表里,客户端程序人员通过读取按钮的name生成UI树,这样就能通过读取配置表来生成Poco的配置。 而对于通过Airtest的图像识别进行点击的形式,次要是思考到低端机,用图片可进步框架兼容性。 4. 测试异样主动告诉 为了应答大批量设施进行自动化测试且没有人员在现场值守的状况,天纵团队实现了测试状况的主动同步:在脚本报错后捕捉异样,将相干的截图和报错信息等,主动地通过沟通工具实时发送音讯到群里揭示对应成员,不便大家及时同步音讯和进行解决。 这里能够依据大家日常办公的沟通工具进行抉择,比方企业微信、飞书等,简略一点也能够用发邮件的形式。以飞书为例,先建个群,退出飞书机器人,建群实现后,获取webhook地址。 import json, requests# webhook地址url = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx"payload_message = { "msg_type": "text", "content": { "text": "你要发送的音讯" }}headers = { 'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))通过这样的形式,大家对异常情况可能进行及时的记录和干涉,不便后续解决相应的问题。 5. 在UWA Pipeline上运行 天纵团队将自动化测试工程打成zip包后,能够在UWA Pipeline上失常运行。在UWA Pipeline中创立定时工作,联合UWA Pipeline提供的云真机系统,实现日常的自动化测试。 ...

March 13, 2023 · 1 min · jiezi

关于自动化测试:Apipost自动化测试功能概述

自动化测试模块是针对测试人员的简单业务的测试服务。咱们能够在测试用例中建设一个或多个“测试计划”,“测试计划”由接口和控制器组成,创立一个测试用例通常须要如下步骤:1、在API设计或API调试内保留接口。2、关上自动化测试-测试用例,新建一个测试计划。3、在右侧的API增加器内增加接口,从下方的控制器菜单里增加控制器。4、设置好执行条件(测试环境、测试数据、执行次数、间隔时间、遇到谬误是否继续执行、是否开启沙盒模式),点击保留并执行。5、查看返回的测试接口以及断言详情。 执行条件:a.测试环境可在自动化测试中切换我的项目下所有环境,并按该环境进行测试。 b.测试数据作为一名测试人员,最辛苦的阶段大略就是接口测试执行阶段,针对于某一个接口,有大量的测试数据须要批量验证,一个一个的更改申请参数太耗时耗力,应用参数化批量解决数据会比拟高效。 在 Apipost 6.1.3 版本的流程测试中,咱们推出了批量导入测试数据性能,反对内部导入文件实现参数化。目前反对json、txt、csv三种模式导入,能够很不便的导入流程测试的数据进行测试,这对测试人员的工作来说几乎就是锦上添花。 在Apipost7.0.0版本中,反对独自配置每个环境的测试数据,当切换到某环境并关上测试数据时,则应用该环境配置的测试数据。 上面就来给大家具体介绍下如何通过Apipost实现接口数据参数化导入验证。b-1.API调试内设置变量b-2.在想要测试的数据文件里,增加想要测试的变量所对应的值。每个数据文件能够蕴含多个参数,接口运行时,应用接口中援用变量的中央,就会读取文件内对应的值。b-3.关上测试数据,呈现“抉择文件”上传入口。b-4.点击“抉择文件”,抉择想要导入的txt/csv文件。b-5.能够预览所选文件b-6.查看申请中文导入后乱码的问题因为 window 零碎导出的 csv 是 GBK格局,并且旧版本的 Excel 2016 前会不保留 Bom。 Windows 能够应用记事本关上 csv 文件后另存为 utf-8 格局。 Mac 上能够应用 iconv -f GBK -t UTF-8 demo.csv > utf-8.csv。 c.执行次数指该测试流程须要执行的次数,能够自定义次数。如应用测试数据,则执行次数默认展现以后环境中测试数据的执行次数,同时反对自定义批改。 d.流程距离每次流程测试之间的间隔时间。 e.遇到谬误继续执行默认勾选遇到谬误(接口出错)继续执行,如未勾选,当测到出错接口时将会进行测试流程。 f.沙盒模式开启沙盒模式时此流程测试产生的变量和参数不影响全局的参数和变量;敞开沙盒模式则相同。 流程配置:在流程里增加接口、增加条件(条件控制器、循环控制器、期待控制器、事务控制器、全局断言、脚本)以模仿实在的业务场景,点击保留并执行,就会依照流程执行接口。 a.增加接口点击“API增加器”,右侧弹出与APIS模块同步的目录,反对点击抉择接口复制至以后流程配置中。 b.条件控制器作用:判断一个变量是否满足某个条件,由此决定该控制器下接口是否运行。 c.循环控制器作用:按指定循环办法,循环该控制器下的所有接口,可选次数循环、foreach循环、while循环三种循环形式。 d.期待控制器作用:在流程配置间插入一个期待的工夫。 e.事务控制器作用:测试该控制器下所有子步骤所破费的总工夫,即相当于用户进行一系列操作的测试,只有整个事务控制器定义的事务胜利,才算胜利。 f.全局断言作用:对整个测试计划进行断言,校验测试后果是否合乎预期。 g.脚本作用:反对自定义脚本,Apipost提供罕用的脚本。 h.导出jmx作用:反对导出至JMeter。 保留并执行在配置好测试流程后,点击“保留并执行”,则会展现该流程配置中未禁用步骤的运行过程及后果,运行过程中咱们能够看到进度条和曾经测完的接口,也能够手动进行运行。整体的执行后果会在运行完结后展现,咱们能够抉择保留该报告至“测试报告”板块中,也能够不予保留,未保留的测试后果能够在“测试记录”中查找(每个测试计划/组合测试只保留近100条记录)。反对收起后接口持续运行,即运行过程中可切换页面,并反对多个测试计划同时运行。 测试记录测试用例和组合测试都会记录以后测试计划/组合测试的近100条执行记录,咱们能够点击具体测试计划/组合测试的“查看详情”,查看该记录的测试后果。

February 9, 2023 · 1 min · jiezi

关于自动化测试:自动化测试理解

1 定义把以人为驱动的测试行为转化为机器执行的一种过程。 简略讲:比方应用自动化测试框架、脚本、工具等主动关上测试对象(援用),主动去执行测试用例(此过程中蕴含自动化查找元素、控件等),主动输出测试数据、主动生成测试报告等一系列的自动化过程;艰深讲:用机器来模仿用户的理论行为,如键盘、鼠标等操作,来达到预期。2 做自动化的目标是什么?测试工作量比拟大,应用自动化来实现一部分工作;测试过程有大量反复的工作,应用自动化来进行晋升效率;手工测试难以笼罩的场景,须要自动化造数据等来实现;有些测试后果,可能自动化比手工更为准确。3 自动化测试的优缺点长处毛病反复执行、频繁操作不能100%代替人工测试模仿手动测试无奈笼罩的场景不能达到100%覆盖率利用闲暇工夫执行须要工夫去剖析后果开释一部分测试人员精力对软件品质依赖大(前提是软件稳固、改变小等)测试后果主观公正须要业余的工程师投入专门的工夫开发/投入老本可能会大一些4 自动化测试的前提条件(重要)即做自动化前先对软件进行剖析,是否满足或者要不要做自动化,有几个前提条件须要留神。 4.1 需要变动不频繁脚本的稳定性最直观的决定因素是需要的变动,如果需要变动大,隔三差五的进行需要更改,那脚本势必也要进行同步更新,这样投入的保护老本就很大,得失相当,还不如不做。4.2 我的项目周期比拟长自动化测试和一般的测试一样,须要后期的布局、框架设计、脚本开发、人员抉择、脚本执行、前期保护以及后果跟踪剖析等,是一个比拟全的且投入较多的一个过程,如果我的项目周期很短,就不适宜做自动化,其实也没必要;另外我的项目周期短,手动测试都无奈保障的前提下,更不必谈及做自动化了。4.3 脚本的反复使用率高咱们投入了较大的人力、物力、财力等最终实现了一套比拟完满的自动化脚本、框架或者平台,然而复用率很低,只能在单个产品独自应用,那么这样的代价就太大了。此时咱们须要评估是否必须要进行自动化测试,如果非必须,能够不做;相同的,如果自动化的一系列货色都能迁徙到其余的产品测试,那这样的投入是值得的,也是必要的。咱们也应该投入更多的精力进行测试开发。4.4 团队实力做自动化,不是轻易摘抄一些代码拿来用,他是一个专项测试,须要投入专门的人力去钻研及测试,那么咱们要想做好自动化,先要对本人的团队进行评估,团队的人员、技术能力等是否满足要求;另外,自动化须要一直的进行迭代和优化,不能拿着脚本运行看看后果,那其实很多时候,并不能给产品带来主观的价值。咱们须要进行不定期的降级保护,针对我的项目业务要进行优化,依据测试过程和后果的数据反馈要进行稳定性的降级等等。所以这也须要专门投入人力进行钻研。4.5 部门的布局和下级的反对这个是我加的,依据集体的教训的总结; 部门的布局:如果自动化是在部门布局中,以及有考核指标,那必定是要做的。如果不是布局,也没有纳入计划,那就要依据理论状况定,毕竟这不会间接影响你团队的理论考评。你的重点应该是在其余的中央,优先保障工作重点内容的实现;下级的反对:这个很重要,做自动化无非是为了晋升效率和品质,然而如果没有失去应有的成果,领导看不到问题,也无感知,那么做自动化兴许不会短暂。这个得缓缓领会了,哈哈。5 利用场合自动化测试次要利用在以下场合,具体还要依据我的项目以及自动化的理论开发状况开定: 场景阐明测试周期我的项目周期长,轮次较多的软件数据量级须要制作大量的测试数据软件稳定性应用稳固和成熟阶段的产品测试回归测试须要进行简略回归的测试冒烟测试主线性能的冒烟巡检测试线上环境的定期巡检公布验证主线性能的公布验证测试6 自动化意识误区(重点)6.1 自动化可100%笼罩概率不大,要使得自动化的测试覆盖率达到100%,须要投入专门的人力、物力、财力等,老本比拟大;某些业务的特殊性,或者场景的复杂性,用自动化是无奈进行笼罩的;我的项目的周期限度,不容许投入更多的精力去开发;6.2 自动化可代替人力领导的口头禅:你就通知我,自动化能干掉多少人力?!====每次听到这样的话,不晓得你们怎么想的,反正我是很无奈。但从领导的角度来思考,也不为错;这里存在一些误区,自动化测试是辅助功能测试的,或者说是为了解决某些人工不能笼罩的场景;另外,不存在完完全全的自动化,都是须要人工参加的;遇到相似的意识,倡议自动化测试人员须要进行解释,不能任由这个观点滋生,不然===你猜会咋办!!6.3 自动化很牛逼任何的事件,都是看谁先晓得而已,与其说牛逼的技术,不如说牛逼的人。自动化只是一门技术,咱们不能脱离业务搞自动化;很多人认为自动化很厉害,就脱离了工作的重心,天天喊着自动化、自动化,最初到头来啥也不是,啥也没失去。当然如果是业余、专门搞自动化测试开发的那就另说了。因为他们的工作就这,就是转、精。6.4 万物皆可自动化这个其实和前边的提到的统一,搞自动化,先要合乎一些前提条件以及明确他的利用场景,不是所有软件都要搞自动化。自觉的自动化,只会事与愿违。6.4 自动化很简略这是一个很简单的然而又简略的话题,对自动化的方向、工具、技能等钻研的水平不同,对他的意识就不一样;如果只是解决一些简略的问题,你把握他很简略。如果是简单的一些货色,可能须要深入研究;自动化方向也是很多,不论是性能、性能,还是面向接口、UI、GUI、协定,更或是自动化工具开发等,都须要不同的技能和常识,入门或者简略,要做的很专一,还是须要点积攒的。6.5 自动化尽早做不肯定。不同的自动化,染指工夫可能有差别,比方 UI的,倡议软件略微稳固或者需要变更不频繁的时候再去开发;接口的,能够在开发阶段同步进行;7 自动化测试工具太多了,举个例子,不代表所有的。事例而已:

January 18, 2023 · 1 min · jiezi

关于自动化测试:pytest学习和使用5Pytest和Unittest中的断言如何使用

1 阐明pytest中应用assert进行断言,和unittest是有区别的,后边具体列举;pytest中的assert后能够为表达式,为True示意用例通过。2 Uinttest中的断言2.1 局部断言咱们写一个class,代码中就能够看到所有的断言: 罕用断言:办法查看assertEqual(a, b)a ==bassertNotEqual(a, b)a !=bassertTrue(x)bool(x) is TrueassertFalse(x)Bool(x) is FalseassertIs(a, b)a is bassertIsNot(a, b)a is not bassertIsNone(x)x is NoneassertIsNotNone(x)x is not NoneassertIn(a, b)a in bassertNotIn(a, b)a not in bassertIsInstance(a, b)isinstance(a,b)assertNotIsInstance(a, b)not isinstance(a,b)2.2 局部举例# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2021/11/26 # 文件名称:test_unint.py# 作用:unittest断言# 分割:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelsonimport unittestclass TestU(unittest.TestCase): def setUp(self) -> None: self.a = 3 self.b = 4 self.c = 3 self.d = 0 def tearDown(self) -> None: pass def test_o(self): self.assertTrue(self.c, msg="后果为False") def test_t(self): self.assertEqual(self.a, self.c, msg="a和c不相等")if __name__ == "__main__": unittest.main()3 Pytest断言3.1 罕用断言断言阐明assert a判断 a为真assert not a判断 a不为真assert a in b判断 b 蕴含 aassert a == b判断 a 等于 bassert a != b判断 a 不等于 b3.2 示意办法# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2021/11/26 # 文件名称:test_assert.py# 作用:assert断言# 分割:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelsonimport pytestclass TestU(): def test_f(self): a = 3 b = 4 s = a + b return s def test_func(self): assert self.test_f() == 7, "计算结果不是7"if __name__ == "__main__": pytest.main()输入为:(venv) F:\pytest_study\test_case\test_d>pytest test_assert.py============================================ test session starts =============================================platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1rootdir: F:\pytest_study\test_case\test_dplugins: allure-pytest-2.8.12, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6, xdist-1.31.0collected 2 itemstest_assert.py .. [100%]============================================= 2 passed in 0.31s ==============================================3.3 异样断言能够应用 pytest.raises 作为上下文管理器,当抛出异样时能够获取到对应的异样实例;目标是断言抛出的异样是不是预期想要的;比方如下,断言1 / 0的异样是不是ZeroDivisionError,其中ZeroDivisionError是异样类型,用type从异样信息中获取;division by zero是异样的值,应用value从异样信息中获取。 def test_a(self): with pytest.raises(ZeroDivisionError) as e: 1 / 0 assert e.type == ZeroDivisionError assert "division by zero" in str(e.value)

January 18, 2023 · 1 min · jiezi

关于自动化测试:WindowsGUI自动化测试框架搭建之需求整理详细设计和框架设计

1 需要整顿1.1 实现目标基于CS架构,模仿用户(鼠标、键盘)操作,达到疾速、反复执行测试用例;便于回归测试,疾速笼罩主线用例或性能;线上或线下巡检测试,联合继续集成,及时发现运行环境存在的问题;晋升集体自动化测试技术能力,为业务提供强有力的测试伎俩。1.2 性能需要基于Unittest,封装、调用和组织所有的测试用例,进行批量或指定用例运行;反对邮件服务,可增加任意团队成员邮箱,及时告诉团队成员自动化运行后果;反对log日志,保留运行过程所有或须要记录的数据;反对HTML测试报告,直观展现测试后果和数据;反对用例设计和测试后果拆散,便于数据管理;反对用户登录封装,后续所有的用例登录专用一个办法;反对任意批改Beautifulreport,可定制测试报告模板;反对测试报告多语言(英文和中文);反对截图性能;反对Jenkins继续集成。1.3 其余要求实用Windows XP(SP3),Windows Vista, Windows 7, Windows 8、8.1、10自动化测试;模块化设计,我的项目框架模式组织代码;公共办法封装,对立调用;数据和后果离开,清晰明了;反对邮件自定义;代码正文清晰。1.4 实用人员有肯定测试根底的软件测试人员;有肯定的代码(Python/Java)功底;致力于学习WindowsGUI自动化测试的所有人员。1.5 学习周期两个星期到一个月,可达到独立进行WindowsGUI自动化测试;1.6 学习倡议倡议依照文章程序,一步一步进行学习和实际;文章是从根本的环境搭建到最终框架齐全搭建的一个过程,相对来说还是比拟具体的;文章偏差于我的项目实战,未有太多的实践介绍和名词解释,所以对0根底的人员来说,可能须要额定的工夫去补充一下常识。2 具体设计2.1 需要剖析对 实现需求 进行详细分析,次要有下: 性能阐明应用Unittest框架开源自动化测试框架,间接应用批量或指定用例运行Unittest框架可反对此性能log日志应用Python的logging库即可生成HTML测试报告应用BeautifulReport模块可实现此性能用例设计和后果拆散PO模式用户登录封装间接把登录性能模块化,应用Unittest框架中的setup,teardown即可定制测试报告模板应用BeautifulReport模块报告多语言应用BeautifulReport模块截图性能应用UIAutomation的CaptureToImage办法2.2 技术栈技术版本及阐明PythonV3.x(本文为3.7)===编程语言撑持UIAutomation控件的辨认、定位及操作BeautifulReport生成Html测试报告LoggingPython自带===生成log日志UnittestPython自带===自动化测试框架SmtplibPython自带===邮件服务emailPython自带===邮件服务osPython自带===零碎模块PyCharmCommunity 2020.2汉化版操作系统Windows10旗舰版64位其它后续补充3 框架设计 3.1 框架阐明 3.2 框架执行流程 4 预期后果4.1 测试过程log日志 4.2 测试报告html格局 4.3 测试报告邮件格局

January 13, 2023 · 1 min · jiezi

关于自动化测试:基于Python+UIautomation的WindowsGUI自动化测试实战二计算器

1 测试需要模仿操作windows10自带的计算器,计算简略的后果数据。 2 测试步骤关上计算器;输出10*52查看计算结果,并进行判断是否计算OK;敞开计算器。3 实现脚本# -*- coding:utf-8 -*-import unittestimport timeimport uiautomationimport os# @unittest.skip("跳过")class TestFaultTree(unittest.TestCase): def setUp(self) -> None: # 初始化 os.system("calc") # 关上计算器 time.sleep(2) self.calc = uiautomation.WindowControl(Name="计算器") self.calc_list = ["一", "零", "乘以", "五", "二", "等于"] self.result = "520" def tearDown(self) -> None: time.sleep(1) self.calc.ButtonControl(Name="敞开 计算器").Click() def test_toolbar(self): time.sleep(1) for i in range(0, len(self.calc_list)): self.calc.ButtonControl(Name=self.calc_list[i]).Click() calc_result = self.calc.TextControl(foundIndex=3).Name print("计算器运行后果为:", calc_result) print("预期后果为:", self.result) self.assertIn(self.result, calc_result)if __name__ == "__main__": unittest.main()4 实现成果

January 13, 2023 · 1 min · jiezi

关于自动化测试:基于Python+UIautomation的WindowsGUI自动化测试实战一记事本

1 测试需要模仿用户操作,关上记事本进行内容输出 2 测试步骤2.1 用例1关上记事本;窗口最大化;输出"人生苦短,我用Python!";敞开窗口;不保留间接退出。2.2 用例2关上记事本;窗口最大化输出: Python之禅!柔美胜于俊俏(Python 以编写柔美的代码为指标)明了胜于艰涩(柔美的代码该当是明了的,命名标准,格调类似)简洁胜于简单(柔美的代码该当是简洁的,不要有简单的外部实现)简单胜于凌乱(如果简单不可避免,那代码间也不能有难懂的关系,要放弃接口简洁)扁平胜于嵌套(柔美的代码该当是扁平的,不能有太多的嵌套)距离胜于紧凑(柔美的代码有适当的距离,不要奢望一行代码解决问题)可读性很重要(柔美的代码是可读的)即使假借特例的实用性之名,也不可违反这些规定(这些规定至高无上)不要容纳所有谬误,除非你确定须要这样做(精准地捕捉异样,不写 except:pass 格调的代码)当存在多种可能,不要尝试去猜想而是尽量找一种,最好是惟一一种显著的解决方案(如果不确定,就用穷举法)尽管这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )做兴许好过不做,但不假思索就入手还不如不做(入手之前要细思量)如果你无奈向人形容你的计划,那必定不是一个好计划;反之亦然(计划测评规范)命名空间是一种绝妙的理念,咱们该当多加利用(提倡与号召)"敞开窗口;不保留间接退出。3 实现脚本# -*- coding:utf-8 -*-import unittestimport timeimport uiautomationimport subprocessclass TestNotePad(unittest.TestCase): def setUp(self) -> None: # 初始化 subprocess.Popen("notepad.exe") # 关上记事本 time.sleep(1) self.notepad = uiautomation.WindowControl(Name="无标题 - 记事本") time.sleep(1) print("===============", self.notepad) self.notepad.ButtonControl(Name="最大化").Click() def tearDown(self) -> None: time.sleep(1) self.notepad.ButtonControl(Name="敞开").Click() time.sleep(0.5) self.notepad_1 = uiautomation.WindowControl(Name = "记事本") self.notepad_1.SetTopmost() self.notepad_1.ButtonControl(Name="不保留(N)").Click() def test_notepad(self): self.notepad.SetTopmost() time.sleep(1) text_content = "人生苦短,我用Python!" self.notepad.EditControl(Name="文本编辑器").SendKeys(text_content) def test_notepad_text(self): self.notepad.SetTopmost() time.sleep(1) text_content_1 = ' '*47 + "Python之禅!\n\ 柔美胜于俊俏(Python 以编写柔美的代码为指标)\n\ 明了胜于艰涩(柔美的代码该当是明了的,命名标准,格调类似)\n\ 简洁胜于简单(柔美的代码该当是简洁的,不要有简单的外部实现)\n\ 简单胜于凌乱(如果简单不可避免,那代码间也不能有难懂的关系,要放弃接口简洁)\n\ 扁平胜于嵌套(柔美的代码该当是扁平的,不能有太多的嵌套)\n\ 距离胜于紧凑(柔美的代码有适当的距离,不要奢望一行代码解决问题)\n\ 可读性很重要(柔美的代码是可读的)\n\ 即使假借特例的实用性之名,也不可违反这些规定(这些规定至高无上)\n\ 不要容纳所有谬误,除非你确定须要这样做(精准地捕捉异样,不写 except:pass 格调的代码)\n\ 当存在多种可能,不要尝试去猜想\n\ 而是尽量找一种,最好是惟一一种显著的解决方案(如果不确定,就用穷举法)\n\ 尽管这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )\n\ 做兴许好过不做,但不假思索就入手还不如不做(入手之前要细思量)\n\ 如果你无奈向人形容你的计划,那必定不是一个好计划;反之亦然(计划测评规范)\n\ 命名空间是一种绝妙的理念,咱们该当多加利用(提倡与号召)" self.notepad.EditControl(Name="文本编辑器").SendKeys(text_content_1)if __name__ == "__main__": unittest.main()4 实现成果 ...

January 13, 2023 · 1 min · jiezi

关于自动化测试:研讨会回顾-UI自动化测试现场演示

2022年12月6日,龙智与软件测试自动化“领导者”SmartBear联结举办了主题为“如何通过自动化测试实现降本、增效与提质”的在线研讨会。此次研讨会中,龙智技术工程师邱洁玉现场演示了应用UI自动化测试的过程,并简要介绍了API的自动化测试。软件测试是DevSecOps中必不可少的一环,而自动化软件测试可确保每次推送代码时都实现所需的平安测试步骤,按时交付高质量代码。龙智通过与软件测试自动化测试领导者SmartBear单干,引入其主动UI测试工具TestComplete和主动API测试平台ReadyAPI,助力企业进步软件开发的测试效率与品质,帮忙中国企业落地更平安、更自动化的DevSecOps实际办法。在线研讨会“如何通过自动化测试实现降本、增效与提质”内容回顾《UI自动化测试演示及API自动化测试简介》(节选)演讲嘉宾:邱洁玉(龙智技术工程师)明天我次要给大家介绍一下UI自动化测试,以及接口自动化测试,并围绕SmartBear的UI自动化测试工具TestComplete进行演示。 咱们先看一下目前UI测试面临的一些挑战。首先是无奈在短时间内实现大量测试用例。通过自动化测试,您能够利用早晨或周末的工夫运行自动化测试脚本。第二个挑战,无奈正当利用资源。自动化测试工具能够优化资源,比方在运行测试脚本的同时,测试人员可进行其余工作(波及测试用例的工作等)。第三个挑战是重复性的测试,例如机械性的回归测试。此类测试工作量较大,减少了测试人员的累赘。第四个挑战是由人工执行的手动测试产生的问题,那就是人为的疲劳或忽略导致测试后果不牢靠,而自动化测试可防止此类问题。最初一个挑战是手工测试无奈实现的工作只能用自动化测试来实现,比方利用性能和软件速度等稳定性测试。 为什么抉择TestComplete 您须要抉择一款适合的工具帮忙克服下面提到的这些挑战——龙智为大家引进TestComplete这款UI自动化测试工具,它能够进行桌面、Web和挪动测试。 桌面测试方面,TestComplete反对.Net和WPF利用。Web测试方面,它反对React和Angular等框架,也反对跨浏览器测试、挪动测试。您也能够在物理机或虚拟机上进行iOS或安卓的利用测试。 TestComplete的另一个长处是代码和无代码测试。它反对应用7种脚本语言来编写测试代码,也反对关键词测试等无代码测试,对于没有代码编程教训的测试用户来说非常敌对。 此外,TestComplete弱小的GUI对象辨认性能能够辨认比较复杂的空间(包含图片、PDF等)、更改的测试元素,无效升高测试保护老本,并无缝集成CI/CD、版本治理等工具,进步测试效率。 SmartBear还提供收费的培训视频、社区资源,让您可能轻松、疾速地上手。 ReadyAPI接口测试 ReadyAPI是一款接口自动化测试工具,它将功能测试、平安测试、性能测试和API虚拟化等性能集成在同一平台,防止了不同工具之间的来回切换,不同的测试之间能够共享测试用例、测试数据,进步了测试效率。并且,ReadyAPI反对大多数支流的API协定和范式,如Open API/Swagger和AsyncAPI等。 ReadyAPI可通过导入API协定、录制的形式来创立测试项目,也能够通过图形界面来批量创立断言。通过拖拽内置组件的形式来轻松构建简单的测试步骤,升高了测试人员的应用门槛。它还能够和Git等CI/CD工具集成,融入现有的流水线中,实现可继续化的测试。 另外,ReadyAPI能够从Excel、CVS数据库里导入测试数据。它内置了较为实在的测试数据,比方电话号码、不同国家的电报号码,测试人员无需依据不同的格局来本人创立模仿数据,节俭了输出数据的工夫。 ReadyAPI提供了详尽的剖析报告,报告可能以HTML和CVS格局导出。 接下来,我为大家演示如何应用TestComplete进行自动化测试。 △回顾视频:龙智专家邱洁玉现场演示应用TestComplete进行自动化测试 除了龙智技术工程师邱洁玉,还有SmartBear亚太渠道经理何平康、龙智总经理杨林晶与龙智技术总监李毅作为演讲嘉宾参加了此次研讨会,就以下主题进行了分享: SmartBear及其软件品质与测试现状调研龙智与SmartBear策略单干扩大DevSecOps解决方案中国企业在品质和测试中面临的挑战以及自动化测试实际现状与瞻望 咱们将会议进行了全程录制,立刻点击下方按钮获取完整版回顾视频。 点击此处,观看研讨会视频回顾

January 13, 2023 · 1 min · jiezi

关于自动化测试:WebUI自动化测试框架搭建之需求整理详细设计和框架设计

1 总体需要1.1 实现目标基于BS架构,模仿用户(鼠标、键盘)操作,达到疾速、反复执行测试用例;便于回归测试,疾速笼罩主线用例或性能;线上或线下巡检测试,联合继续集成,及时发现运行环境存在的问题;晋升集体自动化测试技术能力,为业务提供强有力的测试伎俩。1.2 性能需要基于Unittest,封装、调用和组织所有的测试用例,进行批量或指定用例运行;反对邮件服务,可增加任意团队成员邮箱,及时告诉团队成员自动化运行后果;反对log日志,保留运行过程所有或须要记录的数据;反对HTML测试报告,直观展现测试后果和数据;反对用例设计和测试后果拆散,便于数据管理;反对Json、conf、excel等配置文件读取,提供灵便的配置文件操作方法;反对用户登录封装,后续所有的用例登录专用一个办法;反对任意批改HTMLTestRuner,可定制测试报告模板;反对测试报告多语言(英文和中文);反对截图性能;反对Jenkins继续集成。1.3 其余要求实用所有bs架构自动化测试;模块化设计,我的项目框架模式组织代码;公共办法封装,对立调用;数据和后果离开,清晰明了;反对邮件自定义;代码正文清晰。1.4 实用人员有肯定测试根底的软件测试人员;有肯定的代码(Python/Java)功底;致力于学习web UI自动化测试的所有人员。1.5 学习周期两个星期到一个月,可达到独立进行web UI自动化测试;1.6 学习倡议倡议依照文章程序,一步一步进行学习和实际;文章是从根本的环境搭建到最终框架齐全搭建的一个过程,相对来说还是比拟具体的;文章偏差于我的项目实战,未有太多的实践介绍和名词解释,所以对0根底的人员来说,可能须要额定的工夫去补充一下常识。2 具体设计2.1 需要剖析对 实现需求 进行详细分析,次要有下: 性能阐明应用Unittest框架开源自动化测试框架,间接应用批量或指定用例运行Unittest框架可反对此性能log日志应用Python的logging库即可生成HTML测试报告应用HtmlTestRunner.py模块可实现此性能用例设计和后果拆散应用配置文件如excel、json等组织用例数据反对Json、conf、excel等配置文件读取这里先应用excel进行页面元素的驱动用户登录封装间接把登录性能模块化,应用Unittest框架中的setup,teardown即可定制测试报告模板应用HTMLTestRuner.py模块报告多语言应用HTMLTestRuner.py模块截图性能应用Selenium的save_screenshot办法2.2 技术栈技术版本及阐明PythonV3.x(本文为3.7)===编程语言撑持SeleniumV3.141.0 ===UI元素、控件的辨认、定位,以及浏览器管制等HtmlTestRunnerPython3版本===生成Html测试报告LoggingPython自带===生成log日志XlrdV1.2.0===excel读取办法UnittestPython自带===自动化测试框架SmtplibPython自带===邮件服务emailPython自带===邮件服务osPython自带===零碎模块PyCharmCommunity 2020.2汉化版操作系统Windows10旗舰版64位其它后续补充3 框架设计 3.1 框架阐明 3.2 框架执行流程 4 预期后果4.1 测试过程log日志 4.2 测试报告html格局 4.3 测试报告邮件格局 5 特地阐明代码根本实现,如果有好的倡议,可交换学习心得。 6 第一个WebUI自动化测试程序在开始自动化框架搭建之前,咱们先写一个简略的自动化测试脚本,来领会一下什么是web UI自动化测试,以及元素的基本操作,为后续的框架搭建鉴定根底。 6.1 Selenium根本实践6.1.1 Selenium装置间接关上cmd窗口,输出以下命令在线装置:pip3 install selenium 装置完后,在cmd窗口中输出以下命令,能够看到selenium曾经装置了pip list 6.1.2 WebDriverAPIselenium提供了很多的WebDriverAPI,能够来进行: 元素的辨认、定位元素的单击、双击滚动条的拖动浏览器管制如窗口大小、后退后退、刷新、表单切换、多窗口切换、文件双传下载、cookie操作、验证码等等详情请参考以下: Selenium WebDriver API 学习笔记(一):元素定位 Selenium WebDriver API 学习笔记(二):浏览器管制 Selenium WebDriver API 学习笔记(三):浏览器管制6.2 浏览器驱动装置要想应用selenium来操作浏览器上的元素,必须装置浏览器驱动;这个要依据具体的浏览器版本来定义;本文应用的是Chrome浏览器,版本为88.0.4324.182(正式版本) (32 位);6.2.1 Chromedriver下载下载地址:Chrome浏览器各版本对应的驱动 6.2.2 Chromedriver装置下载下来后是一个chromedriver.exe,如果是w7零碎须要把chromedriver.exe放在chrome浏览器的装置目录,而后在零碎环境变量中退出chrome浏览器的装置目录即可;如果是w10零碎,须要chromedriver.exe放在Python的装置目录即可,如本文是: 6.3 代码设计思路6.3.1 pycharm新建脚本关上之前创立的我的项目【Automated-UITest-demo】,在我的项目上右键,新建python文件即可,这里新建一个名为test_baidu的python文件 创立完后,如下多了一个test_baidu的py文件 6.3.2 自动化需要这里咱们做以下UI自动化测试:1、主动关上chrome浏览器2、输出百度网址3、关上百度首页,输出helloworld4、最大化浏览器窗口5、搜寻helloworld.并回车6、浏览器窗口大小放大为640*4807、先进行浏览器后退,再次输出csdn进行搜寻8、清空输出的内容9、判断是否进入csdn官网6.3.3 需要剖析需要剖析主动关上chrome浏览器须要用到webdriver.Chrome()输出百度网址用到driver.get()办法关上百度首页,输出helloworld用到send_keys()办法最大化浏览器窗口应用maximize_window()办法搜寻helloworld.并回车用到send_keys()办法浏览器窗口大小放大为640*480用到 set_window_size()办法浏览器后退back()办法清空输出的内容clear()办法判断driver.current_url办法来判断以后的网址以上办法具体应用,参考【1.2 WebDriverAPI】6.3.4 元素定位以上需要曾经搞清楚了,那么接下来要进行元素定位,这里大略能够对需要再拆解下,须要哪些元素?元素阐明定位形式百度输入框用来输出helooworldfind_element_by_id搜寻csdn后点击csdn官网用来模仿点击进入到csdn官网find_element_by_xpath那如何定位元素,晓得应用哪种定位形式?A、咱们关上百度首页,而后按【F12】关上浏览器的调试模式 B、点击调试模式窗口左上角的小三角 C、鼠标挪动到百度搜寻输入框 D、点击一下即可,而后看到搜寻输入框的元素属性,即要应用的元素定位办法 ...

January 13, 2023 · 2 min · jiezi

关于自动化测试:如何获取页面指定区域数据存入htmlexcel文档

@TOC 1 需要起源获取网页指定区域数据,并进行保留;简略说就是pa chong的需要了。2 需要细节留神:请文化上网,本文仅作为学习用。讲述的是思路和办法,所以对被测试网站要害数据进行暗藏。如有须要,可学习思路后自行找测试对象进行学习。 某网站,进入后如下,有很多数据分类: 进入某个分类后有很多小分类,如电阻器中的页面: 而每个小类又有很多数据,那咱们就是要把这些数据下载下来进行保留: 3 设计剖析依据以上【需要细节】,咱们曾经大略明确须要做啥,就是要下载一个大的分类下的小类中的内容: 要申请对应页面数据,那咱们须要用到的requests.get办法;申请完数据后,要获取对应元素的html,要用到etree.HTML和tree.xpath办法;因为这些大类或小类,其实实质上都是不同的链接,从页面看咱们可能须要获取a标签,那么须要应用BeautifulSoup进行页面解析;下载下来的数据,咱们要进行保留到html格局的文件中,那咱们要用到根本的数据写入,比方open和write办法;想把下载下来的html原格局保留到excel中,那须要对html和excel格局进行解析,须要应用pandas进行解决;这个两头过程中,须要对文件和门路进行解决,所以还须要用到Path办法;最初咱们把脚本打包成exe不便运行和应用,那须要用到打包工具Pyinstaller解决。4 技术栈从【3 设计剖析】来看,咱们须要用到以下工具环境。工具版本用处PythonV3.7.0脚本设计beautifulsoup4V4.11.1html页面数据解析lxmlV4.6.3etree.HTML、tree.xpath获取对应元素的htmlpandasV1.1.5excel数据处理requestsV2.24.0页面数据申请复制以下内容命名为 requirements.txt,间接应用pip install -r requirements.txt 即可装置须要的包;beautifulsoup4==4.11.1lxml==4.6.3pandas==1.1.5requests==2.24.05 设计实现先引入所有须要的包:import requestsfrom lxml import etreefrom bs4 import BeautifulSoupimport pandasimport osimport timefrom pathlib import Path创立基类Tools:class Tools(object): """公共办法(工具)作为基类被后续调用"""5.1 封装公共办法类Tools5.1.1 封装数据申请办法get_category创立办法get_category,传入四个参数: def get_category(self, curt_url, curt_xpath, curt_list, curt_headers): """ 申请办法封装 :param curt_url: 申请地址 :param curt_xpath: 对应table xpath :param curt_list: 寄存列表 :param curt_headers: 申请头 :return: 无返回 """为什么要这么做?为了防止代码冗余,后续有很多中央用到数据申请和获取,所以进行了封装。而传入的四个参数,根本是变动的,所以用到时候,传入须要的参数即可;在每次申请前加个提早:time.sleep(1),防止申请太过频繁;应用requests.get办法,获取指标地址数据,其中要退出两个参数,次要防止申请报SSl谬误:res = requests.get(curt_url, verify=False, headers=curt_headers) 应用etree.HTML办法返回的数据进行html转换:tree = etree.HTML(res.content) 应用tree.xpath办法获取该页面中指定元素的内容:div = tree.xpath(curt_xpath) 应用以下办法进行格局转换,获取的数据是byte字节,转换成str类型;div_str = etree.tostring(div[0]) div_str1 = str(div_str, "UTF-8") 应用BeautifulSoup办法解析页面html,获取a标签的所有链接内容,就是大类或小类的名字对应的链接了;soup = BeautifulSoup(div_str1) for k in soup.find_all('a'): curt_list.append(k['href']) get_category办法源码: def get_category(self, curt_url, curt_xpath, curt_list, curt_headers): """ 申请办法封装 :param curt_url: 申请地址 :param curt_xpath: 对应table xpath :param curt_list: 寄存列表 :param curt_headers: 申请头 :return: 无返回 """ time.sleep(1) res = requests.get(curt_url, verify=False, headers=curt_headers) # 接口数据申请办法 tree = etree.HTML(res.content) # 获取返回数据的内容 div = tree.xpath(curt_xpath) # 获取以后页面须要的table xpath对应的内容 div_str = etree.tostring(div[0]) # 格局转换 div_str1 = str(div_str, "UTF-8") # byte转为str # print(div_str1) soup = BeautifulSoup(div_str1) # BeautifulSoup解析页面html for k in soup.find_all('a'): # 获取a标签 curt_list.append(k['href'])5.1.2 封装html数据写入办法write_html就是把以上获取的内容存入html格局的文件中;这个简略,间接上代码: def write_html(self, file, txt): """ 公共办法:把获取的数据写入文本内容到文件【html格局】 :param file: 文件名 :param txt: 文本内容 :return: 返回胜利或失败 """ try: with open(file, 'w', encoding='utf-8') as f: f.write(txt) time.sleep(3) f.close() return f"{file}写入: 胜利" except: return f"{file}写入: 失败"5.1.3 封装html转excel办法html_to_excel简略说,就是把html文件转换成excel格局;传入五个参数: def html_to_excel(self, base_dir, big_dir, small_dir, full_path, new_file_path): """ 将html文件转换成excel格局的文件 :param base_dir: 文件寄存基地址,默认脚本的上一层目录 :param big_dir: 大类目录 :param small_dir: 小类目录 :param excel_dir: 寄存excel目录 :param sheet_n: 寄存sheet的名称=小类 :param full_path: 所有sheet合并目录 :param new_file_path: 最终合并的某个小类的excel :return:无返回 """大略思路是:①关上指定目录下的html格式文件;②循环遍历所有的html格式文件,应用pandas.read_html进行数据读取;③应用pandas.ExcelWriter办法写入excel;④写入excel后是每个html寄存在每个sheet中;⑤合并所有的sheet为一个excel。间接上代码: def html_to_excel(self, base_dir, big_dir, small_dir, full_path, new_file_path): """ 将html文件转换成excel格局的文件 :param base_dir: 文件寄存基地址,默认脚本的上一层目录 :param big_dir: 大类目录 :param small_dir: 小类目录 :param excel_dir: 寄存excel目录 :param sheet_n: 寄存sheet的名称=小类 :param full_path: 所有sheet合并目录 :param new_file_path: 最终合并的某个小类的excel :return:无返回 """ excel_dir = base_dir + "\\" + big_dir + "\\" + small_dir + "\\" sheet_n = small_dir # sheet_n = "1-陶瓷电容器" os.chdir(excel_dir) for filename in os.listdir(excel_dir): print(filename) try: with open(excel_dir + filename, 'rb') as f: df = pandas.read_html(f.read(), header=1, encoding='utf-8') bb = pandas.ExcelWriter(excel_dir + filename + ".xlsx") df[0].to_excel(bb, index=False) bb.close() except Exception as e: print("异样:" + e) time.sleep(3) workbook = pandas.ExcelWriter(full_path) folder_path = Path(excel_dir) file_list = folder_path.glob('*.xlsx*') for i in file_list: stem_name = i.stem data = pandas.read_excel(i, sheet_name=0) data.to_excel(workbook, sheet_name=stem_name, index=False) time.sleep(2) workbook.save() workbook.close() time.sleep(2) data2 = pandas.read_excel(full_path, sheet_name=None) data3 = pandas.concat(data2, ignore_index=True) # new_file_path = "合并.xlsx" data3.to_excel(new_file_path, sheet_name=sheet_n, index=False)5.2 两个全局变量寄存获取的数据名称category_list = [] # 寄存所有大类category_list_small = [] # 寄存所有小类5.3 创立数据处理和获取类DataBase5.3.1 初始化类 def __init__(self): # self.tools = Tools() self.url = 'xxxx' # 指标网站 self.headers = {'Connection': 'close'} # 申请头,防止ssl报错 # self.big_num = 3 # 第几个大类,从0开始 # self.small_num = 0 # 第几个小类,从0开始 self.net_xpath = '/html/body/div[5]/div/div[2]' # 网站所有大类的table xpath self.xpath_big = ['/html/body/div[3]/div[2]'] # 对应大类中的小类的table xpath self.xpath_small = ['/html/body/div[4]/div'] # 对应小类的内容table xpath5.3.2 获取所有大类名称存入列表 def get_big_category(self): """获取网站中所有的类别,寄存列表中""" self.get_category(self.url, self.net_xpath, category_list, self.headers) print(f"1========={category_list}")5.3.3 获取所有大类中小类的名称存入列表 def get_small_category(self, big_num): """获取某个大类中小类所有的类别,寄存列表中""" self.get_category(f'{self.url}{category_list[big_num]}', self.xpath_big[0], category_list_small, self.headers) print(f"获取的大类是: {category_list[big_num]} ,如下:")5.3.4 获取小类中页面的内容 def get_small_content(self, i, small_num): """获取小类中所有内容""" print(f"获取的大类对应的小类是:{category_list_small[small_num]}") time.sleep(1) url_1 = f'{self.url}{category_list_small[small_num]}?page={i}' print(f"申请的小类的域名为:{url_1}") res = requests.get(url_1, verify=False, headers=self.headers) tree = etree.HTML(res.content) div = tree.xpath(self.xpath_small[0]) div_str = etree.tostring(div[0]) div_str1 = str(div_str, "UTF-8") time.sleep(2) return div_str15.4 办法调用main设计5.4.1 输入输出规定def main(): print("*" * 20) print("在运行前请所相熟下规定:\n" "1、依照网页显示,大类名称输出 数字-大类名称,如1-电阻器\n" "2、小类名称输出 数字-小类名称,如1-固定电阻器\n" "3、大小类前边的数字示意第几个\n" "4、如果输错不做判断,只是寄存的门路须要本人查找,倡议一次性输出正确\n" "5、!!!!!程序执行过程请勿敞开任何窗口!!!!!") print("*" * 20)5.4.2 对以后脚本门路进行解决 base_file = os.path.dirname(os.path.abspath("test_database_final.py")) print("#" * 20) print("程序将开始执行,请稍后......\n" "程序曾经启动~\n" f"程序启动目录为:{base_file}\n" "初始化数据......") print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n" "1-电阻器 2-连接器 3-连接器支架 4-电容器 5-振荡器 \n" "6-晶体/谐振器 7-电源电路 8-开关 9-传感器/温度传感器 10-光电 \n" "11-光纤 12-二极管 13-电路爱护 14-存储 15-信号电路 \n" "16-电感器 17-端子 18-插座 19-微控制器和处理器 20-射频和微波 \n" "21-逻辑 22-晶体管 23-继电器 24-转换器 25-过滤器 \n" "26-触发安装 27-RC网络 28-可编程逻辑 29-电信电路 30-驱动程序和接口 \n" "31-放大器电路 32-耐热撑持安装 33-变压器 34-生产电路 35-电池 \n" "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")5.4.3 从键盘输入要获取的数据信息 big = input("请输出大类的名称(如1-电阻器): ") small = input("请输出小类的名称(如1-固定电阻器): ") num = int(input("请输出小类的页数(如50,须要从网站查看): ")) b_n = int(input("请输出该大类对应的序号,共35个大类,从左到右数从0开始,比方0: ")) m_n = int(input("请输出该小类对应的序号,从0开始,比方0: ")) print(f"通过输出,咱们要获取的数据为:第{b_n + 1}个大类中的第{m_n + 1}个小类\n" f"即:{big}中的{small}")5.4.4 数据调用 data_base = DataBase() data_base.get_big_category() data_base.get_small_category(b_n)5.4.5 循环换入每页中的数据 for i in range(1, num+1): get_content = data_base.get_small_content(i, m_n) print(f"第{i}次获取:获取的数据开始写入文件,文件名为:第{i}页.html") file = f"{base_file}\\{big}\\{small}" if os.path.exists(file) is False: os.makedirs(file) data_base.write_html(file=f"{file}\\第{i}页.html", txt=get_content) time.sleep(1)5.4.6 获取的数据合并存入最终的excel data_base.html_to_excel(base_file, big, small, f"{small}sheet.xlsx", f"{small}.xlsx")5.4.7 main办法源码def main(): print("*" * 20) print("在运行前请所相熟下规定:\n" "1、依照网页显示,大类名称输出 数字-大类名称,如1-电阻器\n" "2、小类名称输出 数字-小类名称,如1-固定电阻器\n" "3、大小类前边的数字示意第几个\n" "4、如果输错不做判断,只是寄存的门路须要本人查找,倡议一次性输出正确\n" "5、!!!!!程序执行过程请勿敞开任何窗口!!!!!") print("*" * 20) base_file = os.path.dirname(os.path.abspath("test_database_final.py")) print("#" * 20) print("程序将开始执行,请稍后......\n" "程序曾经启动~\n" f"程序启动目录为:{base_file}\n" "初始化数据......") print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n" "1-电阻器 2-连接器 3-连接器支架 4-电容器 5-振荡器 \n" "6-晶体/谐振器 7-电源电路 8-开关 9-传感器/温度传感器 10-光电 \n" "11-光纤 12-二极管 13-电路爱护 14-存储 15-信号电路 \n" "16-电感器 17-端子 18-插座 19-微控制器和处理器 20-射频和微波 \n" "21-逻辑 22-晶体管 23-继电器 24-转换器 25-过滤器 \n" "26-触发安装 27-RC网络 28-可编程逻辑 29-电信电路 30-驱动程序和接口 \n" "31-放大器电路 32-耐热撑持安装 33-变压器 34-生产电路 35-电池 \n" "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") big = input("请输出大类的名称(如1-电阻器): ") small = input("请输出小类的名称(如1-固定电阻器): ") num = int(input("请输出小类的页数(如50,须要从网站查看): ")) b_n = int(input("请输出该大类对应的序号,共35个大类,从左到右数从0开始,比方0: ")) m_n = int(input("请输出该小类对应的序号,从0开始,比方0: ")) print(f"通过输出,咱们要获取的数据为:第{b_n + 1}个大类中的第{m_n + 1}个小类\n" f"即:{big}中的{small}") data_base = DataBase() data_base.get_big_category() data_base.get_small_category(b_n) for i in range(1, num+1): get_content = data_base.get_small_content(i, m_n) print(f"第{i}次获取:获取的数据开始写入文件,文件名为:第{i}页.html") file = f"{base_file}\\{big}\\{small}" if os.path.exists(file) is False: os.makedirs(file) data_base.write_html(file=f"{file}\\第{i}页.html", txt=get_content) time.sleep(1) data_base.html_to_excel(base_file, big, small, f"{small}sheet.xlsx", f"{small}.xlsx")5.5 主程序调用if __name__ == "__main__": main() input('Press Enter to exit…')6 残缺源码# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2022/10/11# 文件名称:test_database_final.py# 作用:xxx# 博客:https://blog.csdn.net/NoamaNelsonimport requestsfrom lxml import etreefrom bs4 import BeautifulSoupimport pandasimport osimport timefrom pathlib import Pathclass Tools(object): """公共办法(工具)作为基类被后续调用""" def get_category(self, curt_url, curt_xpath, curt_list, curt_headers): """ 申请办法封装 :param curt_url: 申请地址 :param curt_xpath: 对应table xpath :param curt_list: 寄存列表 :param curt_headers: 申请头 :return: 无返回 """ time.sleep(1) res = requests.get(curt_url, verify=False, headers=curt_headers) # 接口数据申请办法 tree = etree.HTML(res.content) # 获取返回数据的内容 div = tree.xpath(curt_xpath) # 获取以后页面须要的table xpath对应的内容 div_str = etree.tostring(div[0]) # 格局转换 div_str1 = str(div_str, "UTF-8") # byte转为str # print(div_str1) soup = BeautifulSoup(div_str1) # BeautifulSoup解析页面html for k in soup.find_all('a'): # 获取a标签 curt_list.append(k['href']) # 循环获取href链接 def write_html(self, file, txt): """ 公共办法:把获取的数据写入文本内容到文件【html格局】 :param file: 文件名 :param txt: 文本内容 :return: 返回胜利或失败 """ try: with open(file, 'w', encoding='utf-8') as f: f.write(txt) time.sleep(3) f.close() return f"{file}写入: 胜利" except: return f"{file}写入: 失败" def html_to_excel(self, base_dir, big_dir, small_dir, full_path, new_file_path): """ 将html文件转换成excel格局的文件 :param base_dir: 文件寄存基地址,默认脚本的上一层目录 :param big_dir: 大类目录 :param small_dir: 小类目录 :param excel_dir: 寄存excel目录 :param sheet_n: 寄存sheet的名称=小类 :param full_path: 所有sheet合并目录 :param new_file_path: 最终合并的某个小类的excel :return:无返回 """ excel_dir = base_dir + "\\" + big_dir + "\\" + small_dir + "\\" sheet_n = small_dir # sheet_n = "1-陶瓷电容器" os.chdir(excel_dir) for filename in os.listdir(excel_dir): print(filename) try: with open(excel_dir + filename, 'rb') as f: df = pandas.read_html(f.read(), header=1, encoding='utf-8') bb = pandas.ExcelWriter(excel_dir + filename + ".xlsx") df[0].to_excel(bb, index=False) bb.close() except Exception as e: print("异样:" + e) time.sleep(3) workbook = pandas.ExcelWriter(full_path) folder_path = Path(excel_dir) file_list = folder_path.glob('*.xlsx*') for i in file_list: stem_name = i.stem data = pandas.read_excel(i, sheet_name=0) data.to_excel(workbook, sheet_name=stem_name, index=False) time.sleep(2) workbook.save() workbook.close() time.sleep(2) data2 = pandas.read_excel(full_path, sheet_name=None) data3 = pandas.concat(data2, ignore_index=True) # new_file_path = "合并.xlsx" data3.to_excel(new_file_path, sheet_name=sheet_n, index=False)category_list = [] # 寄存所有大类category_list_small = [] # 寄存所有小类class DataBase(Tools): def __init__(self): # self.tools = Tools() self.url = 'xxxxx' # 指标网站 self.headers = {'Connection': 'close'} # 申请头,防止ssl报错 # self.big_num = 3 # 第几个大类,从0开始 # self.small_num = 0 # 第几个小类,从0开始 self.net_xpath = '/html/body/div[5]/div/div[2]' # 网站所有大类的table xpath self.xpath_big = ['/html/body/div[3]/div[2]'] # 对应大类中的小类的table xpath self.xpath_small = ['/html/body/div[4]/div'] # 对应小类的内容table xpath def get_big_category(self): """获取网站中所有的类别,寄存列表中""" self.get_category(self.url, self.net_xpath, category_list, self.headers) print(f"1========={category_list}") def get_small_category(self, big_num): """获取某个大类中小类所有的类别,寄存列表中""" self.get_category(f'{self.url}{category_list[big_num]}', self.xpath_big[0], category_list_small, self.headers) print(f"获取的大类是: {category_list[big_num]} ,如下:") def get_small_content(self, i, small_num): """获取小类中所有内容""" print(f"获取的大类对应的小类是:{category_list_small[small_num]}") time.sleep(1) url_1 = f'{self.url}{category_list_small[small_num]}?page={i}' print(f"申请的小类的域名为:{url_1}") res = requests.get(url_1, verify=False, headers=self.headers) tree = etree.HTML(res.content) div = tree.xpath(self.xpath_small[0]) div_str = etree.tostring(div[0]) div_str1 = str(div_str, "UTF-8") time.sleep(2) return div_str1def main(): print("*" * 20) print("在运行前请所相熟下规定:\n" "1、依照网页显示,大类名称输出 数字-大类名称,如1-电阻器\n" "2、小类名称输出 数字-小类名称,如1-固定电阻器\n" "3、大小类前边的数字示意第几个\n" "4、如果输错不做判断,只是寄存的门路须要本人查找,倡议一次性输出正确\n" "5、!!!!!程序执行过程请勿敞开任何窗口!!!!!") print("*" * 20) base_file = os.path.dirname(os.path.abspath("test_database_final.py")) print("#" * 20) print("程序将开始执行,请稍后......\n" "程序曾经启动~\n" f"程序启动目录为:{base_file}\n" "初始化数据......") print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n" "1-电阻器 2-连接器 3-连接器支架 4-电容器 5-振荡器 \n" "6-晶体/谐振器 7-电源电路 8-开关 9-传感器/温度传感器 10-光电 \n" "11-光纤 12-二极管 13-电路爱护 14-存储 15-信号电路 \n" "16-电感器 17-端子 18-插座 19-微控制器和处理器 20-射频和微波 \n" "21-逻辑 22-晶体管 23-继电器 24-转换器 25-过滤器 \n" "26-触发安装 27-RC网络 28-可编程逻辑 29-电信电路 30-驱动程序和接口 \n" "31-放大器电路 32-耐热撑持安装 33-变压器 34-生产电路 35-电池 \n" "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") big = input("请输出大类的名称(如1-电阻器): ") small = input("请输出小类的名称(如1-固定电阻器): ") num = int(input("请输出小类的页数(如50,须要从网站查看): ")) b_n = int(input("请输出该大类对应的序号,共35个大类,从左到右数从0开始,比方0: ")) m_n = int(input("请输出该小类对应的序号,从0开始,比方0: ")) print(f"通过输出,咱们要获取的数据为:第{b_n + 1}个大类中的第{m_n + 1}个小类\n" f"即:{big}中的{small}") data_base = DataBase() data_base.get_big_category() data_base.get_small_category(b_n) for i in range(1, num+1): get_content = data_base.get_small_content(i, m_n) print(f"第{i}次获取:获取的数据开始写入文件,文件名为:第{i}页.html") file = f"{base_file}\\{big}\\{small}" if os.path.exists(file) is False: os.makedirs(file) data_base.write_html(file=f"{file}\\第{i}页.html", txt=get_content) time.sleep(1) data_base.html_to_excel(base_file, big, small, f"{small}sheet.xlsx", f"{small}.xlsx")if __name__ == "__main__": main() input('Press Enter to exit…')7 Pyinstaller打包间接应用以下命令打包:pyinstaller -F test_database_final.py打包后生成两个文件夹: ...

January 11, 2023 · 6 min · jiezi

关于自动化测试:WebUI自动化环境搭建

环境根本介绍环境阐明应用Python+Selenium+Webdriver集成开发软件列表1、Python(脚本语言)2、SetupTools、Pip工具(安装包管理工具)3、Selenium包(网页自动化测试)4、浏览器(IE、Chrome、Firefox)5、浏览器驱动(IEDriver、ChromeDriver等)6、Selenium IDE插件7、Firebug插件(获取元素属性,如id、name、xpath等)8、HTMLTestRunner.py(生成测试报告)9、xlrd、xlwt(对配置文件execl表格进行操作)非凡阐明本文应用的软件状况如下: Python(2.7.12/10版本)浏览器(Chrome)浏览器驱动(ChromeDriver)环境搭建装置Python(举荐应用2.7.x版本)exe文件运行装置即可,装置后环境变量中增加 python的装置目录。1、Python下载https://pan.baidu.com/s/1boIfCPD 明码:xlhg2、Python环境变量设置以下以我的Python装置目录为例:①顺次点击:计算机--邮件--属性,关上如下界面:②点击“高级零碎设置”,再点击“环境变量”,如下: ③在零碎变量中找到path,双击关上path,而后再门路的最开端退出:Python的门路,要以“;”隔开,即可:D:\Python27; D:\Python27\Lib; D:\Python27\Scripts;④验证Python是否装置胜利,开始---输出“cmd”,回车关上命令行,输出:Python,看到如下界面就示意Python装置胜利。 装置Python的SetupTools 1、SetupTools下载 https://pan.baidu.com/s/1skPKBq1 明码:5m97 2、SetupTools装置 下载 安装包,解压后在windows命令行中进入其所在目录下,应用:python setup.py install来实现工具装置。具体如下:找到解压后的文件,在空白处,按住“shift”并鼠标右键,如下图,点击“在此处关上命令窗口”,输出:python setup.py install回车装置即可 3、验证是否装置胜利 关上命令行,输出easy_install,如果看到上面的提醒,阐明你装置胜利 装置 pip 1、办法一 在装置setuptools后咱们能够通过上面的一个命令来装置pip:easy_install pip 2、办法二 下载文件后,pip-x.x.tar.gz文件进行解压,进入windows命令提醒下执行setup.py,如:X:\pip x.x > python setup.py install 没有报错示意装置胜利。切换到X :\Python27\Script,目录下输出: X:\Python27\Scripts > easy_install pip 没有报错示意装置胜利。 下载门路: https://pan.baidu.com/s/1dEWUEul 明码:dihq 装置 Selenium1、办法一下载selenium x.xx.x ,并解压把整个目录放到X:\Python27\Lib\site-packages目录下,进入 windows命令提醒下执行setup.py,如: X:\Python27\Lib\site-packages\selenium-x.xx.x >python setup.py install 没有报错示意装置胜利。2、办法二间接应用 pip install selenium命令来装置 装置Chrome浏览器驱动 1、下载 https://pan.baidu.com/s/1slJVq8H 明码:mjad2、设置浏览器驱动调用把下载的浏览器驱动放在退出谷歌浏览器的装置目录下,而后进行调用即可,如下: ①复制下载的chromedriver.exe,放在谷歌浏览器装置目录下(在谷歌浏览器快捷菜单上右键,点击属性,就能够关上浏览器的装置目录),如下: ②设置以上目录在环境变量中,在path的最初退出以上门路 验证Selenium是否装置胜利"""Author:NoamaNelsonDate:2019-11-08Purpose:验证Selenium是否装置胜利Function:关上百度网主页,在搜寻栏输出“1234567”"""from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timedriver = webdriver.Chrome() # 关上Chrome浏览器driver.get("http://www.baidu.com") # 输出百度网址time.sleep(1)driver.find_element_by_id("kw").send_keys("1234567") # 输出“1234567”driver.find_element_by_id("kw").send_keys(Keys.ENTER) # 回车进行搜寻time.sleep(2) driver.maximize_window() # 最大化以后窗口time.sleep(2) driver.set_window_size(640, 480) # 管制浏览器显示尺寸为640*480 time.sleep(2) driver.quit() # 敞开浏览器selenium-ide脚本的录制和脚本写作1、脚本录制步骤①关上火狐浏览器,在地址栏上输出被测网页的URL. ②菜单栏:工具-selenium-ide 关上后,在的selenium-ide地址栏输出雷同的URL. ③点击开始录制④在浏览器中进行相应的操作⑤点击完结录制,查看并回放Selenium IDE 录制的后果⑥脚本导出(抉择导出须要的语言脚本:Python2 /Unittest/webdiver )2、IDE录制脚本存在局限和问题①脚本不稳固,回放常常出错(局部操作捕捉不到)②浏览性差,不晓得自动化测试执行了具体哪些操作和实现什么性能。(正文)③如果web页面中的个别元素产生了变动,所有波及该元素的脚本须要批改。④元素的id或局部文字是动静的,即每次执行的脚本都是不同的。(参数化)⑤短少对理论后果进行判断的语句。(断言) ...

January 9, 2023 · 1 min · jiezi

关于自动化测试:Web移动端桌面端自动化测试工具或框架推荐

目前自动化测试堪称是人人在提,而且自动化工具和一些开源框架也是层出不穷。截止当初,我也接触了一些自动化的常识,分享下。 一、WebUI自动化1. 工具或框架 Unittest框架,Selenium+Webdriver+Python集成开发劣势: ①应用脚本间接来写,能够锤炼测试的代码能力 ②对于一个团队中人才的吸引也是有很大帮忙的 ③能够更不便的退出一些断言或者错误处理 ③对于一些数据处理可能更灵便些劣势: ①对测试人员的代码功底可能要求略微高一点 ②对脚本的健壮性要求比拟高2. 框架阐明 【对应的截图见步骤3-框架截图】 ①:截图性能。保留所有截图的图片,次要是用于简单的页面,开发成本大的时候,能够把运行过程中的某些页面截图,保留现场,不便问题查找;②:报告日志。把运行的过程和后果数据,全副保存起来,并且以Html的格局显示,比拟直观,利于问题剖析;③:测试用例集。次要是所有的测试用例的集中管理,测试用例名称必须以test结尾,这样unitetest能力辨认到用例;④:工具集。次要蕴含配置文件的调用、工程初始化、配置文件读取、邮件发送(设置对应的收发邮件人,能够把测试报告以邮件附件的形式发给我的项目组成员,不便大家查阅)⑤:业务单元模块。次要是要实现的业务单元功能模块,蕴含具体的业务性能和操作;⑥:框架入口。就是运行整个框架或者脚本的入口,此入口可实现一键操作就能够运行该工程下的所有测试用例。也能够独自制订运行某一条用例;⑦:配置文件。所有的配置文件,蕴含execl、conf、json等格局的配置文件。次要用于参数化,数据驱动,配置信息等。3. 框架截图 二、Web接口自动化1. 工具或框架 Unittest框架,Selenium+Request+Python集成开发劣势: 同WebUI自动化劣势: 同WebUI自动化 间接应用接口工具,如postman、Jmeter等2. 框架截图 ①间接用脚本的话,其实和UI差不多,如下: ②如果应用工具的话,当然也很不便,postman如下:①:接口申请的形式,如post、get、put等②:接口的URL③:接口申请的Body格局及内容 三、Web服务性能测试1. 工具或框架 LoadRunner+Nmon2. 工具阐明 LoadRunner: ①能够提供脚本录制; ②反对多种协定; ③局部版本是能够破解的; ④可设置多种测试场景; ⑤软件自身能够给出一些性能指标,如:谬误数、事务均匀响应工夫、每秒点击次数、吞吐率等 Nmon间接装在被测服务器上,能够监控服务的CPU、IO、过程、线程、内存等信息 3. 工具截图 LR: NMON: 四、挪动端自动化1. 工具或框架 UI自动化:Appium+Python/Java安卓零碎兼容性:Google CTS2. 框架阐明 次要内容能够查看如下图:APPIUM: ![在这里插入图片形容](https://img-blog.csdnimg.cn/20191028183652974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05vYW1hTmVsc29u,size_16,color_FFFFFF,t_70)GOOGLS CTS: 五、桌面端自动化1. 工具或框架 Ranorex+C#/VBS劣势: 抉择Ranorex,次要是因为能够进行破解,而且反对的平台比拟多,最次要目前的本人的我的项目是基于QT集成开发。貌似qtp不反对qt控件,具体没怎么钻研。2. 框架阐明 桌面端这个,后边会独自出一章比拟具体的内容,当做是本人的学习笔记了。

January 9, 2023 · 1 min · jiezi

关于自动化测试:研讨会回顾-中国企业在软件自动化测试方面的实践现状挑战及趋势探讨

2022年12月6日,龙智与软件测试自动化“领导者”SmartBear联结举办了主题为“如何通过自动化测试实现降本、增效与提质”的在线研讨会。此次研讨会中,龙智技术总监李毅为大家分享中国企业在品质和测试中面临的挑战,以及自动化测试实际的现状与瞻望。在线研讨会“如何通过自动化测试实现降本、增效与提质”内容回顾《中国企业在品质和测试中面临的挑战以及自动化测试实际现状与瞻望》(节选)演讲嘉宾:李毅(龙智技术总监)大家好,欢送加入龙智和SmartBear联结举办的网络研讨会。明天我会从以下四个方面分享:首先是中国软件测试行业现状剖析;其次是中国软件测试行业面临的挑战,为了应答这些挑战,引入了自动化测试;再者,看看自动化测试的现状与痛点;最初是自动化测试的将来倒退方向。 首先咱们看一下中国软件测试行业的现状。钻研报告显示,整个软件测试的市场规模在逐年稳步增长中。目前的市场规模曾经达到约2,000亿,并且增长速度十分快,每年的均匀增长速度靠近20%。 其次,咱们看到软件测试从业人员次要散布在中东部地区以及南部的一线城市,还有中部和西部等软件研发核心集中的中央。这和软件研发的发达水平放弃正相干,软件测试从业人员次要是集中在软件研发比较发达的城市和地区。 同时,咱们也看到软件测试人才处于紧缺的状态。软件测试的工程师非常紧缺,相较于寰球,中国软件测试人才的数量以及能力都偏弱,整体程度落后于寰球倒退。中国大概有150万软件测试从业人员,其中真正能担当起软件测试职位,真正做软件测试的不超过10万人,具备多年工作教训的测试人员还有余5万。国内30万的软件测试人才缺口每年还以20%的速度增长。从报告数据显示来看,中国软件测试人才缺口十分大。 软件测试面临的挑战随着软件的倒退,整个中国的软件测试面临着许多挑战。 首先是软件状态逐步多样化。大家熟知的PC、手机、平板都有很多应用软件,还有越来越多的智能设施、自助终端、可穿戴设施以及工业传感器,这些介质也集成了十分多的软件。这些多介质展现状态会给软件测试减少难度。 第二点是软件协定的多样化。大家相熟的互联网传统协定占比拟大,其余的例如物联网软件通信协议、工业互联网软件通信协议,包含车联网软件通信协议也纷纷涌现,这些协定自成体系,领有本人的协定内容。多协定为测试工作带来了更高的学习老本或者说进步了门槛,对于测试人员来说是一种挑战。 再者是始终提到的软件迭代速度放慢。刚刚SmartBear的何平康(Ken)老师分享了随着DevOps开发理念的广泛应用,很多互联网公司的软件迭代速度变得越来越快,国内也是如此。他提到,当初约40%的企业是以周为单位进行公布。而像亚马逊这样的国内大型互联网公司的迭代周期是每天屡次公布。这样的迭代速度给如何保障软件测试品质带来了十分大的挑战。 还有软件架构的复杂度。最近几年很多新技术一直被利用于软件设计,比如说大数据、人工智能、区块链和云计算等。这些技术可能还会叠加应用,使得软件架构越来越简单。在软件架构逐步简单的状况下,如何保障软件品质也是对测试人员的考验。 很多软件开发人员都有过这种经验。公司重大的我的项目需横跨多个部门和多个合作伙伴,要和上游合作伙伴建立联系,比方须要他们发送交易申请等,以及和上游的合作伙伴、渠道方沟通,须要他们提供后端的领取或金融类服务。像这样的大型软件开发我的项目,要做好测试协调,比方联结测试数据的筹备、联结测试环境的搭建,这类的协同比拟艰难。 软件安全性要求也为测试人员带来了挑战。无论是政治平安危险还是商业平安危险,企业都面临敏感数据和用户信息被泄露、窃取的危险。安全性测试的挑战不仅存在,并且工作十分艰巨。 最初是软件弹性和可靠性要求带来的挑战。所谓的弹性业务是指电商的促销流动,双11、双12等忽然减少的弹性业务,或是12306购票软件在国庆节、春节迎来一些业务爆发性的增长。为了应答这些弹性的业务增长,很多软件系统会采纳微服务的架构设计和基于云部署的基础架构。这样能够应答疾速迭代,以及轻易伸缩扩大,以应答忽然增长的业务所要求的机器资源。 正是因为这样架构设计,以及基础架构的部署架构,软件测试变得越来越简单。零碎间的调用,或是集群公布新老版本时,测试人员须要关注新老版本是否兼容了数据和程序,还须要保证质量。 可靠性要求次要针对局部行业,尤其是互联网、金融企业,它们须要7x24小时不间断提供服务。针对这种可靠性要求高的软件测试,咱们须要留神异样解决,以及限流、垄断等机制是否能够很快复原。或者通过切换劫难备份、数据中心、利用核心等实现不间断服务。可靠性要求对于测试来说也是很大的挑战。 自动化测试的现状与痛点正是因为上述提到的软件测试行业面临的挑战,所以企业在很多环节中引入了自动化测试,来进步软件测试的有效性和效率。 首先与大家分享自动化测试现状,Selenium 4处于基于web自动化测试的外围位置。它是一个开源的自动化测试框架,能够轻松应用Java、Python、C#等开发语言撰写自动化测试的脚本,以及针对多种浏览器撰写自动化测试脚本,达到自动化测试的目标。 其次,无代码/低代码的自动化测试工具再度风行。Selenium 4框架须要编码或开发技巧,为了打消学习老本,无代码和自动化测试工具流行起来。 而后是自动化测试在软件测试的各个档次都有体现。 大家所熟知的自动化测试金字塔模型,底层的是大量的单元测试,中间层是设施以及接口自动化测试,顶层是UI用户界面的测试。越上层的测试老本越低,无论是执行速度、稳定性还是解决问题老本。随着档次往上叠加,越下层效率越慢,发现问题后定位问题、解决问题的老本越来越高。所以倡议更多地把自动化测试投入到底层,会更加划算。 这只是一个指导性模型,具体投入多少、怎么样去投入,还是要和公司的人员组织架构状况,开发和测试的合作模式等多种其余因素相干。要联合人员的学习老本,历史上测试遗留的合作模式等再做考量。 再者,自动化测试成为DevOps开发实际的重要支柱。如果没有自动化测试的接入,那么想要真正实现DevOps是十分艰难的。方才提到的迭代速度需要,也要求将冒烟测试或回归测试阶段中的大量重复劳动由自动化测试来撑持,缩小工夫老本。 最初,人工智能、机器学习和自然语言解决这些前沿技术已被宽泛使用到自动化测试当中。 除了龙智技术总监李毅,还有SmartBear亚太渠道经理何平康、龙智总经理杨林晶与龙智技术工程师邱洁玉作为演讲嘉宾参加了此次研讨会,就以下主题进行了分享: SmartBear及其软件品质与测试现状调研龙智与SmartBear策略单干扩大DevSecOps解决方案TestComplete UI自动化测试演示及ReadyAPI简介咱们将会议进行了全程录制,立刻点击下方按钮获取完整版回顾视频。 点击此处,观看研讨会视频回顾

January 6, 2023 · 1 min · jiezi

关于自动化测试:研讨会回顾-自动化测试领导者SmartBear解析软件质量与测试现状调研

2022年12月6日,龙智与软件测试自动化“领导者”SmartBear联结举办了主题为“ 如何通过自动化测试实现降本、增效与提质”的在线研讨会。会上,SmartBear亚太渠道经理何平康深刻解读了《2022年SmartBear软件品质与测试报告》,并从寰球品质测试的现状与趋势动手,剖析为什么企业须要自动化测试。 在线研讨会“如何通过自动化测试实现降本、增效与提质”内容回顾《SmartBear及其软件品质与测试现状调研》(节选) 演讲嘉宾:何平康 大家好,我是SmartBear亚太区渠道经理,负责协调SmartBear与龙智这样的地区合作伙伴。 简略介绍一下SmartBear。咱们成立于2009年,是通过集资与合并组成的一个寰球公司,目前有14个寰球办公室,亚太区的驻点别离在澳洲和印度,在北美、欧洲地区咱们也有办公室。 与龙智达成单干,是因为SmartBear心愿为中国客户带来更好的解决方案以及本地反对。目前在寰球范畴内,咱们领有32000+企业客户。在开源框架方面,我须要特地提出的是,可能有很多人也听过Swagger、SOAP、Cucumber,最近,SmartBear收买了一家叫Pactflow的公司,专门做合约合同测试。SmartBear始终反对4种开源框架,除了市场上的商用工具之外,咱们也会为开源社区的开发人员提供很多常识,给客户提供不同选项的参考。 SmartBear的使命与愿景是心愿给各种规模的软件开发与测试团队提供他们所需的工具。SmartBear不仅是一个提供测试工具的厂商,更能为整个软件开发生命周期的不同阶段提供相应的解决方案。咱们在UI测试、接口测试方面有绝对应的解决方案,但整个生命周期不是只有测试阶段。在设计、建构,最初的部署、监督阶段,以及测试治理或代码审查局部,其实都须要给开发人员一些对应的工具。就像刚刚杨总提到的好马配好鞍,要有对应的工具去进步开发团队本人测试团队的生产力。 这是2020年的考察,数据局部来源于IDC做的寰球开发者预测(2020-2025)。往年,对于开发人员的需要在这个季度有所降落,大家在新闻上能够看到很多大型科技公司在改选,缩小团队规模。然而,对于开发人员的需要总体还是呈上升趋势,其中,开发人员当然包含了有测试责任的开发人员。 当初寰球有2,700万开发人员,依据预测,到2025年,也就是两、三年之后,会有靠近两倍的增长,你能够设想这个市场的重要性。目前,因为疫情关系,很多企业都心愿部署、公布得更快,给企业客户和个别消费者交付高质量软件。当初不仅要求软件开发的速度越来越快,工作量也越来越大。 业界对高质量软件的需要已达到至高点咱们来看另一个数据,谷歌公布的2021年DevOps状态考察。 首先是错误率,当然并不是每个企业均实用,因为企业规模不同,报错率跟出错率也不同,但均匀来讲,每1,000行代码可能就有100到150个谬误,错误率十分高。 其次,咱们预估接口测试和接口调用的市场至多会增长30%。57%的企业采纳了至多三种不同类型的接口。为什么是三种不同类型的接口?因为测试的形式不一样,反对的工具不一样,有些工具可能只反对特定协定的接口,这时就须要其余工具反对。这将造成两个或多个不同团队,或不同工程师之间沟通不良的情况,在测试阶段无奈无效会集。 最初一个比拟乏味的数据。大家留神这里不是6.57,而是6,570,顶级的软件团队从故障中复原的工夫比竞争对手缩短6,570倍!设想您明天与另一家公司竞争,要公布相似的产品,如果比竞争对手慢了几百、几十倍,他们就会比您更早地实现debug和谬误革除,更早地推出目前市场所须要的产品,也就会先你一步涉及市场。所以,这个流程对整个公司十分重要,品质不只是测试团队或开发团队的责任,更会影响到整个公司的业务。 SmartBear软件品质与测试现状调研,2022最新趋势与洞察SmartBear最近公布了《2022年SmartBear软件品质与测试报告》,报告的后果次要来源于咱们对科技业和金融业的考察。 本次演讲,我会筛选几个重要的局部出现,如果心愿失去具体的报告,请各位分割龙智获取。此报告经验了五个周期,考察了世界不同地区的开发、测试人员,共61道问题,都与软件品质无关。 《2022年SmartBear软件品质与测试报告》理解2022年软件测试行业的新兴趋势,以及世界各地的团队对于测试行业将来倒退的见解。分割龙智,立刻获取>>>给大家总结一下报告中的7大次要发现。 第一点,自动化测试覆盖率在去年(2021)年中降落后,于年底反弹,并放弃增速至今,其背地的起因可能在于寰球疫情情况的重复。 第二点,网页软件测试跟接口测试依然占比最大。目前,挪动软件的测试始终处于回升中。大家当初习惯应用手机,国内手机的挪动软件倒退曾经十分先进了,国外也在缓缓追赶。比方手机领取,或用手机解决业务等,所以寰球针对挪动端的软件测试也逐步减少。 第三点是公布频率,企业采纳按季度和年度公布频率的状况已大量缩小,更多的是按周、按天公布。 第四点是不足工夫。在这方面,咱们的很多团队,包含国内外交换过的客户都示意,目前工夫和人力的资源不足是阻止他们实现执行软件我的项目测试的最大挑战之一。 第五点是对于开发团队的责任。目前很多开发团队开始左移,提前帮忙整个我的项目团队做第一步测试,所以生成测试用例成为开发团队的重要责任之一。 第六点对于功能性测试,在接口生命周期测试方面,很多客户会询问我这个问题,那就是他们有很多不同协定的API,给很多不同厂家去应用,有些是同步API,有些是异步API,用于反对不同架构的接口。如何去做接口生命周期的综合测试,是很多企业遇到的痛点。 最初一点可能让大家比拟意外,那就是目前很多UI测试目前在云上执行,因为要跨浏览器或设施进行测试。我晓得很多亚太地区或国内的客户还是心愿在本地执行,把测试用例放到云上对于平安团队来说无奈承受。但在海内,越来越多的企业将他们的测试搬到云上,做跨浏览器、跨设施、跨运行零碎的执行。 除了SmartBear亚太渠道经理何平康,还有龙智总经理杨林晶、龙智技术总监李毅与龙智技术工程师邱洁玉作为演讲嘉宾参加了此次研讨会,就以下主题进行了分享: 龙智与SmartBear策略单干扩大DevSecOps解决方案中国企业在品质和测试中面临的挑战以及自动化测试实际现状与瞻望TestComplete UI自动化测试演示及ReadyAPI简介咱们将会议进行了全程录制,立刻点击下方按钮获取完整版回顾视频。点击此处,观看研讨会视频回顾

January 3, 2023 · 1 min · jiezi

关于自动化测试:软件测试自动化领导者SmartBear举办首场中国线上研讨会洞悉全球自动化测试走向探讨降本增效之策

2022年12月6日下午2:00-3:20,被Gartner魔力象限列为软件测试自动化“领导者”的SmartBear将联结其中国受权合作伙伴龙智举办首场针对中国用户的ZOOM在线研讨会,以“如何通过自动化测试实现降本增效与提质”为主题,探讨寰球品质测试的现状与趋势、中国企业面临的挑战以及自动化测试的最佳实际参考,并深刻解读《2022年SmartBear软件品质与测试报告》。 应用自动化测试工具,实现降本增效援用许多中国企业曾经引入了自动化测试工具,因为它可能保障产品质量、缩小测试老本、缩短测试周期、满足继续测试。立刻报名研讨会“如何通过自动化测试实现降本增效与提质”企业研发迫切需要降本、增效与提质华为要“活下来”,腾讯要“断舍离”。在经济逆全球化、新冠疫情重复等多重因素的独特影响下,宏观环境不景气,软件行业天然深受影响。面对“寒冬期”,以及本来曾经十分强烈的竞争环境,企业纷纷把活下来作为次要纲领。而在研发畛域,如何晋升效率、确保公布品质同时节省成本,曾经成为企业的重要课题。 自动化测试成趋势,市场持续增长企业研发部门须要缩短软件开发生命周期,能力疾速交付,最终实现降本、增效与提质。其中,自动化测试凭借保障产品质量、缩小测试老本、缩短测试周期、满足继续测试的构建需要等泛滥长处,越来越受到企业器重。只管大环境寒意阵阵,自动化测试市场在寰球范畴内仍然呈扩张趋势。Business Market Insights在近日公布的报告中称,自动化测试市场在2022年已冲破252.5亿美元大关,预计到203年将达到813.6亿美元,在预测期内的复合年增长率为17.3%。 如何胜利施行自动化测试国内有很多企业早已开始实际自动化测试,但他们选用了开源或自研的工具,或多或少遇到了工夫老本投入有余、人员缺乏经验、短少专家编写脚本、难以保护等问题。 同时,市场需求决定了对自动化测试工具的要求越来越高,例如UI测试须要在不同网页、浏览器或者手机型号上进行测试,所以光凭开源或自研的工具是不够的,企业须要怎么的测试解决方案和实际办法能力实现降本增效,省时省心? 2022年12月6日,下午2:00-3:20,退出龙智DevSecOps系列在线研讨会——自动化测试专场,您将深刻自动化测试畛域,并与行业专家——寰球出名的自动化测试厂商SmartBear亚太区副总裁李永陞、SmartBear中国战略性合作伙伴龙智总经理杨林晶以及龙智技术工程师邱洁玉独特探讨: 从寰球品质测试的现状与趋势,剖析为什么企业须要自动化测试。以及分享《2022年SmartBear软件品质与测试报告》;中国企业在品质和测试中面临的挑战,以及对自动化实际状况的察看;自动化测试最佳实际参考及演示。

November 28, 2022 · 1 min · jiezi

关于自动化测试:测试自动化中遵循的最佳实践

当初的企业从以往一年、一个月、一周交付,逐步转变为开始关注两到三天甚至一天内交付。软件自动化测试的呈现及其与手动测试的联合使得这种时长的交付成为可能。 及时的软件测试会发现问题,在性能达到用户之前对其进行纠正。软件测试是最沉闷的探讨之一,而软件旨在为其用户提供便当,并且是软件开发的一个组成部分。 然而须要遵循某些实际以最大限度地应用自动化测试。本文将探讨测试自动化中要遵循的一些实际。 理解自动化测试的阻碍想要建设测试团队,第一步就要理解是什么组织了这个团队转向自动化测试。很多状况下,须要学习一门新的编程语言是一大妨碍。一个团队能够学习一门新的编程语言并施行一个胜利的测试自动化我的项目吗?这些都是团队必须克服的阻碍。为了克服这种恐怖,团队能够尽量从小处着手,一步一步学习。 抉择适合的工具和框架次要思维是让整个团队都对心愿所应用的工具和框架感到称心。实际上,自动化工具的抉择起着至关重要的作用。抉择的工具能够是开源收费的,也能够是须要购买但具备所需性能提供更好反对的商业工具。与工具相干的性能应合乎须要测试的软件应用程序的测试要求。它最好能够与多种编程语言、操作系统兼容。 自动化什么首先,团队必须优先思考哪些测试要自动化。能够自动化测试≠自动化所有测试,自动化测试并不意味着它能够利用于所有事务。自动化简单和不罕用的测试是相对的失败,那不值得破费精力。另外,还能够创立一个对特定测试套件至关重要的浏览器和设施列表。 为自动化调配和分工不同测试的创立能够反映出 QA 工程师的技能程度。因而,确定每个团队成员的教训和技能至关重要。而后须要依据团队成员的技能来划分测试工作。例如,编写测试脚本须要深刻理解脚本语言,那么要执行这些工作时,就应该让 QA 工程师理解自动化测试工具提供的脚本语言。测试自动化打算的效率取决于依据测试计划、业余人员的专业知识和测试团队规模对人员进行正确的任务分配。 划分成更小的功能模块创立模块使项目经理更容易无效地跟踪测试覆盖率并理解缺点或谬误的确切地位。测试人员也更容易为较小的模块编写测试脚本。 自定义测试环境创立一个无效的定制测试环境只能通过生产环境的准确复制来实现。因而,测试环境须要包含用于开发具备定制配置的软件的测试自动化零碎和工具。 尽早并以更高的频率进行测试尽早且频繁地进行测试有助于显着缩小缺点或谬误的周转工夫。此外,在软件开发的不同阶段进行频繁的测试也使其可能以更高的准确性运行。 测试后果剖析的指标在不同的软件开发周期中取得正确的指标来评估和监控品质指标是无效软件测试自动化打算的另一个要害方面。 强调错误报告实现的错误报告的品质与周转工夫之间存在间接关系。此外,关于软件中存在的谬误的清晰、具体和精确的信息的可用性有助于更快地打消它们。 关注正文的重要性大多数时候,你不会是惟一一个致力于自动化的人。因而,通过对本人的代码保持良好的正文来帮忙共事和将来的本人。大家不是读心者,也不会了解他人的思维过程。因而,为了共事和将来的本人,有必要在绝对凌乱的局部增加十分具体的正文! 代码可重用性自动化中最常见的操作之一是为每个操作查找元素,例如单击、输出等。代码的可重用性很重要,因为为每个操作查找雷同的元素会浪费时间。相同,创立一次并一直在须要的中央重复使用雷同的内容就能够大大提高效率。 高质量软件或应用程序的交付取决于其软件测试打算的有效性和效率。因而,只有遵循某些最佳实际,测试自动化能力帮忙实现高质量的软件并缩短上市工夫。

November 25, 2022 · 1 min · jiezi

关于自动化测试:使用-Apifox-自动通关羊了个羊-1-万次牛逼大了

事件是这样的,女朋友昨天跟我吐槽说她闺蜜玩“羊了个羊” 刷到朋友圈榜前10,而她连第二关都过不了,曾经开始狐疑本人了。于是我拿起了她的手机关上了羊了个羊小程序,关上了Charles和Apifox,并且联合了Apifox的自动化测试性能不小心把她刷到榜一! 筹备工作抓包工具:Charles 获取token接口管理工具:Apifox 地址:apifox.cnCharles 抓包1.获取PC的IP地址 2.配置代理 这里以iPhone手机为例: 在iPhone的设置 -> 无线局域网 -> 局域网信息 -> 配置代理 -> 手动中配置代理,服务器输入框中填写PC的IP地址,端口输入框中填写Charles的代理端口(个别是8888) 3.装置证书 在浏览器中拜访 http://charlesproxy.com/getssl能够下载证书并装置。 更多对于Charles抓包配置能够参考:iOS的http/https申请——十分钟学会Charles抓包 4.关上羊了个羊小程序抓包 抓包cat-match.easygame2021.com域名下的接口,获取 token 能够看到以下界面 咱们将token信息复制寄存起来 Apifox 自动化测试弱小的网友把羊了个羊通关接口公布到Apifox平台,地址:apifox.cn 文档地址:yangyang.apifox.cn (才发现原来Apifox曾经上线了自定义域名性能 )Apifox在线运行:https://www.apifox.cn/web/project/1630884/apis/api-40162839-run接下来咱们依照文档指引 首先克隆这个Apifox我的项目 把上文抓包获取的token放到这里 而后创立一个自动化测试用例,循环调用接口。 这里配置循环1w次,肯定要让女朋友当第1! 实现上述操作后咱们执行这个测试用例 跑完我让她关上了小程序看了一眼,卧槽真的第1了! 地址:apifox.cn

September 21, 2022 · 1 min · jiezi

关于自动化测试:测试开发之自动化篇为什么是接口自动化测试

近年来,随着DevOps和麻利过程越来越宽泛地被采纳,软件测试、特地是自动化测试失去了迅速的倒退。 《软件自动化测试金字塔模型》将可自动化的测试自底而上分为单元测试、服务接口测试和界面自动化测试三个局部。正立的金字塔构造倡议咱们发展更为宽泛的单元测试,以期取得更早发现问题和更高执行效率带来的收益,但一直减少的单元测试也会显著进步开发资源的投入。随着趋于顶部更多的UI层面自动化测试的发展,咱们能够取得更高的累积测试覆盖率,但频繁的用户界面调整会带来更高的脚本保护工作量,自动化测试的投入产出比也将逐渐收敛。 近年来,随着挪动利用的遍及、微服务和Web前后端拆散模式的广泛应用,客户端的体现层交互同服务端的业务解决之间,在零碎架构层面做了更为清晰的逻辑划分。因而,在接口层面领有了更多的测试机会,借助接口测试,咱们能够: 模仿客户端用户操作引发的全副业务场景解决调用;领有更为明确和稳固的协定层输出到输入的对应关系;实现必不可少的向前兼容老版本服务API的回归测试;适当缩小过多单元测试带来的开发技术资源投入老本;躲避产品界面频繁调整带来的UI测试脚本的保护老本。专题目录

August 26, 2022 · 1 min · jiezi

关于自动化测试:测试开发之自动化篇禅道ZTF自动化框架设计

在后面的文章中,咱们介绍了自动化测试框架设计无关的内容。理论工作中,咱们通常没有必要从头开始造轮子,而是能够基于一些开源我的项目,实现适宜本人公司业务的测试框架。 禅道团队在设计ZTF开源自动化测试框架时,咱们心愿他能够满足以下几个指标: 学习成本低,一节课工夫即可上手;尽量减少对公司现有测试资产的侵入;免装置,下载后解压即可用;反对风行的各种脚本编程语言;兼容支流的自动化测试框架;丰盛的命令行参数,以不便在继续集成工具中应用;自带一个简洁、易用的客户端;反对各种支流操作系统;能够和公司现有研发管理系统很好地集成。ZTF做到了同编程语言的无关性,引入ZTF开发测试脚本时,您能够确保以往的绝大部分代码资产依然可用。相似风行的商业自动化测试工具HP QTP,ZTF举荐以文件和目录的模式,来组织测试用例的脚本,并应用Git等工具来实现脚本的版本控制。通过在脚本中编写正文,定义测试案例的编号、步骤和期待后果,以达到同禅道测试用例对应和同步的目标。 ZTF由Golang语言编写,交付的命令行和客户端工具都是无需装置、解压即用的可执行文件,可运行在支流的Windows、Linux和Mac操纵零碎上。客户端工具提供了脚本治理、用例同步、测试执行、后果剖析、报告上传等易用的自动化测试无关的性能。 近些年,随着继续集成和DevOps被越来越宽泛地承受。为了满足同Jenkins、GitLab CI等工具的集成,实现自动化的编译、打包、部署、测试、公布等一整套流水线作业,ZTF提供了丰盛的命令行指令,可驱动各种脚本语言、单元和自动化测试框架,实现业务的自动化测试,剖析后果并提交到禅道。 ZTF和禅道我的项目管理系统深度集成,在禅道端造成了对立的研发过程和品质度量报告,实现了用户心愿从繁多入口掌控包涵了软件测试和质量保证的整个研发流动的欲望。 目前,禅道和ZTF的近程测试执行调度的性能正在缓和的开发中。将来联合禅道ZenVM开源我的项目,能够提供按需启动、用后即焚的虚拟化测试环境调度性能。 像目前市场上的其余优良的开源自动化测试工具那样,ZTF并没有打算囊括自动化测试的方方面面,而是给与用户联合其余工具一起应用的可能性,以取得诸如RobotFramework关键字驱动、TestNG数据驱动和并发用户、Playwright浏览器驱动引擎等各自低劣而成熟的个性。 专题目录

August 25, 2022 · 1 min · jiezi

关于自动化测试:测试开发之自动化篇禅道自动化测试集成

禅道是一款国产的开源研发项目管理软件,基于麻利和CMMI治理理念进行设计,残缺地笼罩了项目管理的外围流程。依据国内权威测试网站51Testing的《2021软件测试现状调查报告》显示,禅道已间断七年在"罕用的测试管理工具”中排名第一。 在后面的专题文章中咱们认为,随着继续集成和DevOPS的风行,自动化测试曾经成为了研发流动中的不可或缺的一个重要环节。甚至能够说,没有成熟的自动化测试,继续集成和DevOPS都不堪称之为胜利。 本文给大家介绍如何将第三方的自动化测试工具同禅道进行集成,打造一个一站式的残缺研发治理平台。内容基于禅道16.5版本,更早的版本请参照这里装置RestAPI后持续。 首先,您能够将公司现有的自动化测试脚本和禅道中的用例相关联,据此能够统计禅道测试用例的自动化率。通过调用禅道testcases接口,能够在禅道和自动化零碎间,同步测试步骤和期待后果等信息。在禅道开源的自动化测试框架ZTF中,咱们反对ZTF自治理的测试脚本到禅道用例的映射和同步。 #!/usr/bin/env php<?php/**title=the simple demo for ztfcid=0pid=01. step1 >> expect 12. step2 3. step3 >> expect 3*/print("expect 1\n");print("expect 3\n");您能够应用禅道的继续集成个性,在流水线中执行单元或自动化测试。执行实现后,将输入的测试后果,应用ciresults接口提交到禅道,由禅道中集中地展现测试报告。在禅道开源的自动化测试框架ZTF中,咱们反对把脚本执行后果、单元测试后果和第三方通用报表工具Allure Report的报告同步到禅道中去。如果ZTF脚本正文中设置了禅道用例的编号cid,或者在Allure通过标注(正文)或代码的形式设置了单元测试用例的编号,具体的测试后果在同步后会挂到指定的禅道用例上。 在测试执行中产生用例失败时,能够应用bugs接口向禅道提交缺点。缺点的形容能够从ZTF脚本的执行步骤、期待后果、理论后果,或单元测试的输入信息中获取。具体能够参照ZTF开源我的项目的cb提交缺点指令的实现。 借助您研发管理系统中所维系的需要、用例、脚本、执行、后果和缺点等工作件之间的关系,您能够在项目管理层面,失去需要的用例设计覆盖率、用例的自动化覆盖率、某次迭代中的用例或需要的执行覆盖率等度量指标。 以下列出您可能须要应用到的禅道接口,供大家参考。 登录POSTapi.php/v1/tokens 列出所有产品GETapi.php/v1/products 列出产品的用例模块GETapi.php/v1/modules?type=case&id=<product_id> 列出产品测试套件GETapi.php/v1/products/<product_id>/testsuites 列出产品测试套件GETapi.php/v1/testtasks?product=<product_id>&limit=1000 依据模块获取用例api.php/v1/products/%d/testcases?module=%d 依据套件获取用例api.php/v1/testsuites/%d 依据工作获取用例api.php/v1/testtasks/%d 获取用例详情GETapi.php/v1/testcases/%d 更新用例内容PUTapi.php/v1/testcases/%d 提交测试后果POSTapi.php/v1/ciresults 提交缺点POSTapi.php/v1/products/<product_id>/bugs 上述接口,能够在禅道“文档->接口库”中找到其API的具体介绍,在ZTF开源测试框架我的项目中,咱们已应用Golang做了实现,具体可参考这里。 专题目录

August 25, 2022 · 1 min · jiezi

关于自动化测试:真人踩过的坑告诉你避免自动化测试新手常犯的10个错误

尽管从本人的谬误中学习也不错,但从他人的谬误中学习总是更好的。 作为一个自动化测试人员,分享常见的容易犯的10个谬误,能够从中吸取教训,引以为鉴。 一、必要时才自动化新人小王接到为Web应用程序自动化测试脚本的工作时,既快乐又缓和,因为这是他进入团队的第一个工作。第一印象至关重要,他也心愿给团队留下完满的第一印象。小王被要求自动化Web应用程序其中的一个模块,但他想体现得更好、做更多的自动化,于是抉择了另外的模块。然而后果是他撞进了死胡同,没有实现。其实小王想做些新尝试并没有错,错在没有征询前辈就试图自动化该模块。事实证明,这个模块用不着自动化,因为集成的零碎可能会导致多重误报。 我在新的自动化测试人员身上看到过很屡次这种状况。毕竟,好奇心能够引领后退。当学习自动化测试时,会想尝试在每个我的项目中引入自动化,但这是不必要的。可能有足够的能力自动化某件事,但这件事是否足够可行?尽管家喻户晓自动化能够节省时间和精力,但答复以下问题十分重要:“为什么要将此我的项目自动化?”失去了确切求实的答案后,再为自动化开绿灯。 二、定义范畴定义将要执行的测试的范畴是十分必要的。作为老手自动化测试人员时,总是试图测试所有的货色,并使每个测试都自动化。问题是只管能够胜利地自动化所有测试,但这既不实用也不可行。 首先,代码中有很多局部并不需要频繁的测试,但可能须要占用大量工夫为其开发框架或脚本。比方当测试一个网站时,自动化网站的每个元素并在其上运行脚本是没有用的,这不值得花工夫和精力。 其次,自动化所有的货色会减少测试自动化百分比,这会提供书面上很好的数据,让本人感觉实现了一项杰出的工作,然而实际上并非如此。 定义测试的范畴,只思考可能及时提供理论价值的自动化测试的可行代码,做出理智抉择。 三、精确抉择自动化测试工具自动化测试人员最常见的另一个谬误是没有抉择正确的自动化测试工具。一个我的项目蕴含许多专一于不同测试指标的组件。这些指标应分为不同的工具,以帮忙更无效地实现这一指标。 例如,如果想测试一个网站的API,最好应用Postman;但如果你想确保Web应用程序在不同浏览器间的完满出现,那么在线Selenium Grid将是自动化跨浏览器测试的最佳抉择。 四、与其余测试人员良好协调测试团队中有很多人,大家具备不同的技能。例如,有人可能善于业务测试,而其他人可能善于功能测试。然而,这不是不与他们探讨工作停顿的理由。协调是减速产品交付的要害。理解谁在做什么、应用什么工具、对测试自动化的编程语言是否称心。 这有助于帮忙排除自动化测试脚本的故障,万一事件不顺利,就会晓得该寻求谁的帮忙,理解团队也能够帮忙本人在须要的时候进行协调。正如在最初一点中所探讨的,一个我的项目可能须要不同的工具来实现组合的指标,能够让善于不同工具的测试人员施展本人的作用。 五、查看投资回报率仅仅将测试人员的工资作为与整个测试过程相干的老本思考进去是一个十分老手级的谬误。显然,状况并非如此。 例如心愿对网站执行跨浏览器测试,测试人员的工资当然是老本的一部分。但如果团队不晓得这种类型的测试或与之相干的任何工具,那么还须要通过培训来晋升他们的技能,这会产生额定老本。此外,还须要有适合的自动化测试工具或者框架来执行自动化浏览器测试。当然,也能够思考开源框架。 这只是一个例子。同样,在对Web应用程序执行自动化测试的过程中,您还会遇到其余投资。然而,他们必定会呈现。因而,应认真思考测试老本,并牢记您将取得的这些投资回报。如果回报率较低,则须要更改策略并再次计算。但最终,您须要在整个测试过程中取得良好的投资回报率。 六、适度依赖无代码测试尽管无代码自动化测试工具的学习曲线很短,很容易入门,但它们不会帮忙构建自动化测试人员配置文件所需的相干技能集。作为初学者,它们很好地帮忙老手起步,但随着本身技能的倒退,就会意识到它们并不像冀望的那样有用。如果决定用无代码自动化工具的智慧加入自动化测试人员的面试,或者始终独自用无代码自动化来自动化简单的web应用程序,那么将经验一段艰巨的时光。 可靠性是这类工具的另一个大问题。在一天完结的时候,须要理解代码,以便调试本人的自动化测试套件执行出错的中央。此外,如果面对一个简单的网站,那么就不会发现无代码自动化测试工具能够像你想的那样灵便。倡议不要回避代码,而是要熟练地学习它。最重要的是,这将是个人简历上的一大魅力。因而,作为自动化测试人员,请确保防止这种常见的谬误。 七、保护测试设计测试设计是将个别测试指标转换为无形测试用例和条件的过程。作为开发人员,咱们偏向于认为既然测试须要编码,为什么开发人员不能实现这项工作?如果是这样的话,那么测试这个岗位也就不存在了。 作为初学者,不了解测试设计的重要性可能是作为自动化测试人员最大的谬误。任何时候测试任何货色都是荒诞的想法。为了无效地进行测试,测试人员须要设计测试,而后对其进行编码。设计测试有助于创立有意义的测试,并使整个测试过程十分高效。 八、关注代码重用性测试用例对它所利用的代码并不是惟一的。在一个我的项目中,会呈现许多相似的组件,它们须要相似的测试设计和测试套件。比方,在应用Selenium进行跨浏览器测试时,咱们发现Web页面的四个元素都是输出字段,并且须要相似的测试用例。在这里,能够通过仅为第一个元素编写测试来复制粘贴代码。尽管这将给出预期的后果,但问题是未来开发人员可能会以某种形式更改元素。当初,要更改测试用例,就须要更改所编写的每个测试套件中的代码。所有的工夫都将节约在寻找和批改这些测试代码上。 为了防止这种状况,应该始终关注代码的可重用性。与其一次又一次地粘贴代码,不如用适当的参数结构一个函数,并在每个元素上调用该函数。这样,如果未来有任何更改,只须要批改函数,就能够开始了。 九、100%自动化是一个神话跟计算机领域经典的“人月神话”一样,这里的“神话”同样指不可能达到的天方夜谭。 不要置信这种神话,因为作为一个自动化测试人员,这将是一个重大的谬误。作为自动化测试畛域的老手,对于将自动化引入到我的项目中都会很兴奋。但这会让人犯错误,认为自动化测试能够齐全取代手动测试过程。随着工夫的推移,咱们将晓得这是不可能的。百分之百用自动化测试取代手动测试是一个神话,它永远不可能实现。 作为这方面的初学者,不要试图实现这样的指标。又回到第一条,只有在必要时才进行自动化,并且只对那些须要自动化的我的项目进行自动化。 十、遵循从头开始在测试时,会遇到不同类型的问题。须要设定指标并对这些问题进行分类。一种根底办法是用较小的模块而不是大模块开始自动化测试。 作为自动化测试人员,最大的谬误之一是开始自动化时应用更大、更简单的模块。可能不足对每个用户交互中波及的入站和出站流程的意识;甚至可能不足解决辣手的测试用例的熟练程度;可能最终会节约大量的工夫,但却满载而归。所以从小处开始,从根底的办法中减少自动化测试的覆盖率。 第一次踏入自动化测试畛域,不免犯一些谬误,这些谬误会造成工夫、金钱、精力的节约。心愿这篇文章能对自动化测试新人有所帮忙,帮大家防止踩这些不必要的坑。

July 21, 2022 · 1 min · jiezi

关于自动化测试:python自动化测试课程哪个好-线上培训机构柠檬班还不错

软件测试行业在我国的倒退工夫并不长,因而目前比拟常见的测试岗位人员也大都是手工测试,然而随着现在科技的倒退,自动化测试必然是将来倒退的趋势,它能够很好地节省时间老本和人力老本,进步工作效率。因而学习自动化测试曾经火烧眉毛,那么python自动化测试课程哪个好?  Python的自动化测试,学计算机语言,不仅要学习语法,最次要的是应用。把握了语法和软件的性能后,更要进到我的项目中去练习。在我的项目的练习过程中,再去把握和了解语言和语法。无论做什么测试,都要搞清楚我的项目的业务流程,而后进行录制,录制后,再依据非凡的状况,或者跑不通的中央,进行编程语言的调整。 至于哪里的课程好,小编依据身边敌人的反馈得悉,有个叫柠檬班的线上培训机构就还挺不错的。他当初自身是做技术客服的,因为疫情被裁员在家待业,而后刚好有个做测试的敌人给他说目前测试岗位人口紧缺,让学习下相干课程,转行做测试算了,之后就全网搜寻相干的信息,有一次在B站晃荡,看到了柠檬班华华老师的课程,内容夯实,知识点清晰,讲课格调深入浅出,人不知;鬼不觉就听进去了感觉还不错,就报了名,因为自身就做过3年技术客服,有一点底子,所以学得也还挺快的。  所以刚学完根底就去找工作,因为那时候疫情才完结,再加上各行各业都缺人,所以很快就找到了根底的测试工作。前面等工作稳固了点后,又立即报名了柠檬班的Python自动化课程,并且在课程上完后,他就快马加鞭地跳槽换了一份薪资更高的工作。 当初小编还不了解,明明前一个公司干的好好,为啥学了点货色就要从新换呢,但当现在理解到软件测试每个阶段的薪资差之后,我才明确,这学货色本就是冲着涨薪去的,有更高薪的中央不去那才是真的想不开。  

July 18, 2022 · 1 min · jiezi

关于自动化测试:如何选择合适的自动化测试工具

自动化测试是高质量软件交付畛域中最重要的实际之一。在明天的麻利开发方法中,简直任一软件开发过程都须要在开发阶段的某个时候进行自动化测试,以减速回归测试的工作。自动化测试工具能够帮忙测试人员以及整个团队专一于自动化工具无奈解决的各自工作,但艰难的局部就是抉择自动化工具。事实上,测试人员最常见的问题就是,如何抉择合适的自动化测试工具? 在本文中,咱们将具体探讨在抉择自动化测试工具时如何进行抉择。但在持续之前,让咱们强调一下自动化测试工具的重要性。 抉择最佳自动化测试工具的重要性如果想对我的项目进行胜利的自动化测试,辨认正确的自动化工具至关重要。为我的项目自动化测试抉择适合的工具是取得我的项目所需后果的最佳办法之一。让咱们以web利用程序开发为例,更好地理解自动化测试工具的重要性。 假如您正在为业务开发一个网站。当初,在一开始,如果你是在低水平上守业,你不须要任何自动化测试。所有测试都能够用手动办法实现。然而,当您的业务开始增长并开始取得宽泛受众的认可时,您可能须要自动化一些流程,如web利用的跨浏览器测试,以确保它为所有用户提供相似的体验。 假如正开发一个网站。如果初期是处在较低水平,那不须要任何自动化测试,所有的测试都能够用手工办法实现。然而当业务开始增长,并宽泛取得用户的认可时,就可能须要自动化一些流程,如跨浏览器测试这个web利用,以确保它为所有用户提供相似的体验。 此外,如果须要回归测试,那么也须要执行自动化测试。这就是为何抉择一个可能提供所有这些性能的自动化工具是必要的。 自动化测试工具的品种通常有三种类型的自动化测试工具可供选择。以下是每种类型的简要阐明: 1. 开源自动化测试工具开源工具基本上是收费的平台,容许您拜访和应用源代码,也能够批改其原始设计。应用开源工具没有任何老本或费用。 此外,开源工具能够用于测试过程的任何阶段,如测试用例治理、bug跟踪、调试等。当然,一般来说,与商业测试工具相比,开源自动化工具的性能更少。 2. 商业自动化测试工具商业测试工具是专门为商业目标而设计和生产的。诸多大型企业会抉择应用商业自动化测试工具,因为它们具备可扩大个性和来自技术团队的反对。 3.定制工具或自研工具对于小众测试项目,测试环境和测试过程有一些非凡的特色,这是开源或商业自动化测试工具无奈实现的。因而,测试主管须要思考定制工具的开发。这些类型的工具很少被多数组织应用,因为它们须要明确地开发。 抉择自动化测试工具时要思考的因素抉择正确的自动化测试设置取决于多个因素。每一个测试设置在开始时举世无双,随着我的项目的倒退可能演变成齐全新鲜的货色。抉择将随着我的项目规模而扩充的正确设置与抉择用于开发应用程序的正确技术堆栈等同重要。以下是影响决策的几个因素: 该工具是否反对您的测试流动,以及是否在市场上可用。哪个自动化测试工具最适宜您的我的项目需要和估算。团队是否具备应用该工具所需的技能,如果没有,那么在您购买测试工具后,谁将应用该工具。自动化工具对于您正在应用的我的项目环境和技术是否精确。该工具是否有收费试用版,以便购买前剖析其性能。随着我的项目的增长,扩大测试平台所波及的老本和开发工作是什么。保护和治理旧的测试以在我的项目中应用更新有多艰难。只管在抉择自动化工具时蕴含许多因素,但咱们置信这些是您在寻找自动化测试工具之前须要思考的根本因素。让咱们更深刻地探讨抉择最佳自动化测试工具的概念。 自动化测试工具的抉择规范无论您的我的项目对自动化测试工具有什么要求,总是有一种简略而无效的办法来为您的项目选择最佳的自动化测试工具。 1.全面剖析我的项目需要通过提供无缺点的产品来放弃我的项目的品质对于我的项目的胜利至关重要。自动化测试是进步任何我的项目品质以及减少测试深度和范畴的最佳办法。然而,在施行自动化测试之前,请分明地理解您的我的项目需要,例如: 我的项目类型是什么?它是web/桌面/挪动应用程序还是其余类型我的项目?我的项目公布后的范畴是什么?在流程开始之前,分析测试团队在代码语言方面的实力。一般来说,没有齐全好或坏的自动化工具,然而如果心愿该工具具备良好的ROI,这齐全取决于我的项目须要,例如理论须要自动化什么以及有多少测试用例须要自动化测试。 对于大多数我的项目,普遍认为手动和自动化测试对于web、挪动和桌面应用程序的测试都是必不可少的。因而,能够抉择可能与我的项目布局和测试管理工具无缝集成,而且学习速度快、使用方便的工具。 2.将现有的自动化工具作为基准进行比拟如果您正在应用像Selenium测试自动化这样的开源自动化工具,那么能够将其作为评估和确定我的项目最佳自动化测试工具的基准。为此,就须要理解Selenium自动化工具的长处和毛病。 例如,Selenium是一种开源的收费工具,容许用户测试其web应用程序和网站。它还为自动化测试提供了独特的性能,如记录回放以创立记录回放测试脚本,以及对多种语言的语言反对。然而,Selenium WebDriver并不能提供良好的客户反对。 Selenium是相熟编码技术并通过用户界面测试其网站的测试人员的首选。此外,Selenium套件的保护并不容易,尤其是对于常常监督手动和自动化测试的测试人员来说。应用Selenium可能面临的另一个挑战是web利用的浏览器兼容性测试,因为不可能跨浏览器、操作系统和设施的多种组合主动进行跨浏览器测试。 因而,抉择以后的测试工具作为基准并将其与决定购买用于自动化测试的工具进行比拟是至关重要的。 3.验证适宜我的项目的要害规范在确定我的项目的最佳自动化工具之前,须要思考以下要点: 对于任何我的项目成员来说,测试执行都必须简略,以便成员都可能在须要时高效地运行测试。此外,对于技术常识很少的非技术用户来说,这也应该是容易的。该工具生成的测试报告对于治理团队来说必须直观、简略,以便他们可能了解测试过程。自动化测试工具必须反对所有三种平台,包含web、桌面和挪动应用程序。测试脚本的开发和保护必须缩小人力和工夫资源管理。当波及到web应用程序的跨浏览器测试时,自动化工具必须反对多种浏览器和平台。反对关键字驱动测试,因为它充当了数据驱动测试框架的扩大。自动化工具必须反对我的项目所需的语言,以便测试人员能够轻松地编写代码。在抉择自动化测试工具时,技术支持和帮助是首要任务,请确保该工具能够取得继续的技术支持。如果蕴含其余性能是加分项,如屏幕截图测试、视觉外观测试、实时测试等。比拟不同自动化工具的这些关键因素,而后从中抉择最佳因素。 4.在购买工具前思考估算在根据上述规范比拟了不同的自动化工具之后,最初要确认估算。估算是要害的问题之一,这个最好了解,不论根据上述选的工具如何称心,超过组织估算的话都无奈实现。 如果组织已最终确定购买该工具,则倡议下载并应用该工具的试用版,以剖析其性能,以及是否值得投入这么多资金。在试用之后,如果发现该工具有任何问题,那么不要花太多工夫在它下面,而是寻找另一个自动化测试工具。只有确定工具的性能和性能时,才购买该工具。 陈哥卖瓜,自卖自夸,遵循以上各种规范,免去筛选自动化测试工具的懊恼,间接为您举荐禅道自动化测试解决方案。该计划由禅道项目管理软件+ZTF自动化测试框架+ZenData通用数据生成器形成,从测试框架、测试数据和测试环境方面解决测试治理问题。

July 7, 2022 · 1 min · jiezi

关于自动化测试:自动化测试框架AutoTestFramework及软硬件环境Alltesting泽众云测试

自动化测试框架AutoTestFramework( 简称:ATF)是能够提供自动化测试执行和治理性能的架构的综合自动化测试框架,能够集成根底自动化测试工具,用于组织、治理和执行那些独立的自动化测试用例,测试实现后统计测试后果。目前该框架能够集成的根底自动化测试工具有自动化测试工具AutoRunner,挪动端自动化测试工具MobileRunner,进而实现界面性能自动化测试、挪动端界面自动化测试。除此之外,该框架还能够建接口测试组件进行多种类型接口自动化测试。 AutoTestFramework面向的用户是所有须要进步软件开发品质的软件公司、软件内部企业,以及提供测试服务的部门。应用ATF能够帮忙用户进步测试效率, 框架融入多种用例设计技术,无效的帮忙用户在线用例设计,进而进步用例品质;ATF框架在执行工作时采取多种工作执行形式,能够帮忙用户对执行工作的资源进行正当调配;ATF框架的全面的缺点治理,使整个的测试生命周期得以欠缺,帮忙用户品质控制点上进行严格把关;全面的自动化测试报表能够帮忙用户对整个测试过程进行针对性评估,将测试行为具体指标化。 自动化测试框架AutoTestFramework硬件环境 Pentium 2.4GHz CPU 2G Memory 至多5G的硬盘空间 自动化测试框架AutoTestFramework软件环境 反对的操作系统: windows xp/windows2000/windows2003/windows2008/windows7/windows10 举荐的操作系统: Windows xp/window2003/windows7 JDK1.7以上版本 IE9.0以上的浏览器 零碎的分辨率,倡议应用1024*768

June 15, 2022 · 1 min · jiezi

关于自动化测试:AutoRunner自动化测试工具即将推出无代码化的新版本Alltesting泽众云测试

AutoRunner自动化测试工具,自2008年推出以来,在自动化测试畛域反对宽泛的各种技术框架,反对录制创立beanshell脚本,帮忙大量的客户实现了软件自动化测试。 随着技术的倒退,品质团队不再限于测试团队,很多运维团队、业务团队也退出了自动化测试的行列。于是,如何应用beanshell编写测试脚本,就成了一个跨不过来的门槛。编写测试脚本对于没有编写代码教训的人,太难了! 为了帮忙宽广不足编码技术的工程师发展自动化测试,AutoRunner行将推出无代码化的新版本!!!从此,实现自动化测试不再须要编写代码! 那么,咱们看看,AutoRunner的新版本为咱们带来了什么新的性能: 保留了录制性能。咱们依然能够通过点击“录制按钮”来录制你的操作,取得测试脚本。录制始终都是一个“很炫目”的性能,因为它自身就什么都不须要做,依照失常的操作就能够了。录制的后果,就是这个样子: 咱们能够看到,原来的脚本,变成了中文的形容,这下子大家都能够看懂了! 每一个操作,都由两行组成,第一行是咱们做了什么操作,比方“点击”、“输出”等,第二行形容对那些内容做了操作。 参数化。咱们晓得对于自动化测试而言,参数化是必然的技术。咱们在“参数设置”区域,点击须要进行参数化的输出或者输入内容,就会提醒你能够抉择一个参数。抉择实现,参数化就实现了!非常简单吧! 编辑自然语言脚本。尽管咱们还是把它叫做“脚本”,然而只是一种习惯。如果须要扭转程序,咱们是采纳“拖拽”的形式,即:选中你须要扭转程序的行(单行或者多行),而后鼠标拖拽到你须要的中央,开释即可实现。 如果咱们须要减少一个检查点,怎么办?咱们能够从“内置函数”面板上“拖拽”一个对应的查看点函数到自然语言视图面板上,而后设置对应的参数,就能够减少检查点了。 如果咱们须要从对象库中创立一个操作的步骤,咱们只须要把这个对象从对象库面板“拖拽”到自然语言主面板,就能够实现了。当你拖拽实现,会依据这个对象的类型主动给一个动作。比方你拖了一个按钮,动作默认就是“点击”。如果不是你想要的,那么能够通过鼠标右键点击,来从新抉择可能的动作,来扭转。 如果我的脚本比较复杂,比方有循环10次这样的操作怎么实现?咱们只须要在“控制流”合格节点上,拖拽一个“for循环”的节点过去,而后设置循环次数就能够实现循环了!也反对其余的循环,以及分支判断语句等等。 AutoRunner为了防止用户设置浏览器等操作,还会内置自带一个chrome的浏览器。用户在这个浏览器上能够做录制。执行的话,能够在任何一个其余chrome、firefox浏览器上都能够实现。 以上只是对行将公布的AutoRunner新版本做一个预览。这个版本的预期,就是心愿越来越多不相熟、不足编码技术的工程师等,可能进入自动化测试。自动化测试以往因为代码门槛,带来的“遥不可及”,行将变成历史。 敬请期待吧! AutoRunner产品官方网站:http://www.spasvo.com/autorun...

June 10, 2022 · 1 min · jiezi

关于自动化测试:AutoRunner自动化测试工具如何创建项目详细步骤Alltesting泽众云测试

一、AutoRunner自动化测试工具新建我的项目、导入我的项目 形式一: 新建我的项目,弹出新建我的项目对话框 如果我的项目限定了录制程序,为使限定无效,必须在录制前通过本性能运行录制程序,如果未执行本性能,录制被视为不限定录制程序。留神:限定了录制程序,用户只能对该程序录制,即便该程序运行了另一程序B,B程序也是不可录制的。 导入我的项目 形式二:在我的项目管理器空白区域点击鼠标右键,在弹出的菜单中选中新建/导入我的项目 ● 排除我的项目、删除我的项目、批改我的项目 办法:选中一个我的项目,鼠标放在我的项目上点击右键,弹出菜单 ● 批改我的项目 选定你要批改的项目名称,右键菜单批改: 点击批改,可对项目名称从新设置。 长处是,能够为没有指定录制程序的我的项目给予指定录制程序,或者给予指定好了录制程序的我的项目,对录制程序进行从新指定,和不指定操作。

June 10, 2022 · 1 min · jiezi

关于自动化测试:AutoRunner40自动化测试工具操作流程之菜单栏介绍泽众云测试

AutoRunner4.0自动化测试工具中的菜单栏如上图所示,主菜单别离蕴含文件、编辑、录制、执行、设置、工具、许可证、帮忙等菜单项,上面小编对AutoRunner4.0自动化测试工具中的菜单栏中的每一项做一个简略的介绍。 一、首先是文件菜单 如图所示,所有对工具脚本的治理操作都能够在文件菜单下实现,包含对脚本的新建,导入,保留,另存为,敞开,扭转工作空间,最近关上,退出等等。下边具体介绍各性能的用处。 ● 新建:可抉择新建我的项目或者新建脚本; ● 导入:可抉择导入我的项目或者导入脚本(导入的我的项目/脚本存在工作空间但不在零碎列表内显示时); ● 保留:保留脚本内容; ● 另存为:将抉择的脚本另存为; ● 敞开:敞开以后选中的脚本; ● 敞开全副:敞开所有关上的脚本文件; ● 扭转工作空间...:批改AR的工作空间门路; ● 最近关上:显示最近关上过的我的项目脚本名称;以上就是文件菜单下的性能介绍,上面说一下编辑菜单 二、编辑菜单 如上图所示,所有对脚本的编辑操作都能够在编辑菜单下实现,包含对脚本的撤销,重做,查找,替换,剪切,复制,粘贴,循环参数表,对象库,以及对属性、数据库、音讯框、矩形文本、文件文本、excel文件、正则表达式等各种需要的校验。 三、录制菜单 如上图标所示,录制菜单就比较简单了,只有一个“开始录制”菜单项,只需点击开始录制按钮,就能够启动脚本录制性能。 四、执行菜单 如上图所示,执行菜单蕴含三个菜单项,开始执行菜单启动回放脚本性能,在回放过程中如果工夫比拟长或是遇到问题须要提前敞开回放。以后行开始执行菜单指定的以后行启动回放脚本性能,同样,在回放过程中如果工夫比拟长或是遇到问题须要提前敞开回放。能够点击进行执行以提前终止。 1,以后行开始执行 能够通过执行菜单的以后行开始执行性能,实现从脚本编辑器光标所在行开始进行回放操作。如下: 五、设置菜单 如上图所示,设置菜单中蕴含了零碎、语言设置、扫描JDK/JRE、字号、QT程序、显示录制选项及网络许可模式等的设置,软件当初反对简体中文和英文和台湾繁文设置,在程序首次启动时,会依据零碎默认语言选择初始语言类型和字号,当用户手动抉择语言类别和字号时,软件再次启动才会失效。本软件自带JRE1.6,如果用户电脑上在装置了AutoRunner后又装置了其余的JDK版本,则能够点击此按钮,将AutoRunner自动化测试工具所须要的相应文件写入JDK中,省去了用户重装AutoRunner的麻烦。 1,对于零碎设置选项: 2,回放设置,可设置某些属性,如:设置播放速度,单个命令执行超时工夫等。 对于QT程序设置选项: 则可设置抉择须要被测的QT程序。3,对于网络许可模式选项设置: 可通过对服务器IP地址和服务器端口号的设置来设置网络许可模式。 六、许可证菜单 如上图所示,许可证菜单是AutoRunner4.0自动化测试工具新增的菜单,不便用户在软件中实现许可证的生成和导入工作,因为收费的许可证试用期为15天,当试用期过后再次应用软件后会提醒LIC过期的提醒,此时能够点击“申请许可证”菜单项,依据须要产生req文件,取得我公司为您配置的LIC文件后,能够点击“导入许可证”菜单项将其导入即可。 七、帮忙菜单 如上图所示,帮忙菜单为您提供软件应用帮忙和公司产品介绍。 举荐浏览: web自动化测试工具有哪些 如何学习自动化测试 自动化测试工具有哪些

June 7, 2022 · 1 min · jiezi

关于自动化测试:AutoRunner365自动化测试工具安装教程泽众云测试

一、第一步关上网址:http://www.alltesting.cn/jsp/...,找到AutoRunner365自动化测试工具,而后点击产品下载。 二、第二步关上下载的软件安装包开始装置产品,依照装置步骤操作实现即可,而后关上软件界面。 三、关上软件后,点击“注册”按钮,会呈现两种类型选项,依据本身状况间接点击注册Alltesting众测平台注册账号(或者测试工程师或开发者,都能够),注册实现即可。 第四步、注册实现后,回到AutoRunner365自动化测试工具产品登录界面,即可登录应用。 好了,本次AutoRunner365自动化测试工具装置教程就到这里,大家在应用过程中如有不明确的中央,能够在网站上与咱们的客服沟通哦。 举荐浏览: web自动化测试工具有哪些 如何学习自动化测试 自动化测试工具有哪些

June 7, 2022 · 1 min · jiezi

关于自动化测试:孙勇男实时视频-SDK-黑盒测试架构丨Dev-for-Dev-专栏

Dev for Dev 专栏全称为 Developer for Developer,该专栏是声网与 RTC 开发者社区独特发动的开发者互动翻新实际流动。透过工程师视角的技术分享、交换碰撞、我的项目共建等多种形式,汇聚开发者的力量,开掘和传递最具价值的技术内容和我的项目,全面开释技术的创造力。 本文为专栏系列内容,作者为声网音视频实验室工程师孙勇男。 什么是测试自动化框架测试自动化框架是为自动化测试用例或者脚本提供执行环境而搭建的基础设施。自动化测试框架为用户提供了各种益处,可帮忙他们无效地开发、执行和报告自动化测试用例。自动化测试框架更像是专门为自动化测试而创立的一套零碎。用一种非常简单的语言,也能够说框架是各种编码标准、测试过程、工作实际、我的项目层次结构、模块化、报告机制、测试数据注入等反对自动化测试的性能的极大交融。 自动化测试框架的类型当初咱们对自动化框架有了根本的理解,让咱们看一下当初风行的各种类型的测试自动化框架。这些框架可能基于对不同关键因素(例如驱动类型、可重用性、易于保护等)进行自动化的反对而彼此不同。 ● 基于模块的自动化测试框架 ● 仓库架构自动化测试框架 ● 数据驱动自动化测试框架 ● 关键字驱动自动化测试框架● 黑盒混合自动化测试框架 ● 行为驱动自动化测试框架 为什么选用黑盒混合自动化测试框架测试 SDK所谓黑盒,即提供给业务测试人员无需思考程序内部结构和外部个性的状况下,在程序接口输出测试的参数并抉择输入项,通过程序外部混合测试框架失去相应的后果,使用者只需关怀输出与输入。 场景设计初衷"自动化是为了更好的解放双手,谋求更高的效率"与互联网软件(app、web)的测试有所不同的是,简略来说实时视频SDK测试简直不须要点点点,根本是通过自研自动化工具实现端与端间通过自定义网络伤害后的视频通信,并采集端上 SDK log 作为测试产出数据,主观测试数据即主观测试后果。围绕并以此通过结合实际业务需要,去离"Code based automation",依据业务测试以平台化、模块化来提供解决方案,从而提供更多的测试维度、缩小反复体力劳动和效率瓶颈问题。 01 解决方案架构简述根底建设计划● 采纳 CI 集群+测试工具及自动化测试框架 +数据平台化 撑持 daily、发版测试、开发自测的测试工作 ● 具体模块性能简述 落地机房实景● 多套测试节点撑持整个视频主观发版业务线 02 基于自动化测试维度的思考简述逐步完善自动化闭环通常咱们在做自动化测试过程中通常先实现“执行测试”这一步骤,然而这只是绝对自动化的一部分,我集体了解的自动化闭环长处不局限于"输出便捷性灵、测试覆盖性全、测试避障性强、输入聚合性高",更多的站在整个链路逐渐冲破测试精准性和效率瓶颈。 上面是咱们在测试避障性和输入聚合性模块中的举例: 举例1 时段网络稳定影响在生活中应用聊天软件视频时,往往会因为网络突发稳定造成忽然的卡顿或者或者画面含糊,稳定幅度和工夫都具备不确定性,对于实时视频 SDK 的测试也会遇到这样的问题,尽管咱们尽力保障网络环境的稳固,然而在长时间的测试过程中也常常会遇到诸如此类问题,影响咱们的测试数据。 如何在测试过程中升高因网络稳定造成的数据误差? ● 利用漏斗式重跑筛选形式,简要构造如图所示 即循环求值保障在设定误差内无效升高因为网络稳定影响 SDK 版本测试数据。 举例2 版本数据稳定影响力采据在实现自动化测试后对于测试版本间或者与 release 版本各项体验指标数据上,个别是通过报告间数字的差别,但随着体验指标的减少,往往咱们更迫切需要多个版本准确到端到端上某个指标上的差异性感知品质可视化。 ● 后盾管理系统-主观报告模块 反对多版本报告比照的case、devices、体验指标等求值动静视图 ...

June 6, 2022 · 1 min · jiezi

关于自动化测试:手工测试用例与自动化测试用例的区别

随着测试技术的倒退,从手工测试缓缓转变成自动化测试,用例覆盖率,决定了测试颗粒度,也是测试质量保证的前提。自动化测试用例与手工测试用例之间有什么区别。 1、手工测试用例 a、能通过人为的逻辑判断校验以后步骤的性能实现是否正确。能较好的解决异样场景。 b、执行测试用例具备肯定的跳跃能力。 c、人工测试能够步步跟踪剖析,可能粗疏的定位问题。 d、次要用来发现产品缺点。 1、自动化测试用例 a、所有的判断校验都须要编写脚本来实现。 b、测试用例步骤之间须要关联关系。 c、次要用来保障产品主体性能正确残缺和让测试人员从繁琐反复的工作中解脱进去。 d、目前自动化测试阶段定位在冒烟测试和回归测试。 举荐浏览: 自动化软件测试是如何做的? 接口自动化用例设计的准则 自动化测试工具该怎么抉择? 测试项目都须要发展自动化吗?浅谈自动化测试的利与弊 自动化测试工具有哪些

May 11, 2022 · 1 min · jiezi

关于自动化测试:自动化测试的另外一个想法

传统的自动化测试工具,都是先编写测试用例、编写测试脚本,而后做参数化、检查点,通过批量执行来发现问题。 传统形式的问题在于: 1,对测试工程师要求比拟高。大多数的测试工程师并不会编写测试脚本,从而导致自动化测试发展比拟艰难; 2,测试的投入很大。咱们须要搭建自动化测试平台,一次执行海量的自动化测试用例,才会比拟有成果。然而这样做会导致投入很大。 3,测试用例的覆盖率有余。因为编写测试用例的代价比拟高,因而导致自动化测试的用例绝对比拟少,造成覆盖率有余。从实际的状况来看,往往只可能笼罩到次要的、正确的流程,对于比拟少的分支,比拟难以笼罩。 有没有其余的办法,来晋升自动化测试的范畴? 咱们晓得,自动化测试的劣势在于:1)执行的代价小,执行速度快;2)适宜海量执行用例,比拟可能笼罩到各个分支。然而,因为测试用例设计的问题,以及执行形式的问题,从而导致自动化测试应用的成果不佳。 因而,咱们是否能够参照appscan等测试工具的做法,来解决以上的问题?大略的想法是: 1,测试脚本依然须要,因为没有测试脚本,就无奈进行自动化执行; 2,参数化,以及在参数化之后,对各个输出字段的输出范畴进行形容和束缚; 3,容许用户定义各种规定,用来生成海量的测试用例; 4,海量执行。生成的测试用例,可能达到几万到几十万条。如果应用接口测试,可能须要执行几个小时,甚至十几个小时,执行所有的主动生成的测试用例; 5,可能主动断定是否执行失败。这就须要事后定义规定,对执行的后果,应用规定进行断定,来决定测试用例是否执行失败。 6,人工复核。人工来筛选和查看测试用例,看是否存在漏测、误报的状况。 咱们心愿通过这样的办法,来单个的执行,生成海量的自动化测试用例,并且同步进行执行。当执行实现,咱们也能够从中筛选出无效的、典型的测试用例,退出到罕用的测试用例库中,用来执行回归测试。 举荐浏览: 自动化测试的根本流程 接口自动化用例设计的准则 目前次要的自动化测试框架有哪几种? 自动化测试实在我的项目工作流程,5个重要阶段和产出物 自动化测试根本流程七个步骤

May 9, 2022 · 1 min · jiezi

关于自动化测试:自动化测试的基本流程

软件测试简略辨别能够分为手工测试和自动化测试。手工测试执行效率慢,容易出错。然而能够进行探索性测试和发散性测试。自动化测试则是和手工测试对抗互补。 施行自动化测试的根本步骤 首先,须要曾经实现了功能测试,此时测试版本稳固,属性、性能稳固。 依据我的项目的特点、抉择适合的自动化测试工具,并搭建测试环境 提取手工测试的测试用例转化为自动化测试用例 通过测试工具、代码实现自动化的结构输出、自动检测输入后果是否满足预期 生成自动测试报告 继续改良、脚本优化 举荐浏览: 企业抉择自动化测试计划的几点倡议 自动化测试工具有哪些?举荐两个好用的自动化测试工具 自动化测试根本流程七个步骤 自动化测试过程中遇到的零碎验证码问题怎么解决?

May 7, 2022 · 1 min · jiezi

关于自动化测试:自动化测试的生命周期是什么

 软件测试倒退到今日,曾经逐步标准化且能力更强,其流程每天都在倒退。测试人员的技术熟练程度对于整个测试阶段的胜利来说至关重要。测试不再意味着仅仅发现错误;它的范畴曾经扩充,从任何开发我的项目开始就能够看出它的重要性。 当议论起自动化测试生命周期(Automation Testing Life Cycle)时,大多数人认为这只是 SDLC 的一部分,但它远不止于此。有必要理解自动化测试应该是自动化测试策略的突出局部,并且具备生命周期。企业必须对其进行调整以进步其软件产品的品质。 随着持续推动,须要可能答复以下问题:什么是自动化测试生命周期,以及自动化测试生命周期中的有哪些阶段。 自动化测试生命周期的各个阶段 测试的自动化应该失去弱小的测试计划的反对。流程的预约义构造有助于设计测试计划并制订自动化测试工具的抉择策略,从而设置测试环境、设计测试用例并编写脚本。它进一步定义了测试自动化、测试筹备、施行、测试验证和报告的范畴。 自动化测试生命周期中的这六个阶段与软件开发周期并行运行。以下是各阶段: 阶段1:确定自动化测试的范畴 阶段2:抉择适合的自动化工具 阶段3:定义自动化测试的打算、策略和设计 阶段4:设置测试环境 阶段5:测试脚本和执行 阶段6:测试剖析和报告 1. 确定自动化测试的范畴 这是自动化测试生命周期的第一步。在此步骤中,测试团队须要确定自动化测试的可行性。可行性剖析对于每个阶段都是必不可少的,以查看其可操作性,并帮忙测试团队设计测试脚本。本阶段须要思考的事项包含: ●应用程序的哪些模块应该自动化,哪些模块不应该自动化。 ●哪些测试用例能够或须要自动化。 ●如何自动化这些测试用例。 ●思考到自动化与测试指标的适应性,抉择哪些自动化工具。 ●估算、施行老本、可用资源和可用技能。 ●测试用例和自动化测试可行性剖析应在开始测试自动化之前进行。 2. 抉择适合的自动化工具 这是ATLC最要害的阶段之一,因为自动化测试依赖于工具。要审慎地思考和抉择正确的自动化工具来自动化UI组件。抉择工具可能须要实现另一个档次的剖析。在抉择工具之前,应该始终牢记估算和老本。除此之外,团队还应剖析资源是否具备技术技能,以及工具是否反对我的项目所需的技术。此外,该工具应提供弱小的技术支持,以答复应用中可能存在的疑难。 3.自动化测试的打算、策略和设计 这是自动化测试周期中的另一个关键步骤,次要解释实现测试自动化策略的办法。这个阶段的次要步骤是决定应用哪个测试自动化框架。在为项目选择适合的工具时,必须记住软件我的项目所需的技术。因而,对产品进行深入分析十分重要。 在执行自动化测试计划时,测试人员为测试过程创立、测试环境的硬件、软件和网络需要、测试数据先决条件、测试时间表、谬误跟踪机制和工具等建设规范和指南。测试人员还负责决定测试体系结构、测试程序的构造和测试程序治理。 ●测试管理策略涵盖以下几点: ●测试管理工具将捕捉所有手动测试用例。测试人员须要收集手动测试用例并确定哪些须要测试。 ●必须进行彻底的钻研来确定测试框架并理解自动化测试工具的优缺点。 ●此外,测试人员还须要理解工具和应用程序之间的所有相干威逼、背景和依赖关系。 ●团队还必须在测试管理工具中为自动化测试用例构建一个测试套件。 ●未经利益相关者和客户批准,无奈施行或执行制订的测试策略。 4. 搭建测试环境 在此阶段,测试团队必须设置、跟踪和安顿测试环境。换句话说,这意味着在这个阶段,建设了一个机器/近程环境来执行测试用例。须要虚拟机是因为并非所有用户都应用雷同的机器来拜访 Web 应用程序。因而,咱们须要察看用户应用的各种设施、浏览器和版本。如果未正确验证其在不同设施-浏览器-操作系统组合之间的兼容性,网站成果跟用户看到的可能不一样。为了实现这一点,跨浏览器测试成为首要任务,以确保您的 Web 应用程序按预期提供杰出的用户体验。 此阶段须要具体布局以解决尽可能多的场景并减少测试覆盖率。在测试团队负责任的参加下,必须保护所有环境设置流动的正确跟踪和时间表。除此之外,设置测试环境、安顿网络和硬件资源、执行测试数据库清理、开发测试平台和环境脚本等所有都必须解决。 执行跨浏览器测试并不像听起来那么容易。它波及设置不同的浏览器、不同的版本、不同的设施等,这对团队来说是个不小的累赘。 保护浏览器实验室并不是一件容易的事,因为从头开始建设和保护基础设施老本昂扬,而且并非所有企业都能负担得起。因而,倡议采纳基于云的测试基础设施,为测试人员提供一个平台,以测试虚拟机托管的多个挪动和桌面设施的各种浏览器设施操作系统组合。 以下是测试环境设置的几个方面: ●确保有一个能够进行负载测试的前端运行环境,以查看其是否有能力解决高负载的Web流量。 ●有时,设置的测试环境没有提供与生产数据类似的数据,使产品容易受到生产环境中任何代码更改的影响。 ●须要进行测试的所有零碎、模块和应用程序的列表应该进行保护查看。 ●测试尽可能多的浏览器及其版本。 ●跨多个客户端操作系统进行测试。 ●须要用于登台环境的独自数据库服务器。 ●确保在不同网络条件下测试 Web 应用程序,以理解理论的网站渲染工夫和整体外观。 ●在地方数据库中保护用户手册、装置指南和其余文档也是为将来需要设置测试环境的要害。 5. 测试脚本和执行 配置测试环境设置后,下一步就是执行测试脚本。测试人员在开发测试脚本之前应该思考以下几点: ●依据我的项目要求创立脚本。 ●在整个过程中应用通用的办法。 ●确保脚本可重用、简略且结构化,以便任何人都能了解它们。 ●执行适当的代码审查和报告以取得更好的见解并在整个过程中放弃品质。 脚本开发实现后,须要牢记以下几点以确保脚本无障碍运行: ●依据测试用例,它们应该包含所有性能方面。 ●它们应该涵盖执行测试脚本的所有平台和环境。。 ●它们必须批量解决以节省时间和精力。 ●要始终练习编写错误报告,以防呈现任何性能谬误。 评估和记录测试后果以供进一步参考,并在 ATLC 的这一部分创立测试后果文档。 6. 测试剖析和报告 它是自动化测试生命周期的最初也是最要害的阶段,只保留数据而不进行剖析并没有帮忙。捕捉所有测试后果后,要执行所有类型的测试,测试团队剖析并辨认有问题的性能。这些报告有助于理解团队是否须要附加程序,并提供无关遇到的不同谬误的信息。筹备一份详尽的报告,并与在此阶段对我的项目至关重要的利益相关者、客户、员工和团队共享。这些报告对于理解 Web 应用程序在不利状况下的行为至关重要。 论断 毫无疑问,软件自动化测试是SDLC 不可或缺的一部分,是实现测试指标的最无效办法之一。但软件测试也有其本人的一组阶段,必须认真遵循这些阶段能力取得这种技术的益处。它容许应用任何可用资源在规定的工夫内实现测试指标。遵循自动化测试生命周期的每一步都有助于获得最佳后果,无需任何人工干预并缩小估算和时间表。精心布局的自动化测试生命周期会带来胜利的自动化测试。 ...

April 26, 2022 · 1 min · jiezi

关于自动化测试:自动化测试的生命周期是什么

软件测试倒退到今日,曾经逐步标准化且能力更强,其流程每天都在倒退。测试人员的技术熟练程度对于整个测试阶段的胜利来说至关重要。测试不再意味着仅仅发现错误;它的范畴曾经扩充,从任何开发我的项目开始就能够看出它的重要性。 当议论起自动化测试生命周期(Automation Testing Life Cycle)时,大多数人认为这只是 SDLC 的一部分,但它远不止于此。有必要理解自动化测试应该是自动化测试策略的突出局部,并且具备生命周期。企业必须对其进行调整以进步其软件产品的品质。 随着持续推动,须要可能答复以下问题:什么是自动化测试生命周期,以及自动化测试生命周期中的有哪些阶段。 自动化测试生命周期的各个阶段测试的自动化应该失去弱小的测试计划的反对。流程的预约义构造有助于设计测试计划并制订自动化测试工具的抉择策略,从而设置测试环境、设计测试用例并编写脚本。它进一步定义了测试自动化、测试筹备、施行、测试验证和报告的范畴。 自动化测试生命周期中的这六个阶段与软件开发周期并行运行。以下是各阶段: 阶段1:确定自动化测试的范畴阶段2:抉择适合的自动化工具阶段3:定义自动化测试的打算、策略和设计阶段4:设置测试环境阶段5:测试脚本和执行阶段6:测试剖析和报告 1. 确定自动化测试的范畴这是自动化测试生命周期的第一步。在此步骤中,测试团队须要确定自动化测试的可行性。可行性剖析对于每个阶段都是必不可少的,以查看其可操作性,并帮忙测试团队设计测试脚本。本阶段须要思考的事项包含: 应用程序的哪些模块应该自动化,哪些模块不应该自动化。哪些测试用例能够或须要自动化。如何自动化这些测试用例。思考到自动化与测试指标的适应性,抉择哪些自动化工具。估算、施行老本、可用资源和可用技能。测试用例和自动化测试可行性剖析应在开始测试自动化之前进行。 2. 抉择适合的自动化工具这是ATLC最要害的阶段之一,因为自动化测试依赖于工具。要审慎地思考和抉择正确的自动化工具来自动化UI组件。抉择工具可能须要实现另一个档次的剖析。在抉择工具之前,应该始终牢记估算和老本。除此之外,团队还应剖析资源是否具备技术技能,以及工具是否反对我的项目所需的技术。此外,该工具应提供弱小的技术支持,以答复应用中可能存在的疑难。 3.自动化测试的打算、策略和设计这是自动化测试周期中的另一个关键步骤,次要解释实现测试自动化策略的办法。这个阶段的次要步骤是决定应用哪个测试自动化框架。在为项目选择适合的工具时,必须记住软件我的项目所需的技术。因而,对产品进行深入分析十分重要。 在执行自动化测试计划时,测试人员为测试过程创立、测试环境的硬件、软件和网络需要、测试数据先决条件、测试时间表、谬误跟踪机制和工具等建设规范和指南。测试人员还负责决定测试体系结构、测试程序的构造和测试程序治理。 测试管理策略涵盖以下几点: 测试管理工具将捕捉所有手动测试用例。测试人员须要收集手动测试用例并确定哪些须要测试。必须进行彻底的钻研来确定测试框架并理解自动化测试工具的优缺点。此外,测试人员还须要理解工具和应用程序之间的所有相干威逼、背景和依赖关系。团队还必须在测试管理工具中为自动化测试用例构建一个测试套件。未经利益相关者和客户批准,无奈施行或执行制订的测试策略。4. 搭建测试环境在此阶段,测试团队必须设置、跟踪和安顿测试环境。换句话说,这意味着在这个阶段,建设了一个机器/近程环境来执行测试用例。须要虚拟机是因为并非所有用户都应用雷同的机器来拜访 Web 应用程序。因而,咱们须要察看用户应用的各种设施、浏览器和版本。如果未正确验证其在不同设施-浏览器-操作系统组合之间的兼容性,网站成果跟用户看到的可能不一样。为了实现这一点,跨浏览器测试成为首要任务,以确保您的 Web 应用程序按预期提供杰出的用户体验。 此阶段须要具体布局以解决尽可能多的场景并减少测试覆盖率。在测试团队负责任的参加下,必须保护所有环境设置流动的正确跟踪和时间表。除此之外,设置测试环境、安顿网络和硬件资源、执行测试数据库清理、开发测试平台和环境脚本等所有都必须解决。 执行跨浏览器测试并不像听起来那么容易。它波及设置不同的浏览器、不同的版本、不同的设施等,这对团队来说是个不小的累赘。 保护浏览器实验室并不是一件容易的事,因为从头开始建设和保护基础设施老本昂扬,而且并非所有企业都能负担得起。因而,倡议采纳基于云的测试基础设施,为测试人员提供一个平台,以测试虚拟机托管的多个挪动和桌面设施的各种浏览器设施操作系统组合。 以下是测试环境设置的几个方面: 确保有一个能够进行负载测试的前端运行环境,以查看其是否有能力解决高负载的Web流量。有时,设置的测试环境没有提供与生产数据类似的数据,使产品容易受到生产环境中任何代码更改的影响。须要进行测试的所有零碎、模块和应用程序的列表应该进行保护查看。测试尽可能多的浏览器及其版本。跨多个客户端操作系统进行测试。须要用于登台环境的独自数据库服务器。确保在不同网络条件下测试 Web 应用程序,以理解理论的网站渲染工夫和整体外观。在地方数据库中保护用户手册、装置指南和其余文档也是为将来需要设置测试环境的要害。测试脚本和执行配置测试环境设置后,下一步就是执行测试脚本。测试人员在开发测试脚本之前应该思考以下几点:依据我的项目要求创立脚本。在整个过程中应用通用的办法。确保脚本可重用、简略且结构化,以便任何人都能了解它们。执行适当的代码审查和报告以取得更好的见解并在整个过程中放弃品质。脚本开发实现后,须要牢记以下几点以确保脚本无障碍运行: 依据测试用例,它们应该包含所有性能方面。它们应该涵盖执行测试脚本的所有平台和环境。。它们必须批量解决以节省时间和精力。要始终练习编写错误报告,以防呈现任何性能谬误。评估和记录测试后果以供进一步参考,并在 ATLC 的这一部分创立测试后果文档。 6. 测试剖析和报告它是自动化测试生命周期的最初也是最要害的阶段,只保留数据而不进行剖析并没有帮忙。捕捉所有测试后果后,要执行所有类型的测试,测试团队剖析并辨认有问题的性能。这些报告有助于理解团队是否须要附加程序,并提供无关遇到的不同谬误的信息。筹备一份详尽的报告,并与在此阶段对我的项目至关重要的利益相关者、客户、员工和团队共享。这些报告对于理解 Web 应用程序在不利状况下的行为至关重要。 论断毫无疑问,软件自动化测试是SDLC 不可或缺的一部分,是实现测试指标的最无效办法之一。但软件测试也有其本人的一组阶段,必须认真遵循这些阶段能力取得这种技术的益处。它容许应用任何可用资源在规定的工夫内实现测试指标。遵循自动化测试生命周期的每一步都有助于获得最佳后果,无需任何人工干预并缩小估算和时间表。精心布局的自动化测试生命周期会带来胜利的自动化测试。

April 22, 2022 · 1 min · jiezi

关于自动化测试:接口测试系列之前端交互测试和后端逻辑测试

Testerhome社区爱好者合力编写了《2021接口测试白皮书》,并于往年2月底公布。本文节选自其中的的「平安测试」章节。点击链接可下载完整版《2021接口测试白皮书》。01 前端交互测试前端页面与后端代码之间的交互测试,能够了解为接口功能测试的一个子集。  测试筹备在进行交互测试前,首先要对前端性能有明确的认知,可能明确辨别:  什么性能属于前端页面逻辑性能 什么性能又属于前端与后端交互性能 前端性能与后端是通过什么接口方式进行交互 前、后端,单方有什么样束缚  在这里提到了束缚这个概念,在理论我的项目研发过程中,功能测试阶段所产生 的 bug,有很大一方面是因为前、后端沟通不彻底,需要确认含糊导致。在进入研发前,单方将各自 后续因为 bug 导致的反工工作量。  测试方法 能够应用抓包工具来进行交互层面测试,查看每个交互性能,对应的接口是否正确 (蕴含申请头、申请参数、响应以及其余束缚项),确保前端依照后端的要求正确地进行了调用。 在交互过程中,针对一个接口也会有多个场景,前端会依据不同的入参来调 用不同的场景,依据不同响应后果, 进行响应数据的改写,来取得不同响应,验证不同响应下前端的展现成果。在这里咱们也能够应用一些 不同场景的交互测试。  举荐 Mock 工具:  moco 框架:https://github.com/dreamhead/... easy-mock: https://github.com/easy Metersphere 一站式测试平台上也能够定义 02 后端逻辑测试接口后端逻辑测试仍然遵循“输出—解决—输入”这样的模式。用户输出一串数据,而后让这个接口或者让这个后盾性能来解决,查看输入后果跟冀望是否一 致。 接口测试用例设计应该满足需要文档,且对异样场景进行敌对解决;且测试 这个接口是否装置接口文档进行开发 测试用例设计思路从输出参数进行思考设计1)优先级-针对所有接口  1、裸露给其余零碎、第三方调用的接口2、零碎外部调用的外围性能接口3、零碎外部调用的非核心性能接口 2)优先级-针对单个接口 1、正向测试用例优先,逆向测试用例次之(通常状况下是这样); 2、是否须要满足前提条件 > 是否携带默认值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限度校验 > 参数数据类型本身的数据范畴值 限度校验。 3)设计剖析  从接口测试后端业务逻辑来讲,设计接口测试用例须要思考以下几方面:  1、是否满足前提条件 有的接口须要首先满足肯定条件,才可胜利获取数据。最常见的就是需 要用户登录信息的接口(用户 token) 逆向用例:设计不满足前置条件的用例。 2、是否携带默认值参数 正向测试用例:存在默认值的参数都不填写、不传参,必填参数都填写正确并且存在正 确的惯例值,这方面思考设计测试用例。 3、业务逻辑、性能需要 这个环节须要依据具体的业务需要,后果接口定义文档,可设计出多条 正向用例和逆向用例。 4、参数是否必填 针对每个必填参数,设计一条或多条参数值为空的逆向测试用例。 5、参数之间是否存在关联 可依据参数之间的互相关联关系设计一条或多条用例。 6、参数数据类型限度 针对每个参数类型设计与定义的类型不符的逆向测试用例。 7、参数本身的数据范畴值限度校验 针对所有参数,设计每个参数在数据范畴内为最大或者最小的正向测试用例; 针对所有参数,设计一条或者多条参数值超过或者小于数据范畴的逆向 测试用例;总结一下,如果以上几个方面思考全面的话,根本可笼罩以下三点: a、主流程测试用例:失常的主流程业务需要校验  b、分支流程测试用例:失常的分支流程需要校验  c、异样流程测试用例:异样业务场景的容错校验 从输入参数进行思考设计1、输入构造是否与接口文档定义的统一  2、输入的各个字段类型是否与接口文档定义的统一  ...

April 22, 2022 · 1 min · jiezi

关于自动化测试:接口自动化的关键思路和解决方案本文全讲清楚了

引言与UI相比,接口一旦研发实现,通常变更或重构的频率和幅度绝对较小。因而做接口自动化的性价比更高,通常使用于迭代版本上线前的回归测试中。 手工做接口测试,测试数据和参数都能够由测试人员手动填写和更新。 因而咱们在思考将接口用例实现自动化的时候,次要思路就是在单个接口申请的测试用例曾经实现的前提下,咱们如何解决以下问题: 业务测试场景会调用不止一个接口,下一个接口的申请依赖于上一个接口的数据,须要解决接口依赖问题token等鉴权数据有过期工夫,多个接口用到该参数,须要解决一次批改,多处失效的问题一个接口要用到多个测试数据做笼罩批量测试下,须要晓得某个接口返回的参数/数据是否合乎预期本文应用的自动化接口测试工具为Apifox,官网下载地址:www.apifox.cn间接下载注册装置后即可应用。接下来顺次解说下上述问题如何应用apifox解决。 注释一.接口传参举一个常见的场景阐明。查问接口申请获取数据的时候,须要带一个access_token的参数,而access_token参数须要另外的鉴权接口获取。因而须要鉴权接口将获取到的token参数传递给查问接口,查问接口能力发动申请。 另一个常见的场景是,用户须要先登陆,能力将选中的商品退出购物车。这个接口顺利发动申请依赖于上一个接口获取数据。手动测试的状况下,间接人工复制即可。 解决方案:须要将上一个接口返回的数据进行辨认提取出指标参数,保留为全局变量,下一个接口间接调用参数。 步骤:1)在apifox的接口tab-后置操作tab,抉择提取变量2)填写变量名称,变量类型和提取的表达式。提取表达式合乎json path 语法。在本接口数据中因为返回数据只有一层,因而采纳$.指标参数的形式提取。如果有多层参数,能够点击提取表达式旁边的问号,查看具体的json path语法。 获取到的参数以变量的模式存储,点击接口tab右上角的设置图标,能够查看到获取到的环境变量的值。接着就能够在下一个接口,以参数的形式调用: 二. 内部数据源一些post数据给后盾解决的接口,须要对上传不同的数据来测试接口的返回和异样兼容,一个接口参数须要屡次应用不同的数据。手动状况下咱们能够间接在参数里填数据,之后每次手动改。 但如果实现自动化的话,像上述的测试形式难以实现。罕用的解决方案是先编辑好csv文件,将测试数据一一写好保留,最初传入到接口申请参数中。Apifox在这个问题上提供的解决方案为:a.对于大量的测试数据,可在界面内填好测试数据集供接口每次调用;如果是大量的数据,才应用csv文件;更大量的数据则能够间接写在全局变量中。 以全局变量的形式导入和上节讲到的接口传参相似,区别只在于测试数据不是从上一个接口获取到而是的咱们本人填进去的。若是应用内部测试数据集,在测试治理tab>用例界面右侧,有一个测试数据的开关项,关上即可导入测试数据。当然首先须要先把用例导入到测试步骤中来。 如图所示,我曾经将OCRtest(文本辨认接口,性能为辨认图片上的文字)接口导入用例步骤中,启用了内部测试数据, 接着点击治理测试数据,跳转到测试数据tab:在这个界面开始 新建/导入测试数据。此处数据集名称是给测试人员辨认的,不会传入到接口里,一个数据集(1行)代表该次运行中所有须要传入的测试数据,列名作为接口参数,接口每次发动申请,会顺次调用该列下的其中一个值。 运行时,每一条测试数据都会当成一条测试用例来运行。 在下面讲到的“接口参数传递”和“传入测试数据”两个的思路是一样的,依赖于apifox提供的参数化性能,上传的数据参数以内部数据集的模式与接口分隔开来,将关键字段,一直变动的数据抽取进去独立于单个接口; 配置实现之后,接口每次运行都可能自行生成,传递和导入要害数据,如果须要批改,只须要在一个中央,一个文件内批量批改就可能全局失效。这其中有软件工程中的形象和封装思维,而接下来会讲到的断言是另一种思路。 三. 测试断言手工运行测试人员能够自行看接口申请是否胜利,数据是否失常,但在自动化实际中,咱们则须要代码帮咱们判断理论返回和冀望返回是否匹配。 http响应文本是高度结构化的,因而咱们的冀望返回无非是header和body中的响应状态码,关键字段,和要害值应该为某个值。只须要判断这些字段是否咱们想要的即可。 断言是专门用来验证输入与冀望是否匹配的工具,在测试实际中,咱们个别通过比拟理论输入值和输出值来校验的,即咱们要判断返回数据“是否存在”“是否蕴含”“数据是否等于”“文本是否等于”。 因而判断用例申请后果的实现计划可分为三个因素:判断对象,校验办法,校验值与期待值。 思路明确了,接下来看如何用脚本/性能实现。Apifox的断言性能面板(门路:接口tab>运行>后置操作>断言)的可断言对象包含了响应数据中的JSON,html和xml,header,cookie,基本上能够满足咱们的要求。 校验的办法为断言对象的值是否合乎测试人员规定的值范畴 被校验的值可通过json path 表达式提取 那么像对状态码的判断,某个确定返回值的校验这个,能够间接应用apifox提供的性能面板进行操作就行了。如果测试人员想要更加灵便的断言形式须要在后置操作里抉择自定义脚本。 对于不太熟悉脚本的测试人员,能够应用Apifox右侧提供的代码模板,点击就会增加到左侧的脚本编辑面板里,基本上只须要批改断言的期望值就行了,难度不大。 如果是对单个接口做测试,断言后果会间接在响应tab返回 如果是批量测试,在测试后果里会显示断言后果: 这样咱们构建接口自动化用例中的“后果判断”的问题就解决了。 四. 环境切换接口在测试服测试通过之后还须要一轮线上验证,测试工作才算实现。 通常测试服和正式服的的区别只在于前置URL不同。为了让线上验证环节不消耗太多反复流动,咱们这里能够在自动化我的项目开始构建的时候就先利用apifox提供的性能进行配置。将我的项目里所有接口共用的http协定和域名配置到前置URL中,接口地址只填资源门路和参数。 进行线上验证时,将参数配置和数据配置同步更新/切换为线上数据配置之后,只须要在运行环境里切换环境,就能够进行线上验证。 五. 批量测试1.用例组织模式apifox里,用例是以测试用例--用例组--测试套件的模式组织的。一个测试用例可包容多个测试步骤,一个接口申请为一个步骤。接口用例可间接从接口用例导入。如果设置和接口同步,那么接口一旦变更,测试用例这边也会同步变更。 一个惯例用例步骤如下,波及多个接口,接口之间存在参数传递,多个接口实现一个业务场景的测试。 接口用例导入结束之后,进行测试参数配置,点击运行即可主动运行。 2.用例执行程序 在一条测试用例里,接口申请的程序由上到下顺次执行,如果须要变更接口申请的步骤,只须要拖动接口挪动到新的地位下来即可。 3.测试套件运行一个接口用例实现一个业务场景/一个业务流程的测试,一个测试套件蕴含多条用例,可将雷同模块的用例集中到一起执行。这种用例组织模式和测试人员罕用的用例管理软件testlink的组织形式本质是一样的。这样只有点击运行,就能够一键实现一个业务模块的接口测试。 测试结束后会显示用例测试后果,上方面板为整体执行状况,下方分条列出具体用例执行后果。 如果须要导出测试报告,点击按钮可一键生成html格局的文件。 总结一.接口自动化的工具思维和测试思维 咱们这个接口自动化我的项目的搭建和执行根本都是围绕Apifox提供的性能进行的。和postman相比,用起来的感觉是特地棘手,用例的组织和测试的思维模式基本上也是几个大中厂都在用的,也合乎国内测试组的工作流程,程,是工具来适应人,而不是人去适应工具,在了解门槛和思维切换这点上老本大大降低。 ...

April 8, 2022 · 1 min · jiezi

关于自动化测试:跨平台进行iOS自动化新选择

什么是sonic-ios-bridgesonic-ios-bridge(以下简称sib),用于pc与ios通信的工具,以后版本蕴含以下根底性能1、跨平台启动wda2、app列表、装置、卸载、启动3、设施高低线监听4、设施详细信息5、主动挂载开发者镜像Github地址 只有你的ios有wda包,能够应用sib唤起之后,用appium等框架间接连贯对应url,就能实现跨平台(Linux、Win、Mac)自动化,能够不依赖mac和xcode(当然打wda到ios的时候须要xcode,后续跑自动化就不须要了) Sonic为什么思考替换tidevicetidevice是一个十分优良的工具,然而这边如果单因为tidevice让用户部署python环境无疑是微小的节约,以往不少用户部署Agent的时候都是在python环境踩了坑。而go语言打包的可执行二进制文件能够不须要部署额定的环境运行,并且go语言天生的性能与速度都是十分优的。援用网上一篇文章的话 Go 语言的特点表明它具备轻量级线程实现(Goroutine)、智能规范库、弱小的内置安全性,且可应用最简语法进行编程。所以,如果你本人是Sonic平台层面的用户,那么这个新技术带来的成果兴许是不痛不痒,最显著收益是部署时不须要py环境。如果你是python语言为主做iOS自动化,那么还是举荐持续应用tidevice如果你是java或其余语言为主做iOS自动化,那么能够思考应用sib,不要搭建py环境啦~ 尝试本人造轮子过后查找了大量usbmuxd、lockdown的文章,也有参考了tidevice的代码。用本人的形式实现了跨平台与usbmuxd的通信与iOS的lockdown通信,做出了 获取设施详情监听设施高低线设施端口转发,相似iproxy停顿还是挺顺利,接下来搞启动wda 发现宝藏前面着手进行启动wda这最难的性能的时候,testmanager等等一系列恶心人的逻辑让我痛不欲生,启动wda简直围绕了整个iOS协定走了一圈,偶然逛github的时候发现原来有小伙伴用go实现过ios通信了,叫gidevice,也有伴生了cli版。然而因为没有主动挂载开发者镜像的性能,还不能间接接到sonic外面,加上某些数据根底还是要联合sonic业务来开展。于是放弃之前本人做的轮子,间接基于gidevice的根底上,来做一层sonic的cli与辅助扩大 扩大性能如下几点: 1. 获取设施型号的中文名称,如iPhone14,5 -> iPhone 13整顿的映射表次要从apple的wiki爬取下来的 2. 自定义输入json数据格式与格式化格局这个次要用来联合sonic业务做的 3. 主动挂载开发者镜像这里参考了tidevice的做法,在仓库下载对应版本号的开发者镜像并进行挂载操作 func downloadZip(url, version string) error { if versionMap[version] != "" { version = versionMap[version] } _, errT := os.Stat(fmt.Sprintf(".sib/%s.zip", version)) if errT != nil { _, err := os.Stat(".sib") if err != nil { os.MkdirAll(".sib", os.ModePerm) } client := http.Client{ Timeout: DownLoadTimeOut, } res, err := client.Get(fmt.Sprintf("%s/iOSDeviceSupport/raw/master/DeviceSupport/%s.zip", url, version)) if err != nil { return err } defer res.Body.Close() r := bufio.NewReaderSize(res.Body, 32*1024) newFile, err := os.Create(fmt.Sprintf(".sib/%s.zip", version)) w := bufio.NewWriter(newFile) io.Copy(w, r) abs, _ := filepath.Abs(newFile.Name()) errZip := unzip(abs, ".sib", version) if errZip != nil { os.Remove(newFile.Name()) return errZip } } return nil}4. 设施离线后填充对应序列号到对应字段离线后只能拿到deviceID,这个id是连贯时候通过自增定义的,并不是设施的序列号,须要本人做解决 ...

March 5, 2022 · 1 min · jiezi

关于自动化测试:迷雾中的自动化测试体系建设

本文作者:程胜聪 - CODING 测试域产品总监在业内热火朝天的 DevOps 转型过程中,自动化测试始终是热点之一,毕竟提供疾速品质反馈是达成 DevOps 指标的要害。于是,作为测试畛域的“皇冠”,自动化测试的落地施行始终为人们所关注。然而落地当中产生了种种问题甚至是争执,经久不衰,无形中给自动化测试体系建设蒙上了层层迷雾,让人纳闷。上面咱们就一些踩过的“坑”进行探讨,冀望这些教训分享可能有助于揭开迷雾、看清方向。 要不要做自动化测试?在软件工程实践当中,测试绝对开发来说是个“辅助”的角色,而软件交付的产物也不用包含测试的产出。随着软件研发过程的复杂度晋升,尽管还是辅助角色,而且其价值依然难以独自掂量,然而测试对品质保障的作用曾经深入人心,以至于从 10 多年前开始,曾经没有人会挑战测试作为研发体系中根本角色的存在了。 然而相似的,作为“辅助的辅助”,测试畛域中的自动化测试又开始面临着同样的质疑:自动化测试到底有没有价值?这个问题在 10 多年前开始被频繁提出,而且难以答复。作为处于辅助位置的投入,人们必定会亲密关注其老本大小以及跟收益的比照。自动化测试最开始呈现,是为了代替重复性的手工操作,从而节约回归测试的人力老本,于是要获取正向收益的前提是执行的次数够多:自动化收益 = 迭代次数 x(手工执行老本 – 用例保护老本)- 用例编写老本 所以,在 DevOps 时代的频繁公布测试场景下,自动化测试的价值失去了充沛展示。要不要做自动化测试的问题现在曾经不会造成困扰,因为当下业内曾经造成了统一的意识:自动化测试是继续测试的根底,是 DevOps 时代中不可或缺的实际。此外,因为自动化测试的执行效率很高,体现进去的工夫老本劣势更是显著,甚至比老本劣势更能戳中这个疾速公布时代的痛点:因为不这样做的话,咱们会越来越难以应答短周期公布所须要的疾速无效验证。 有策略地发展自动化测试测试体系建设须要分层策略指引、接口测试往往最优先罗马不是一天建成的,为了达成自动化的指标,进行自动化测试体系的建设是须要投入资源和人力的。因此在具体落地过程中,咱们须要充分考虑 ROI,来设计符合实际状况的指标达成门路。自动化测试的确有很大价值,但不代表咱们应该无节制地投入到各种类型的自动化测试当中:自动化测试是为了验证既定逻辑是否合乎预期,在需要变更频繁的场景下,自动化代码的保护老本不可小觑。所以咱们须要适合的策略,来指引自动化测试的施行——金字塔模型。 不少人对金字塔模型的第一印象,是其给出在 3 种测试上的投入占比倡议:单元测试最多、接口测试居中、UI 测试起码,比方 70%、20%、10%。但更为重要的是,Mike Cohn 提出了对测试进行分层的理念,以及给出了每个层级的测试优缺点:越靠近用户应用界面的高层次测试,粒度越粗,效率越低,写的测试应该越少;反之越靠近底层代码的测试,粒度越细,效率越高,应该写的更多,也应该执行得更频繁。 而在实际当中,每个企业面临的场景不同,投入状况也不一样。比方现实情况可能并不是金字塔而是纺锤形状的,两头的接口测试占比最高。种种实际表明:在自动化测试建设的初期,接口测试往往是团队发展自动化测试的首选。这是因为接口测试兼备执行效率和体现业务价值两方面的长处,在这个畛域进行资源投入较为容易被技术团队和业务团队独特承受。而且因为接口定义的稳定性也较高,其保护老本也是可控的。所以绝对单元测试和 UI 测试来说,接口测试的投入产出比能够说是最高的。 接口测试以接口定义治理为根底,契约变更的同步揭示和 Mock 是要害接口测试通过调用接口来达成测试验证的指标,既包含零碎与零碎之间的接口,又包含同一零碎外部各个子模块之间的接口。接口测试的重点是查看零碎/模块之间的逻辑依赖关系,以及进行交互的数据传递的准确性。接口测试是黑盒测试的一种,却是最靠近白盒测试的黑盒测试,故而在较早发现缺点和执行效率上也靠近于单元测试,往往被称为“灰盒测试”。 接口测试的用例个别包含单接口用例和基于业务场景把不同接口集成到一起的多接口用例。单接口用例是根底,而且也是开发调试过程所需。业内比拟风行的是用 Swagger 进行接口文档治理,Swagger 预约义了支流编程语言相干的代码注解,能够在接口实现代码变动之后获取接口文档的更新,主动反映接口变更的性能对自动化用例的保护来说十分重要。 多接口用例则是测试人员依据对需要性能的了解所设计进去的,这部分用例就充沛展现了自动化测试的业务价值。因为这部分用例绝对简单,团队会须要为之筹备根底框架,甚至打造脚手架来进步编写效率。在实现上个别会包含接口标准定义、接口间调用的代码治理、测试数据的存储管理、执行调度平台、结构化统计报告这几个局部的能力。于是在业内也呈现了不少在这个畛域的效率工具,比方 Postman、ReadyAPI!、Robot Framework,以及“低代码”的平台 apifox、Eolinker 等。 有了接口的契约定义,就能够对未上线的接口实现 Mock(测试替身或者挡板),这样就能够不必依赖于具体的开发实现而构建场景测试用例,有利于测试开发之间或者不同开发者之间的并行合作。当初搭建 Mock 解决曾经有很成熟的框架,比方 Mockito、EasyMock 等,或者平台型工具 postman、apifox 都可能很不便的搭建 Mock Server。 总的来说,有了能够遵循的接口定义标准、加上接口变更的信息同步、以及提供对接口的 Mock 服务,在团队中就能够基于 API-first 的形式实现并行开发、调试和测试了。 高效编写自动化用例有没有“捷径”可走?现今零碎的性能越来越弱小,也越来越简单,写好自动化测试用例不是简略的事件,这一块也是不可漠视的投入。于是在自动化建设的实际中,咱们自然而然会谋求更高效的办法。谋求高效之路没有问题,只是如何能力防止走歪呢?上面咱们对一些常见的“提效工具”进行探讨,冀望能够对事实的实际起到借鉴作用。 编码方式向左,低代码平台向右?现今零碎的接口往往盘根错节,要做好接口测试,既须要对业务层面的零碎/模块之间的逻辑关系有深刻理解,又须要把握好技术层面的各种测试框架和相干编码技术。能够说,接口测试自动化的建设依然面临着较大挑战,人们天然会寻求高效的形式进行施行,相应的就呈现了对自动化用例低代码平台的需要。于是出于“对测试同学技术能力的事实思考”,研发 Leader 往往会“以负责任的态度”,寻求“入坑”去谋求低代码平台。低代码的概念在近两年如此之火,更是导致这个话题重复被提起。那么咱们在写自动化测试用例的时候,到底应该是遵循老老实实写代码的形式,还是应该大胆采纳低代码平台去疾速晋升覆盖率呢? ...

January 4, 2022 · 1 min · jiezi

关于自动化测试:耗时接近3个月肝出了一个页面元素权限自动化测试工具

1、前言公司的一个后盾管理系统我的项目比拟宏大,模块多,性能多,角色多,每个角色的权限不同,可进入的页面也就不同,页面中的按钮也不同,这样一个零碎如果遇到一次大的降级革新那么就须要投入大量的测试精力去测试每个页面及页面中按钮的权限是否正确,此时Leader就有想法了,能不能用node打造一个自动化测试的工具呢?,于是一个神圣而又艰巨的工作就派给我了。 因为之前没接触过自动化测试,忽然让我用node写这样一个工具,我必定是不晓得从何下手的,于是本能的去Github上搜寻看有没有相似产品,找到了以下这些,但都不满足我的需要: Autoline 国内大牛用Python写的一个工具,他把python的性能转化成了UI,而后咱们在自动化测试工具的治理后盾就能够一步一步增加测试步骤,但它有个致命问题--测试步骤不能调整程序,后面一步错了前面所有的步骤都徒劳Autotest_platform 一款基于 POM 模式开发的 Web UI 自动化测试平台UI Recorder UI Recorder是由阿里开发的一款面向多端的 UI 自动化录制工具,相似于Selenium IDE 但比Selenium IDE 更加弱小! 这个工具属实是弱小,最开始就想用它的,最初发现它还是不能满足我的需要我想要的成果到底是怎么样的呢,请看上面这张Gif图(我靠近3个月的成绩): 2、技术栈主栈:node.js+puppeteer其余依赖: lowdb 存储测试后果数据log4js 写日志desktop-screenshot 屏幕截图,只在启动浏览器时应用到,用来屏幕的宽高,在关上浏览器时依据屏幕大小设置浏览器大小image-size 获取图片大小,与【desktop-screenshot】联合应用cheerio 用来向测试报告模板的html中插入数据为什么抉择Puppeteer?简略来说就是:因为Puppeteer是Chrome开发团队开发保护的并且基于nodejs的包 Puppeteer的性能: 能够操作鼠标、键盘输入、点击事件等行为能够向页面插入js、css代码能够向页面执行函数(任何页面中js能执行的代码都能够执行)能够拦挡页面中的申请能够截图(只能截取以后页面)3、难题怎么获取页面的数据? 如用户信息、页面中的列表数据等怎么监听页面跳转了? 比方正在执行A页面中的测试,忽然认为的跳到B页面去了,此时应该完结A页面的测试怎么判断元素是否存在?怎么操作dom?怎么点击元素?解决了上述问题,接下来就是如何编码的事件了。 4、实现原理待我编写完开发手册后再来编写,嘻嘻... 5、测试报告、日志测试报告(测试报告是用html写的,比word、excel更灵便): 日志

December 23, 2021 · 1 min · jiezi

关于自动化测试:浅谈自动化测试

引子很多敌人始终从事功能测试,想要学习自动化测试。但因为网上的材料大多表面化,内容雷同,短少联合我的项目的实际,看完之后仍对自动化测试较为含糊。鉴于此,在本篇内容中, 先介绍自动化测试人员能力阶梯,目标是让初学者明确成长路线。随后举例一个自动化我的项目,来阐明在面对一个理论业务测试需要时,是如何设计、实现、落地并产生价值的。 一、自动化测试人员能力阶梯根本自动化测试工具利用可能应用相熟的语言,编写简略的测试脚本、应用罕用的自动化测试框架自动化测试模块开发自动化测试框架设计定制零碎业务级自动化计划如上所列,自动化测试人员的能力阶梯分为五个阶段,自上而下能力要求递增,大家依据本人的能力进行对标,可明确本人下一步晋升的方向。 留神:下面内容是我的敌人总结而成,与“业界规范”等标签无关,内容属于阅读者沟通交流领域 二、一个误区以前面试的时候,会问面试者一个问题:您的接口自动化测试是怎么做的? 有一些答案是这样的:postman呀。 持续问:假如您公司的产品是T3出行,当初有一个测试需要,咱们要求在任何新性能上线之前,咱们的 叫车→ 乘客下单 → 司机应答 → 实现订单 → 订单核算 → 处分发放 ->领取 这一外围业务要齐全自动化回归,这个需要如何通过postman实现? 答复:把下面波及的几个接口串联起来就行了。 持续问: 1)订单数据是从kafka生产而来,存在漏单状况 2)处分发放为每天定时计算 3)领取接口返回胜利,但仍存在用户未收到的状况 针对上述理论业务场景和实现,如何通过postman实现保障? 答复:唔~ 读到这里,敌人们应该能了解到我想表白的意思:postman无疑是一款十分便当的接口测试工具,它有肯定的接口串联能力和肯定的断言能力。 暂且不从自动化测试要求的低耦合、高灵便、高保护等几个方面来谈,上述举例的业务流程较理论业务曾经是简化过的,单用postman工具曾经无奈保障。 postman是一款十分便当的接口测试辅助工具,但 postman利用 != 接口自动化测试 心愿打消 工具利用 == 自动化测试,这一个误区。 三、实际我始终感觉最好的学习形式,就是实际。当初拿我以前做过的一个我的项目,以 业务背景 -> 测试痛点 -> 解决抓手 -> 计划选取 -> 方案设计 -> 我的项目实现 -> 我的项目落地和产生业务价值 这一思路来给大家举例。 1、业务背景广告投放是营销业务的伎俩。广告投放的曝光渠道流量最大的app是微信、抖音、今日头条等等。投放频率在顶峰周期会打高一周三次。 这代表着,测试人员如果要保障投放成果,须要在每次上新之前测试 var 次 ,var = 数个投放渠道 乘以 数个手机品牌 乘以 每个品牌不同手机型号 靠人工来测试var次,无疑是低效的。对测试人员来说,这种反复的、大量的、机械的测试是很头痛的(我个人感觉是很苦楚的) 这时候,大家天然会说:这用市面上的一些UI自动化测试工具,不就能够解决吗? 上面要介绍的痛点就在这个疑难中。 2、测试痛点在说痛点之前,先简略谈一下UI自动化测试工具的底层实现原理,获取页面元素坐标、path -> 模仿用户点击元素 -> 判断断言 -> 生成后果 ...

December 17, 2021 · 1 min · jiezi

关于自动化测试:拍乐云测试自动化实践

古代软件工程和麻利开发强调拥抱变动,除了对软件系统设计和实现的高质量要求之外,继续集成(Continous Integration)也成为高质量交付的重要一环,这对于包含测试工程师在内的开发团队而言极具挑战性。本文将分享测试工程师如何拥抱将来,与时俱进,继续晋升自我涵养。PART 01 测试工程师面临的新挑战麻利开发概念从提出到当初曾经有二十年左右的历史了,它的外围是“疾速响应,继续交付价值”。软件开发过程十分强调人的重要性,开发团队要能做到团结合作。人与人的交换、沟通要面对面,而非制订具体的文档,按预约的打算逐个进行开发、测试。变动是麻利开发过程中惟一的不变。 开发疾速提交可测试的代码,也必然要求测试可疾速地验证提交代码的可用性及稳定性,简略的手工测试曾经无奈满足需要了。 在麻利初始,测试开发阶段环境的保护部署根本是QA或开发自行实现的,这些工作也根本都是手动去操作的。同时,每个Scrum团队所偏重的点不同,因此容易疏忽其余服务,导致测试环境与线上运行环境有些许的差别,上线后就可能存在兼容性或完整性的问题。 在整个开发及测试阶段,咱们要不停地反复一些工作,如批改bug、部署新包、验证bug、记录新bug等,全线环境也要放弃同步的批改部署。由人手动去部署环境可能会破费比拟多的工夫,也可能会因为人为操作失误引起不必要的问题,造成整个团队无奈进行工作而影响我的项目周期。 咱们面临的问题是:1、跨域跨部门单干,而不只面对面;2、如何提高效率,做到疾速交付;3、如何升高人的干涉升高出错的可能性。 PART 02 DevOps的利用咱们认为,DevOps可解决如上问题。 什么是DevOps?维基百科给出的定义是:DevOps(Development和Operations的组合词)是一种器重“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通单干的文化、静止或常规。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、公布软件可能更加地快捷、频繁和牢靠。 DevOps外表上是开发与运维的联合,理论它是一个过程、办法与零碎的统称。 DevOps过程周期: 现实的DevOps周期开始于:1、开发编写代码;2、自动化编译出包并主动部署到测试环境;3、执行自动化测试用例并公布;4、自动化部署到产线环境。 很显然,DevOps过程中十分强调构建、部署和测试的自动化,在DevOps周期中应用继续集成工具、自动化测试工具。 在DevOps中测试角色也会发生变化: 传统模式下,测试人员的次要工作是执行他们的性能及回归测试。在测试人员正式验收结束测试包前,构建人员个别会跟测试人员坐在一起工作一段时间,在DevOps中这将会产生扭转: 1、由原来的手工测试转为自动化测试,要尽量将所有的用例都自动化,并可达到100%代码笼罩;2、要确保测试环境与产线环境统一,并可自动化部署;3、测试前工作,清理工作及测试后工作都已自动化并可调配到继续集成的过程中。 DevOps中须要高度的合作,各个角色职责边界也变得含糊,激励每个人作出本人的奉献,开发人员能够配置部署工作,部署人员能够增加测试用例到QA的用例库中,测试人员能够配置批改DevOps链路中的用例。 当初及将来对测试人员的要求会越来越高,简略的黑盒测试将无奈达到冀望。 DevOps是将来,而自动化是DevOps胜利的外围。作为一名测试人员要把自动化作为职业倒退的重要方向,专项常识加上自动化技能才能够更好地服务于产品的疾速迭代。 PART 03 自动化测试实际从下面的剖析咱们能够看出自动化测试在整个产品周期中起的作用,那么咱们应该如何发展? 自动化测试金字塔 从图能够看出,除了单元测试外,API级的自动化测试能够达到比拟高的测试覆盖率。所以咱们从API测试自动化动手,一是利用它咱们能够实现场景用例,更靠近用户的应用;二是绝对UI自动化测试,它更稳固。拍乐云的测试工程师开发了一套API自动化测试框架,咱们用该框架做如下自动化的开发: 1、性能用例自动化2、模仿用户调用接口习惯3、性能测试4、品质测试 拍乐云API自动化框架 拍乐云是为用户提供实时音视频服务的,咱们志在为用户提供易用、高质量的产品。咱们不局限用户调用接口的形式,用户可按本人的习惯及了解去应用服务,这对产品的鲁棒性要求就更高。 咱们的测试工程师基于对外API层来做自动化测试,通过理解产品接口就模仿用户应用习惯方面设计接口测试用例,次要从如下几个方面思考: 1、变动接口参数2、变动接口调用程序3、变动接口调用条件 自动化的目标之一是节俭人力老本,利用接口测试来做性能用例的自动化也是这个目标。在这个场景下,咱们次要侧重于回归测试用例。随着性能的减少,回归的老本会越来越高。故性能回归集也会随着性能的减少一直的扩充。咱们把回归用例集分为两局部: 1、根底用例,保障基本功能2、具体用例集,包含更多的性能逻辑 这两局部各有不同的作用,根底用例用于构建pipeline,验证新代码是否影响基本功能的应用,这样既不脱漏性能,又可减轻pipeline的负载。具体用例集用于验证更简单的用户应用场景,次要利用于测试环境的功能测试,以达到肯定的覆盖率,进一步保障性能的可用性。 在咱们的日常公布中,会有肯定的性能测试,如媒体服务器的并发能力,音视频在特定设施上的性能体现等。性能数据是产品稳定性的体现。性能测试的重点在于场景定义,在场景肯定的状况,确定性能瓶颈。如一个Media Server能够反对多大规模的大会;肯定配置的MediaServer能够同时开多少个六人会议,这六人中一人发送一路720p及接管5x180p ,其他人都发送1路180p接管1路720p+4路180p等,咱们会依据本人的需要获取相干场景的性能数据作为基准,也会依据少数用户理论应用场景或用户需要来定义性能场景。 六人会议一人发送720p+接管5路180p,其余五人发送180p接管1x720p+4x180p 媒体服务性能指标咱们会关注CPU、Memory及网络吞吐量。 还有端的性能,这个数据除了跟场景相干外还和设施自身的配置无关,如雷同场景iPhoneX与iPhone13 Pro的体现必定不同,iPhone13 Pro 能够稳固并长时间编码720px30f及解码1路720px30f,而iPhoneX雷同的场景可能继续不了1小时甚至更短就会呈现编码降帧率或分辨率的状况。故设施上的性能咱们除了关注CPU、Memory的应用外,还会关注设施上所能反对相应视频规格的时长,当然还有耗电状况等。 通过性能用例,模仿用户调用场景,性能及品质测试的自动化,咱们能够达到大概50%的覆盖率。除了接口自动化,咱们还利用了UI自动化,次要利用到咱们对外app的产品状态上。 API级自动化测试将是咱们自动化的重点,咱们会持续晋升它的作用,将来咱们会增强如下工作: 1、及时增加接口用例,咱们心愿能够做到Test Driven Development;2、攻克难点性能,如白板,因为白板会波及到交互操作性能,故导致咱们目前有些自动化无奈全副实现;3、联合接口自动化实现品质测试的自动化。

December 16, 2021 · 1 min · jiezi

关于自动化测试:4-个最常见的自动化测试挑战及应对措施

有人说:“横七竖八的自动化只会带来更快的凌乱。”不仅更快,而且是更重大、更大的凌乱。如果应用切当,自动化能够成为测试团队中令人惊叹的生产力助推器和零碎的品质增强器。自动化测试的要害是要正确使用,这是初始最艰难的局部。上面,咱们会理解最常见的自动化测试挑战以及应答措施。 挑战 1:取得管理层的批准跟任何公司部门一样,员工总要晓得估算容许和不容许的货色。测试人员可能曾经晓得自动化在商业和技术两方面的劣势(缩短上市工夫、减少测试覆盖度和准确性、升高每小时的测试老本、更快发现错误等),然而测试人员怎么压服财务部门和软件开发负责人,为自动化测试争取必要的工夫和资金? “自动化测试能进步生产力和准确性,这是必须制订商业案例的中央。单个缺点的老本……能够对消一个或多个工具受权的价格。” ——Randall Rice 咱们批准 Randall Rice 的观点,即自动化能够发出老本。为了向管理层证实财务收益是可观的,能够向他们展现对自动化测试投资回报率所做的简略细分。对其他人、其余利益相关者坦诚公开也很重要,不要瞒哄自动化前期工作和资源需要大的事实。 挑战 2:抉择并应用适合的工具因为种种原因,许多团队没能胜利通过这个阶段。他们可能是不理解特定工具的专业知识、找不到现实工具、工具集笼罩不够广等等。如果在怎么应用工具这方面没有足够基础知识,能够有以下几个抉择: 加入在线课程让工具的制造者来进行培训延聘参谋以更好把握外包如果现有的工具不能满足你的需要,那就思考找一个多工具的解决方案。 记住,不可能齐全测试所有内容,但能够应用工具去测试最重要的局部。 最初,如果工具破费超出预算,就疾速进行老本与收益剖析并展现进去。这样能够掂量之前谬误造成的损失,并能展示如果应用该工具能够省下多少工夫和金钱。 挑战 3:确定启动策略好的,当初曾经领有了能够开始自动化的所有工具及反对,然而到底把什么货色自动化了?又是怎么做的?这些工具自身并没有通知你要自动化什么,就像老手父母发现他们的小孩没有带着育儿手册诞生一样叫人丧气不安。是会造就出一代优良的自动化测试,还是会被它所毁坏再无奈治理?当然了,咱们必定心愿是前者!但实际上基本没有方法把所有事件都自动化,所以必须具备战略眼光。能够应用两种办法来帮忙解决此问题:基于危险的测试和自动化金字塔。 基于危险的自动化测试它优先测试最有失败危险的元件,如果产生所述失败,这些元件也会带来最大的负面结果。在此处须要思考: 潜在谬误的经济影响失败的概率服务级别协定 (SLA)有无财产危险这应该为你提供了一个好办法来确定自动化测试用例的优先级别。 自动化测试金字塔强烈推荐的另一种办法是遵循自动化金字塔。在最近的一篇文章中,对这个主题有了更宽泛的探讨,这里进行简略概述。 冰淇淋蛋筒尝起来甘甜迷人,但采纳冰淇淋蛋筒办法可能会毁坏自动化的过程!遵循冰淇淋蛋筒办法将导致高度的错误率,因为它强调 UI 级别的自动化,而UI级别应用的是更易被毁坏的测试。但如果把精力投入于自动化单元测试,那么在软件开发过程中,简直能够马上发现错误、打消谬误。 挑战 4:设定对自动化的事实冀望无论你的工具和流程如许杰出,要记住测试永远不会实现。自动化测试不是解决漏洞百出的零碎的灵丹妙药,不应该代替非自动化测试,而该当与非自动化测试联合应用。有一些测试根本无法自动化,但也有一些自动化测试能够发现其余办法无奈发现的谬误。 自动化测试实际上只是主动查看零碎,而依然须要人工进行非自动化测试。此外,请记住,测试的价值来自它提供的信息,而不是执行的测试数量或频率。咱们最关怀的取得正确信息,以便在进步零碎品质时做出最佳决策。 确保团队和管理层批准并了解自动化计划的预期后果,这样大家能力达成共识!

November 19, 2021 · 1 min · jiezi

关于自动化测试:何时适合进行自动化测试下

通过上篇文章,能够意识到自动化的重要性和劣势,必须确定能够自动化的用例。为此,必须思考所谋求的指标,以及这个指标在测试金字塔中处于什么档次。 尝试答复以下问题: 指标是什么?须要确认的第一件事是始终以更高水平的软件品质为指标,并剖析自动化是否适宜我的项目。要答复这个问题,倡议对指标进行可行性剖析。以下是最有可能实现自动化的一些场景: 有技术债权须要打消;回归测试十分耗时;该我的项目非常复杂且长期。应该自动化哪些测试用例?并不是所有的事件都能够在上下文中自动化,这就是理解哪些案例合乎咱们的目标的相干起因。从代码级别和开发人员方面思考,单元测试是最容易编写脚本的。在测试人员方面,咱们通常致力于在 UI 和 API 级别自动化回归案例,首先思考最要害和最简单的流程。以下是可自动化的测试用例: 回归测试鉴于咱们曾经有了一个必须在每次产品公布后定期执行测试套件,手动运行这些套件的工作变得反复,此外还须要从其余不可自动化的工作中抽出工夫,能够在这些工作中取得更多价值。这些回归测试用例高度自动化,特地便于集成到CI/CD模型中。这减少了执行其余工作所需的老本和工夫,因为在执行其余流动时,脚本能够在无人参加的状况下执行。 高风险测试这些案例通常由利益相关者约定,重点放在查看高优先级和要害性能上,如果它们失败,将极大地影响商业模式。这就是为什么这种办法被称为“基于危险的测试”。自动化测试这些性能的案例有助于在每次公布后立刻发现可能阻止公布、或必须迅速解决的风险性事件。 简单或耗时的测试在一个我的项目中,可能会有一些简单的状况须要手动复制,所以如果咱们将其转换为脚本,那么以自动化的形式执行它们会更容易。如果是一个蕴含大量数据的表单,那么测试人员可能更容易出错,尤其是当必须应用多种数据变体测试同一表单时。这时就能够通过自动化来升高出错的概率。 反复测试用例正如回归测试成为一项重复性工作一样,在某些一些非凡状况下,能够不便地实现自动化。例如,手动测试同一流程的大量数据,须要破费大量的工夫,必须反复测试则让过程更加乏味。然而,通过自动化这个流程,咱们能够参数化这些数据,而无需手动测试每个值。这也被称为数据驱动测试,其中自动化测试被参数化,并从数据源(如文件或数据库)获取数据。 工具抉择既然咱们晓得了要自动化什么,咱们就能够持续抉择要应用的工具了。在给定可用工具数量的状况下,该流动可能是最简单的剖析之一,该决策将不得不思考波及的我的项目、估算、常识和教训。有几种开源、商业和定制工具,它们的局限性和可用性各不相同。要抉择正确的工具,你必须分明必须满足哪些要求能力持续对其应用进行老本效益剖析。 以下是一些测试自动化工具的简要概述: Selenium:一种开源工具,在世界范畴内被宽泛承受,用于在不同浏览器战争台上测试 Web 应用程序。Appium:另一个开源框架(基于 Selenium),次要用在 iOS 和 Android 的挪动设施上实现测试自动化。Cucumber:这个工具是 BDD(行为驱动开发)办法的一部分。Cucumber 的次要长处是它的易用性,因为它十分直观,提供了宽泛的性能,而且还是开源的。ZTF:Zentao Testing Framework,是一款开源自动化测试治理框架,聚焦于自动化测试的治理性能,能够解决用例信息管理、测试脚本执行、测试后果比对、缺点Bug提交等问题。ZenData:ZenData是一款使用方便的通用数据生成工具,次要领有两大性能:数据生成和数据解析。反对一键生成海量数据用于性能和压力测试,实用于大规模、工程化的自动化测试。须要留神的是,没有实用于所有状况的最佳工具。依据被测应用程序和决策制定规范,能够更灵便地在不同软件之间进行抉择。

November 4, 2021 · 1 min · jiezi

关于自动化测试:DevOps-时代的高效测试之路

10 月 22 日,2021 届 DevOps 国内峰会在北京顺利召开,来自国内外的顶级技术专家独特畅谈 DevOps 体系与办法、过程与实际、工具与技术。CODING 测试及研发流程治理产品总监程胜聪(Diego)在大会现场承受了 CCTV《态度》栏目组的专访,也在 DevOps 最佳实际及解决方案专场为大家分享了他的主题——DevOps 时代的高效测试之路。 测试正在成为继续交付的最大瓶颈业界对于测试的焦虑由来已久。从 2017 年开始,行业开始对测试窘境造成共识,即测试不够快成为导致交付延期的次要起因。之后,行业开始强调自动化测试,提出打造疾速反馈环、流水线工作流和工程文化等理念。 在这种背景之下,Diego 认为,继续测试是 DevOps 时代的高效测试之钥。测试作为一项根底的、继续的流动,理当贯通于整个软件交付周期之中。继续测试扭转的是传统测试后置的工作模式,让测试流动延长到 SDLC 的每个阶段。 高效测试须要以自动化为实际基石从一项对于测试工夫破费的调研中能够得悉,测试执行占了总工夫的四成。因而如果要晋升整体测试效率,首要的就是通过自动化来晋升测试执行的效率。然而,测试团队发现即便在 CI 中配置好自动化代码库,因为待执行的用例汇合是固定的,随着自动化测试覆盖率晋升、自动化代码越来越多,运行工夫越来越长,于是运行频率却越来越低,成果并不如人意。 Diego 指出,只是默默地写自动化代码是不够的,自动化测试须要"更聪慧地执行"。如果可能人工地将需要(Req)、用例(Case)以及自动化函数(Func)关联在一起,灵便确定测试子集会让测试变得更加自在。如果某个自动化函数运行失败,则能够迅速定位到某个有问题的需要,团队再依据问题的优先级和影响,来断定是否可能持续公布。 新的时代,新的流程在新的时代,提倡新的流程。继续测试并不仅仅只是自动化测试、还有对流程的全局优化,这须要咱们从单点(执行)效率的晋升延长到全局效率的晋升。工具/技术改良过程效率(efficiency),而流程会指向正确的后果(effectiveness)。 那么,DevOps 时代须要什么样的测试流程? 首先,Diego 认为麻利宣言的四个“高于”清晰的指出了研发应该关注于为用户带来价值的行为和后果,而不是过程中的产物。 然而只管合作很重要,却不意味着流程、文档、打算不重要。只有软件的复杂度还在,有助于软件顺利交付的流程、文档、打算都是必要的。只是须要相应变动、与时俱进——转为轻流程、简洁文档、尽早打算,或“演进式”的流程/文档/打算。 DevOps 须要更轻,更强调角色合作的流程。测试团队首先须要围绕需要发展测试,策略性定义子集,并且确定基于危险的测试策略。其次,团队须要推动测试左移,让测试与开发并行工作。在这个阶段,须要实现的工作包含单元测试、测试评审、代码扫描,以及基于接口定义的开发和自动化测试。最初,还须要实际测试右移,让“测试永不退出”—— 在部署之后,还须要进行线上的实时监控,保障问题失去疾速发现和解决。 此外,DevOps 还须要强壮的标准和疾速的反馈。Diego 认为:研发“一致性”是效力晋升的根底,标准可能升高合作中的人为产生的主观复杂度、防止不必要的上下文了解。而疾速反馈不仅仅是缩小手工操作的“劳力破费”、更重要的是缩小成员的“心力损耗”,让成员能够专一于本人的工作,不必要在不同平台之间来回切换。软件开发的艺术成分应该被关进笼子里,而在软件开发中并不需要艺术的局部,例如机械的判断抉择、和协同所需操作,应趋向于科学化和量化。 腾讯云外部落地实际的分享最初,Diego 向现场观众分享了腾讯云 CODING 团队外部的落地实际,展示研发一体化的高效测试是如果实现的。 在研发过程中,存在各种各样的流动。研发团队中的不同角色,如产品、开发、测试以及运维个别都只关注本人所负责的流动,而后不同角色流动之间也存在关联,合作产生的流动便造成一个残缺的工作流。在此基础之上,退出准入准出标准能够让合作更加强壮,而主动操作则让流动更加高效。CODING 正是基于这样的逻辑,来为研发流程的高效治理设计出 CODING Compass 这一产品。 然而,DevOps 不应该只是研发团队自嗨的畛域,咱们还须要跟业务价值连接起来。通过把研发流动映射到业务人员所相熟的阶段:打算、开发、测试、部署,并且放弃对 Lead Time(前置工夫)、Process Time(解决工夫)、% of Completeness &Accuracy(实现&精确百分比) 等指标的关注和继续改良,造成价值流治理。 接下来,Diego 向大家介绍了腾讯云 CODING 团队是如何将测试流动嵌入其中的。 首先,迭代布局阶段会围绕着需要发展测试,策略性的定义测试子集。测试与开发严密合作,同时认领同一需要工作。而当迭代 Backlog 确定下来之后,也就示意测试范畴定下来了,测试计划就能够创立,而需要的验收规范也就能够间接转换为性能点用例。 ...

October 26, 2021 · 1 min · jiezi

关于自动化测试:自动化会提高测试覆盖率那测试覆盖率是什么

测试覆盖率是什么?测试覆盖率(test coverage)是2018年颁布的计算机科学技术名词,它是测试品质的度量规范之一,通知咱们测试了多少代码。它定义了零碎的某些实体,目标是用测试笼罩它们。这是一种用来批示咱们什么时候进行了充沛的测试,并通知咱们还须要测试什么(从而扩充了覆盖范围)的办法。 如果把测试比喻为清扫房子,那些不罕用的房间总会被脱漏,咱们总会遗记诸如次卧卫生间这样的区域,所以清扫的覆盖范围不包含就那个卫生间。 设想一下,如果咱们的清扫规范只包含清扫卧室。依照这个规范,如果清扫了所有的卧室,就意味着整个房子都是洁净的吗? 并非如此,因为咱们齐全疏忽了厨房、餐厅、卫生间等房子内的其余局部!因而,务必要粗疏精准地度量测试覆盖率。具备肯定水平的覆盖率是测试品质的一项指标,但它从来不是零碎品质的指标,也不能保障所有内容都通过测试。测试覆盖率通知咱们测试代码的百分比,但这并不意味着它在每种状况下都被测试过。 测试覆盖率有什么劣势?仍然是以清扫屋宇为例,测试覆盖率能够:● 度量清扫的品质;● 批示何时该进行清扫;● 揭示咱们还有其余中央须要清理。 某些规范可能比其余规范更弱小。理解它们能够让咱们晓得测试的深度以及何时利用某个或其余规范。例如,如果涵盖规范A的任何测试用例集TS也涵盖规范B,则能够说规范A包含另一个规范B。 依照上述准则,清洁屋宇就能够遵循以下规范: 清扫每个卧室;清扫房子的每一部分(包含卧室、厨房、卫生间等);清扫每一个小中央,甚至是角落,因为它们很可能会积累灰尘。不言而喻,规范3包含2,而2又包含1,关系是传递的,即3包含1。如果咱们为规范3设计一个测试用例,它也应该包含前两个规范。对于测试软件,规范通常包含程序中的各种门路、条件、语句、函数等。 另一个实在的例子可能是等价类划分,先划分若干个等价类,而后从每个局部中选取具备代表性的数据当做测试用例进行正当的分类,这样就笼罩了所有类。如果思考白盒测试,又有语句覆盖率、分支覆盖率、门路覆盖率等,特地是对于状态机,咱们有批示笼罩所有节点、所有转换等的规范。 自动化测试如何实用?当初就能够设想一下扔掉扫帚,换成一个超高速的扫地机器人。它能够解放双手、更快地清理地板、缩小被脱漏的区域,还能够让本人在工作中专一于更重要的事件。 至此,咱们能够得出结论:测试自动化=更高的测试覆盖率。

September 13, 2021 · 1 min · jiezi

关于自动化测试:非标准下拉列表控件的自动填写思路

咱们相熟的规范HTML输出控件包含input,select,textarea等;比方通过扭转input的value属性值,就可输出内容到文本输入框中。有些网页表单为了实现非凡的成果和性能,能够不应用这些控件,通过客户端脚本生成非凡的输出形式。手工填表不受影响,如果主动填表就须要应用非凡的形式。非标准下拉列表框填写示例.png (102.22 KB, 下载次数: 0) 办法一:手工填表后,察看源码变动,发现填写的内容呈现在<span>a5</span>元素中。那么咱们填表的思路就是间接批改这个元素的值。获取span元素,“填写”它的text文本内容为a3,能够看到网页也对应的发生变化。但提交表单时,如果是非input元素,可能无奈提交填写的值,需进一步测试。 计划二:应用主动点击操作,齐全跟人工填表步骤一样,先点击下拉箭头,期待0.1秒,而后在选项中点击对就的选项元素。简直所有下拉列表控件都能够用这种办法填写。

September 4, 2021 · 1 min · jiezi

关于自动化测试:持续测试-测试流程提效在-CODING-中实践迭代内的持续测试

本文作者:程胜聪 - CODING 产品经理继续测试带来的改革继续测试(或者麻利测试)要求测试作为根底流动贯通于软件交付的整个过程中。相比起在 DevOps 时代陷入困境的传统测试模式,继续测试首要扭转的是“测试后置“的情况,强调测试前置,通过尽早定义测试、测试与开发并行、在过程中放弃严密合作,从而实现疾速反馈业务危险的目标。继续测试的实际改革是对于人、流程和技术的全面工程:既须要技术上的撑持,比方继续集成、继续部署的根底能力,也须要人员自动化代码能力的晋升,同时对流程的改良也是其中不可或缺的一环。 正如麻利宣言开篇提出的四个外围价值,团队应该聚焦在为客户带来价值的行为和后果、而不是传统的循序渐进实现既定我的项目的事项和生产过程交付物,这对测试的要求也是一样: 个体和互动高于流程和工具;工作的软件高于详尽的文档;客户单干高于合同会谈;响应变动高于遵循打算。然而,对于上述宣言中的“四个高于”字面上的了解,大家往往容易产生困惑:合作很重要,那么是不是流程、文档、打算就不再须要了呢?其实不然,毕竟软件的外在复杂度还在,那么为了更好地交付软件而进行的打算和文档阐明就依然有着重要的价值。只不过咱们须要扭转原来过于臃肿的流程、文档、打算,让其不再成为团队疾速响应指标的解放。所以,“轻流程”、“适合粒度”、“尽早打算”才是咱们应该作出的适当的扭转。如果说自动化测试和精准测试是在测试执行这个单点上对效率的晋升,那么迭代内测试则是在整体流程上的对测试效率进行晋升。 如何实际迭代内的继续测试测试过程个别包含打算、设计用例、执行这几个环节,下图就是在麻利模式的迭代中的测试视角的经典工作流。让咱们从麻利模式下测试视角的经典工作流登程,探讨一下如何在一个迭代中实际继续测试。 基于上述场景,咱们能够依据如下步骤发展测试流动,达成与开发的工作同步、拓宽测试工夫窗口的指标: 首先,在迭代布局会上,产品经理就需要故事与团队一起进行解读、剖析和工作量评估。在工作认领时,开发和测试(或者充当此角色的另外的开发)结对负责某一个需要故事。当迭代布局实现时,其实就能够创立迭代对应的测试计划,打算内应该包含迭代故事列表以及相应的验收规范(Acceptance Criteria,简称 AC)。 而后,在迭代过程中,应该以代表业务价值的需要故事作为一个整体进行交付。也就是说,结对的开发和测试应该以同样优先级解决某一个需要故事,尽可能快地实现故事的端到端交付后,再解决下一需要故事。因而在开发实现编码的同时,测试也应该同步编写该故事的测试用例——少数状况下是对 AC 进行细节性的开展和编写补充残缺。当用例编写结束后及时进行评审,甚至在接口契约失去保障的状况下实现接口自动化测试的编码。这样每个故事都是开发实现后马上测试通过,处于可交付的状态。 最初,在迭代实现后,甚至能够执行一遍笼罩了以后迭代的需要故事所对应的测试用例集,根据测试报告反映的整体测试状况进行回顾,以待继续改良。 CODING 如何助力实际迭代内的继续测试基于上文提及的场景,CODING 以【测试计划为测试流动的主体】为理念,设计并打磨产品,力求给用户带来“沉迷式”的测试体验。接下来将演示如何在 CODING 测试治理中发展一个残缺迭代的测试流动: 迭代布局会上:首先,从我的项目协同中布局好的迭代开始,查看/创立团队的测试计划、并关联对应迭代。 而后在团队测试计划创立实现后,打算中会展现迭代的需要故事。接着为需要故事创立相应的性能用例,内容上可能只是带上布局会中达成统一的验收规范(AC),把相干的用例任务分配给对应的测试同学,就造成了一个测试团队视角的迭代看板。这些操作齐全能够在布局会上或会后的短时间内实现,测试计划包含了迭代故事列表以及相应的 AC 作为内容的用例,暂且称之为“测试计划 alpha 版”。 迭代进行中:开发同学实现编码的同时,测试同学同步编写该故事的测试用例,用例逐渐补充残缺的测试计划能够称为“测试计划 beta 版”。当用例编写结束之后及时进行评审,甚至在接口契约失去保障的状况下实现接口自动化测试的编码。这样的节奏也就实现了测试与开发的工作同步。 需要故事提测后,执行测试用例,对照用例步骤验证性能是否失常。在这样“小步快走”的模式下,迭代在任何时候完结都能够交付有业务价值的需要故事,而不是一批“半成品”。如此通过开发测试的严密协同工作,逐渐靠近体现业务价值的继续交付。 公布的时候:在迭代最初需要故事都实现后,咱们就能够取得蕴含残缺测试用例内容的“测试计划正式版”。由此生成测试报告,依据通过率和报告反映进去的危险来判断是否能够公布到下一个环境(如 STG)。 总结CODING 迭代视角的测试工作流的核心理念是疏导测试的前置,在过程中加强了测试与其余角色的合作和反馈。目标是通过产品能力来帮忙团队固化良好实际,从而实现高效的测试: 首先,尽早布局了测试。从需要布局会开始,在充沛了解需要并认领工作之后,咱们就能够圈定测试范畴,并由此产生简略版本的测试计划、并疾速制订验收规范和实现初步用例的编写。 其次,通过建设需要和用例的关系,对高优先级(业务价值)的需要所需测试做到高深莫测,为基于危险的测试策略(Risk-based Testing)打下基础。 再次,迭代进行过程中实现测试和开发工作的并行发展。在开发工程师进行业务代码实现的同时,测试工程师能够对测试用例作进一步细化补充残缺,甚至实现测试的自动化代码实现。通过严密协同、“小步快走”,每次交付的都是残缺业务价值的“成品”。 最初,测试过程中的操作以及产生的数据并记录下来,可能疾速的反馈给团队,而这些积淀下来的数据,将成为工程实际继续改良的指引。

June 3, 2021 · 1 min · jiezi

关于自动化测试:持续测试-让测试更自由在-CODING-中实践自动化执行用例

本文作者:程胜聪 - CODING 产品经理自动化测试是继续测试的根底在 DevOps 的高频交付场景下,团队容易陷入在速度和品质之间“二选一”的窘境:为了拥抱需要变更,采纳较短的交付周期,而后变更频繁导致问题变多,于是开发提测提早,最初导致测试工夫被压缩、难以进行充沛的测试。面对这样的状况,团队该如何晋升测试的执行效率呢?大家第一个会想到的应该就是自动化测试——通过自动化测试来代替重复性的手工测试,执行更快从而节俭测试工夫。此外,因为自动化每次执行工夫绝对固定,而且程序预设的测试行为带来了高一致性,让测试的稳定性和可重复性达到很高的规范,可能很好的实现“疾速重现软件缺陷”的指标。 如果说在测试工夫绝对短缺的传统瀑布模式下,针对回归测试场景而投入的自动化测试所体现的最大价值是在节约人力老本方面,那么在麻利和 DevOps 时代,自动化测试的更大价值则体现在频繁验证并且提供疾速反馈方面。能够说继续测试实际的根底就是自动化测试,只有自动化水平足够高,才可能满足继续交付的高频发版需要。 自动化测试策略自动化测试有很重要的价值,但不示意咱们应该无限度投入到各种类型的自动化测试当中。自动化测试是为了验证既定逻辑是否合乎预期,在需要变更频繁的场景下,自动化代码的保护老本微小。所以,咱们须要适合的策略来指引自动化的实现——金字塔模型。 出自《The Test Automation Pyramid: Your essential guide for test automation》 自动化测试金字塔最早由 Mike Cohn 于 2009 年在《Succeeding with Agile: Software Development using Scrum》中提出,过后从上到下的三层别离是 UI、Service 和 Unit。之后随着麻利测试实际的落地,业内逐步造成的认知是从上到下别离为用户界面测试(UI Tests)、接口集成测试(API Tests)、单元测试(Unit Tests),再加上顶部的手动探索性测试,进一步丰盛为测试金字塔(包含自动化和手工)。这个上窄下宽的三角形为咱们在各层的自动化投入提供了形象的指引:底层的单元测试最多,接口测试居中,UI 测试起码。 如金字塔模型所示,上层的单元测试/接口测试比起下层的 UI 测试长处有:因为更靠近生产代码所以更容易编写并定位到代码的缺点;因为测试对象的粒度更小、依赖更少,所以执行效率更高;因为测试对象更加稳固所以保护的老本更低等等,当然越靠近下层的测试的长处就在于,因为更加反映业务需要,所以更容易让人看到测试的价值。那么在 DevOps 时代,基于对速度和品质的均衡,中间层的接口集成测试因为既能放弃绝对低的保护老本,又能兼具反映业务逻辑的价值,应该成为咱们重点投入的局部,尤其是在自动化各方面还处于初级阶段的时候。 测试金字塔发祥于麻利实际,以之作为参考对咱们的自动化测试投入进行继续的调整,团队的测试用例和执行情况就会逐步形成良好的均衡。 精准测试的价值尽管从近几年行业的调查报告能够看出,随着对 DevOps 的认可,企业对自动化测试的投入在继续晋升,带来的间接后果就是自动化测试的代码越来越多。然而有了数量疾速减少的自动化代码,自动化就能达到咱们预期的成果吗? 从事实成果来看,企业并没有因为自动化测试覆盖率的晋升而取得预期中的价值,因为自动化代码的执行并没有咱们设想中的那么“自在”,往往在于两方面的起因: 个别团队会把自动化代码执行当作 CI 的一个环节,也只是被作为回归场景应用,然而全量回归的耗时过长限度了执行的频率不会太高;搭建流水线和在这根底上搭配相应的工具还是存在技术门槛,再加上这些操作自身须要的工作量,也导致了难以做到每个人都能随时执行自动化测试。这就导致随着自动化覆盖率的晋升,回归测试的执行工夫反而变得越来越长,于是自动化测试的执行频率只能升高,最初自动化代码的价值受到质疑。其实除了晋升自动化覆盖率之外,咱们还须要扭转“每次测试执行笼罩的用例越多越好”的理念:咱们不应该因为“不释怀”而让测试集变得过分冗余,而是须要基于业务危险优化测试覆盖范围,以期在无限的范畴内实现较高的测试投入产出比,实现精准测试。 CODING 让测试执行更加自在为了让测试执行更加“自在”,CODING 打造了云端自动化执行的能力,冀望解决自动化测试的“最初一公里”问题,从而实现: 每次执行都有灵便抉择用例子集的自在;所有人都领有执行测试的自在。接下来,让咱们看看如何在 CODING 测试治理实现“自在”地执行测试: 首先,在 CODING 自动化用例库中进行自动化代码注销,确定自动化代码曾经存在于代码托管中,对曾经存在的自动化代码库进行注销,并设置相干的语言/框架。 解析自动化代码库的测试函数列表,并建设用例治理中的性能用例与自动化函数的匹配关系,得出自动化覆盖率。通过匹配自动化代码和性能用例,能够帮忙咱们对自动化代码产生的价值建设直观感触,做到“心里有数”。 创立执行形式为自动化执行的测试计划,圈选用例。选取适宜的自动化测试子集是须要业务测试常识的,而执行固定范畴的全回归测试耗时过长,或者重复机械性执行冒烟测试并不能及时反映新需要的测试状况,这是自动化测试覆盖率的晋升之后依然未能达到预期中的价值的起因。CODING 提供按需圈选测试子集的形式来创立测试计划,精准执行相干的自动化代码子集、疾速反馈后果,从而解除了自动化运行时长的顾虑,让团队致力生产的自动化代码价值失去最大化。 执行该测试计划,曾经匹配上的自动化用例在后盾执行并更新对应性能用例的执行后果。自动化执行结束后,能够对未测或者未通过的用例进行手工验证、并更新用例工作状态。 ...

June 2, 2021 · 1 min · jiezi

关于自动化测试:Airtest入门及多设备管理总结

本文首发于:行者AIAirtest是一款基于图像识别和poco控件辨认的UI自动化测试工具,用于游戏和App测试,也广泛应用于设施群控,其个性和性能不亚于appium和atx等自动化框架。 说起Airtest就不得不提AirtestIDE,一个弱小的GUI工具,它整合了Airtest和Poco两大框架,内置adb工具、Poco-inspector、设施录屏、脚本编辑器、ui截图等,也正是因为它集成许多了弱小的工具,使得自动化测试变得更为不便,极大的晋升了自动化测试效率,并且失去宽泛的应用。 1. 简略入门1.1 筹备从官网下载并装置AirtestIDE。筹备一台挪动设施,确保USB调试性能处于开启状态,也可应用模拟器代替。1.2 启动AirtestIDE关上AirtestIDE,会启动两个程序,一个是打印操作日志的控制台程序,如下: 一个是AirtestIDE的UI界面,如下: 1.3 连贯设施连贯的时候要确保设施在线,通常须要点击刷新ADB来查看更新设施及设施状态,而后双击须要连贯的设施即可连贯,如果连贯的设施是模拟器,需注意如下: 确保模拟器与Airtest中的adb版本统一,否则无奈连贯,命令行中应用adb version即可查看adb版本,Airtest中的adb在Install_path\airtest\core\android\static\adb\windows目录上面。确保勾选Javacap形式②连贯,防止连贯后呈现黑屏。 1.4 UI定位在Poco辅助窗抉择Android①并且使能Poco inspector②,而后将鼠标放到控件下面即可显示控件的UI名称③,也可在左侧双击UI名称将其写到脚本编辑窗中④。 1.5 脚本编辑在脚本编辑窗编写操作脚本⑤,比方应用百度搜寻去搜寻Airtest关键词,输出关键字后点击百度一下控件即可实现搜寻。 1.6 运行运行脚本,并在Log查看窗查看运行日志⑥。以上操作只是简略入门,更多操作可参考官网文档。 2. 多线程中应用Airtest当我的项目中须要群控设施时,就会应用多过程或者多线程的形式来调度Airtest,并将Airtest和Poco框架集成到我的项目中,以纯Python代码的形式来应用Airtest,不过仍需Airtest IDE作为辅助工具帮忙实现UI控件的定位,上面给大家分享一下应用Airtest管制多台设施的办法以及存在的问题。 2.1 装置纯python环境中应用Airtest,需在我的项目环境中装置Airtest和Poco两个模块,如下:pip install -U airtest pocoui 2.2 多设施连贯每台设施都须要独自绑定一个Poco对象,Poco对象就是一个以apk的模式装置在设施外部的一个名为com.netease.open.pocoservice的服务(以下统称pocoservice),这个服务可用于打印设施UI树以及模仿点击等,多设施连贯的示例代码如下: from airtest.core.api import *from poco.drivers.android.uiautomation import AndroidUiautomationPoco # 过滤日志air_logger = logging.getLogger("airtest")air_logger.setLevel(logging.ERROR)auto_setup(__file__)dev1 = connect_device("Android:///127.0.0.1:21503")dev2 = connect_device("Android:///127.0.0.1:21503")dev3 = connect_device("Android:///127.0.0.1:21503")poco1 = AndroidUiautomationPoco(device=dev1)poco2 = AndroidUiautomationPoco(device=dev2)poco3 = AndroidUiautomationPoco(device=dev3)2.3 Poco治理下面这个写法的确保障了每台设施都独自绑定了一个Poco对象,然而下面这种模式不利于Poco对象的治理,比方检测每个Poco的存活状态。因而须要一个容器去治理并创立Poco对象,这里套用源码外面一种办法作为参考,它应用单例模式去治理Poco的创立并将其存为字典,这样既保证了每台设施都有一个独自的Poco,也不便通过设施串号去获取Poco对象,源码如下: class AndroidUiautomationHelper(object): _nuis = {} @classmethod def get_instance(cls, device): """ This is only a slot to store and get already initialized poco instance rather than initializing again. You can simply pass the ``current device instance`` provided by ``airtest`` to get the AndroidUiautomationPoco instance. If no such AndroidUiautomationPoco instance, a new instance will be created and stored. Args: device (:py:obj:`airtest.core.device.Device`): more details refer to ``airtest doc`` Returns: poco instance """ if cls._nuis.get(device) is None: cls._nuis[device] = AndroidUiautomationPoco(device) return cls._nuis[device]AndroidUiautomationPoco在初始化的时候,外部保护了一个线程KeepRunningInstrumentationThread监控pocoservice,监控pocoservice的状态避免异样退出。 ...

April 8, 2021 · 2 min · jiezi

关于自动化测试:浅谈自动化测试

本文首发于:行者AI自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员依据测试用例中形容的规程一步步执行测试,失去理论后果与冀望后果的比拟。在此过程中,为了节俭人力、工夫或硬件资源,进步测试效率,便引入了自动化测试的概念。 1. 前提条件1.1 需要变动不频繁测试脚本的稳定性决定了自动化测试的保护老本。如果软件需要变动过于频繁,测试人员须要依据变动的需要来更新测试用例以及相干的测试脚本,而脚本的保护自身就是一个代码开发的过程,须要批改、调试,必要的时候还要批改自动化测试的框架,如果所破费的老本不低于利用其节俭测试老本,那么自动化测试便是失败的。我的项目中的某些模块绝对稳固,而某些模块需要变动性很大。咱们便可对绝对稳固的模块进行自动化测试,而变动较大的仍是用手工测试。 1.2 我的项目周期够长自动化测试需要的确定、自动化测试框架的设计、测试脚本的编写与调试均须要相当长的工夫来实现,这样的过程自身就是一个测试软件的开发过程,须要较长的工夫来实现。如果我的项目的周期比拟短,没有足够的工夫去反对这样一个过程,那么自动化测试便成为笑谈。 1.3 自动化测试脚本可重复使用如果费尽心思开发了一套近乎完满的自动化测试脚本,然而脚本的反复使用率很低,以致其间所消耗的老本大于所发明的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试伎俩了。另外,在手工测试无奈实现,须要投入大量工夫与人力时也须要思考引入自动化测试。比方性能测试、配置测试、大数据量输出测试等。 2. 应用场合通常适宜于软件测试自动化的场合: (1)回归测试,反复繁多的数据录入或是击键等测试操作造成了不必要的工夫节约和人力节约; (2)测试人员对程序的了解和对设计文档的验证通常也要借助于测试自动化工具; (3)采纳自动化测试工具有利于测试报告文档的生成和版本的连贯性; (4)自动化工具可能确定测试用例的笼罩门路,确定测试用例集对程序逻辑流程和管制流程的笼罩。 3. 实用工具目前适宜初学者接触的自动化测试软件便是Airtest IDE。 AirtestIDE 是一个跨平台的UI自动化测试编辑器,实用于游戏和App。自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程反对基于图像识别的 Airtest 框架,实用于所有Android和Windows游戏反对基于UI控件搜寻的 Poco 框架,实用于Unity3d,Cocos2d与Android App,可能运行在Windows和MacOS上。 启动Android模拟器或者用PC连贯一台手机。通过adb命令查看挪动设施。 >adb devices List of devices attached emulator-5554 device 在Android模拟器中操作时,Airtest IDE右侧的界面是同步的,这一点比很多挪动测试工具做的优良,例如,appium desktop必须手动刷新能力获取最新的界面。 Airtest IDE反对Airtest脚本的录制,用法非常简单,你甚至能够先不必看它的API,通过录制来相熟它的API。右侧Airtest窗口以及API,点击右上角录制按钮,而后,就能够在映射的Android模拟器界面上点点点了。 这种脚本更适宜游戏,因为游戏界面很难定位,图片辨认(截图)的形式的确是不错的抉择。 上面将介绍一下罕用控件函数: (1)touch 这个函数是一个进行点击的函数,能够设置本人须要点击的图片,次数,长按工夫和右键点击。 (2)wait 这个函数的意思就是期待,依照肯定条件期待某样货色。这里能够设置等待时间,等待时间中的每次匹配距离,图片没找到时能够调用的函数以及自身函数返回的值。 (3)swipe 这个函数是一个进行滑动的函数,从图片1滑动到图片2,咱们须要设定好两张图片来进行滑动。在swipe函数中有一个值为duration,该值决定了滑动的时长,有的滑动操作对滑动的速度有肯定的要求,快和慢会有不同的后果。在理论应用swipe函数时,设置多少个插值点,想要多快的滑动就成了这个函数应用的调试重点。 (4)exists 这个函数是一个判断存在的函数,判断一个图片是否存在,返回一个布尔值,不便判断的一个函数。 (5)keyevent 这个函数是一个进行手机控件点击的函数,例如手机上的“home”、“back”、“power”。 (6)text 这个函数是进行文本输出的函数,能够在被关上的输入框内输出文字。 (7)snapshot 这个函数是进行截图作用的函数。 (8)sleep 这个函数是进行提早进行设置的函数。 (9)assert_exists 断言截图是否存在于以后页面,了解为如果这个截图内容存在,让他再测试报告中生成出什么文案。 (10)assert_not_exists 断言截图是否不存在于以后界面,了解为如果这个截图内容不存在,让他再测试报告中生成出什么文案。 (11)assert_equal 断言以后页面中是否蕴含设置好的文案,如果蕴含就通过。 (12)assert_not_equal 断言以后页面中是否不蕴含设置好的文案,如果不蕴含就通过。

March 16, 2021 · 1 min · jiezi

关于自动化测试:基于深度强化学习的局内战斗自动化测试探索

本文首发于:行者AI游戏我的项目研发时,须要搭建一个自动化测试的平台,以冀望场内战斗应用自动化来测试,发现局内bug,防止重复劳动、进步测试效率以及防止人为的操作谬误。其中环境要求应用我的项目须要应用Airtest、poco对接强化学习的服务器,实现Airtest将状态信息发送给服务器,服务器返回下一步的决策。 1. 后期筹备工作理解Airtest、poco、强化学习agent的决策形式。 1.1 Airtest介绍Airtest基于图像识别的自动化测试框架。这个框架外围不在实现形式和技术上,而是理念!这个框架的理念借用是MIT(麻省理工)研究院的成绩 Sikuli ,他们构思了一种全新的UI测试模式,基于图像识别控件而不是具体内存里的控件对象。 (1)Airtest特点 反对基于图像识别的可程式化测试工具跨平台生成测试报告反对poco等SDK内嵌,进步UI辨认精度(2)Airtest界面(蕴含点击、滑动、判断、截屏等接口) (3)Airtest成果演示 以上演示的是Airtest与间接通过图像识别对界面产生交互。如若须要与界面指定元素交互,是须要Poco提供的办法对界面上的元素进行操作 (4)Airtest局限性 然而在理论工程中,图像不会变化无穷,咱们须要捕捉我的项目的动静节点,针对动静节点进行点击、挪动等操作(比方商店买旗子的地位节点) 咱们须要另一个工具Poco。 1.2 Poco介绍目前Poco只反对原生Android和ios的接口调用,其余平台均须要接入对应平台的sdk (1)Poco获取UI树的形式 从根节点开始向下遍历子节点 在unity我的项目中,须要在unity中装置Poco的SDK (2)Poco调用办法 (3)Poco调用举例 poco = UnityPoco()poco('btn_start').click()Airtest通过接口调用unity中的pocosdk,SDK对整个ui树进行遍历,将dump后的json信息传回Airtest。 Airtest在失去的UI树中找到‘btn_start’的元素地位信息,通过adb进行点击操作。 1.3 强化学习的简述 Environment 通常利用马尔可夫过程来形容,Agent 通过采取某种 Policy 来产生Action,和 Environment 交互,产生一个 Reward。之后 Agent 依据 Reward 来调整优化以后的 Policy。 用上图更形象的解释,state是环境的一个状态,observation是Agent察看到的环境状态,这里observation和state是一个意思。首先Agent察看到环境的一个状态,比方是一杯水,而后Agent采取了一个行为,这个行为是Agent把杯子中的水给打碎了,这样环境的的状态曾经产生了变动,而后零碎会对这个行为打一个分数,来通知Agent这样的行为是否正确,而后依据新变动的环境状态,Agent再采取进一步的行为。Agent所谋求的指标就是让Reward尽量的大。 2. 我的项目执行过程:2.1 背景通过将训练好的一个Agent部署到服务器上,其他人通过拜访服务器,流程如下:a. 测试端收集信息->测试端将信息转成约定好的state格局->测试端将state发给服务器->服务器返回一个Agent的决策->测试端收到信息执行决策-> b. 测试端收集信息(新一轮循环的开始)... 在这个过程中,测试端收集信息耗时最为重大,针对我的项目需要决定对其局部进行优化。 2.2 具体问题poco首次调用dump接口时会启动大量mincap等诸多可执行文件,导致7秒左右的提早。 Airtest操作遇到的提早过于重大,导致游戏每回合可操作工夫30秒内,只能进行4-5个动作。 然而本地训练的agent前期每回合操作数能达到16个左右,导致前期agent动作不能齐全在客户端上做完。 2.3 解决方案提前加载poco的click事件 定位到dump耗时重大,决定从sdk的接口登程,缩小dump出的json文件大小。 a. 在unity的接口中,退出tagfilter、blacklist、propertylist参数,来管制json的文件大小。其中tagfilter用于针对指定tag的unitygameobject的筛选,能够去除除UI和Default以外的所有物体。 blacklist用于针对unitygameobject名字的筛选,能进步dump效率50% propertylist用于缩小单个unitygameobject的参数写入,默认单个物体有10多个参数,筛选后能够省下6个左右的参数。可进步dump效率33% b. 在python的接口应用对应接口参数 该办法完满解决了操作提早的问题,目前客户端单回合30秒能够实现20个左右的动作。 2.4 具体步骤:layerfilter 在本次我的项目中,有13个layer。只对tag为UI和Default的UGO进行递归写入子节点信息,剔除掉场景、特效等层级,能够大幅缩小开销。 ...

March 3, 2021 · 2 min · jiezi

关于自动化测试:Web-UI自动化测试之元素定位

本文首发于:行者AI目前,在自动化测试的理论利用中,接口自动化测试被宽泛应用,但UI自动化测试也并不会被代替。让咱们看看二者的比照: 接口自动化测试是跳过前端界面间接对服务端的测试,执行效率和覆盖率更高,保护老本更低,整体而言投出产出比更高,因而在我的项目上的应用更宽泛。而UI自动化测试则是模仿用户在前端页面中的操作行为进行测试,尽管在执行过程中易收到其余因素的影响(如电脑卡顿,浏览器卡顿,网速等)而导致用例执行失败,且前期保护老本较高,然而UI自动化测试更贴近用户应用时的真实情况,也可能发现一些接口自动化无奈发现的bug。因而,在理论我的项目的自动化测试中,通常采纳以接口自动化为主、零碎稳固后通过UI自动化对重点业务流程进行笼罩的计划。而UI自动化的根底,就是元素定位。只有实现了元素定位,才能够操作定位到的元素,模仿手工测试进行一系列的页面交互,比方点击、输出等。 1. 罕用的元素定位形式对于web端的UI自动化测试,元素定位通常应用selenium提供的以下8种定位形式: id:依据id定位,是最罕用的定位形式,因为id具备唯一性,定位精确快捷。name:通过元素的【name】属性定位,会存在不惟一的状况。class_name:通过class 属性名称进行定位。tag_name:通过标签名定位,个别不倡议应用。link_text:专用于定位超链接元素(即a标签),须要齐全匹配超链接的内容。partial_link_text:同样用于定位超链接元素,但能够含糊匹配超链接的内容。xpath:依据元素门路进行定位,分为绝对路径和相对路径,能够定位到所有指标元素。css_selector:selenium官网举荐的元素定位形式,比xpath效率更高,但须要把握一些css根底。在理论的我的项目中,更举荐应用xpath和css定位形式,这两种能够定位到页面中的所有元素,应用限度较小。如果对css没有理解的话,举荐应用xpath的形式,上手更快;如果对css有肯定根底的敌人,更举荐应用css进行元素定位。 接下来,以百度首页为例,在理论应用中对各种定位形式进行具体介绍。 2. 元素定位的理论利用以百度首页的搜寻框为例,介绍id、name、class、tag_name四种元素定位形式。 2.1 id定位通过id属性对百度首页的的输入框进行定位。 # 通过input标签的id属性进行定位find_element_by_id('su')2.2 name定位通过name属性对百度首页的输入框进行定位。 # 通过input标签的name属性进行定位find_element_by_name('wd')2.3 class_name定位通过class属性对百度首页的输入框进行定位。 # 通过input标签的class属性进行定位find_element_by_class_name('s_ipt')2.4 tag_name定位通过标签名称来定位,这种形式很少会应用,因为页面中的同一个标签通常都会反复。 # 通过input标签名进行定位find_element_by_tag_name('input') 接下来,以页面底部的“意见反馈”为例,介绍linkText和partialLinkText两种定位形式。 2.5 linkText定位通过a标签的文本信息进行定位,仅用于定位超链接a标签。 # 通过a标签的文本信息进行定位find_element_by_link_text('意见反馈')2.6 partialLinkText定位通过对a标签的局部文本信息含糊匹配进行定位。 # 通过对a标签的局部文本信息含糊匹配进行定位find_element_by_partial_link_text('反馈')2.7 xpath定位xpath定位形式是通过页面元素的属性和门路进行元素定位,实践上能够对页面中所有的元素精选定位。上面介绍xpath的几种定位形式。 首先,介绍一下xpath的门路节点表达式,如图: (1) xpath绝对路径定位 仍已百度首页的搜寻框为例进行介绍。 find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input')通常状况下,不会抉择应用xpath绝对路径进行元素定位,起因有二:一是绝对路径繁琐简短,影响运行速度;二是波及的层级较多,任何一个层级发生变化都会导致定位失败,须要从新进行批改,不利于前期保护。 (2) xpath相对路径和元素属性联合定位 若指标元素的某个属性具备唯一性,则可间接对指标元素进行定位;否则,须要在指标元素左近寻找一个具备唯一性的元素,而后通过二者的层级关系进行定位。 接下来,仍然以百度首页的页面元素为例,对xpath定位的形式举例说明。 # 通过元素属性定位百度首页的搜寻框find_element_by_xpath("//input[@id='su']")find_element_by_xpath("//input[@name='wd']")find_element_by_xpath("//input[@class='s_ipt']")find_element_by_xpath("//input[@autocomplete='off']")# 通过文本信息定位(和text_link办法不同,不局限于a标签)find_element_by_xpath("//a[text()='意见反馈']")find_element_by_xpath("//span[text()='设置']")# 通过父级定位子级元素,举例百度首页搜寻按钮find_element_by_xpath("//span[@class='bg s_btn_wr']/input")# 通过子级定位父级元素,举例百度首页百度热榜的换一换find_element_by_xpath("//span[text()='换一换']/..")# 通过contains办法含糊匹配定位,举例百度首页搜寻按钮find_element_by_xpath("//input[contains(@class,'s_btn')]")find_element_by_xpath("//a[contains(text(),'反馈')]")(3) 浏览器复制xpath 除了上述两个办法之外,还有一个简略的办法,就是在浏览器的F12开发者工具中找到指标元素,鼠标右键进行复制即可,如下图。 但复制的xpath门路可能会很简短,还是举荐大家依据需要本人写指标元素的xpath门路。 2.8 css_selector定位(1) css定位简介 css_selector定位(下文简称css定位),它的定位形式,利用选择器进行的。在CSS 中,选择器是一种模式,用于抉择须要增加款式的对象。通过css进行元素定位,实践上也是能够定位到页面中的所有元素的。 和xpath相比,css的语法更简洁、定位速度更快,然而css的语法比xpath较为简单一些,绝对难记。 (2) css定位实例 上面,仍以百度首页搜寻框为例,对css定位形式举例说明。 # 通过id定位,id名前加# find_element_by_css_selector("#kw")# 通过class定位,class名前加. find_element_by_css_selector(".s_ipt")# 通过标签定位find_element_by_css_selector("input")# 通过其它属性定位 find_element_by_css_selector("[name='wd']")# 标签和属性组合定位 find_element_by_css_selector("input#kw")find_element_by_css_selector("input.s_ipt")find_element_by_css_selector("input[name='wd']")find_element_by_css_selector("[name='wd'][autocomplete='off']")# 通过父级定位子级元素 find_element_by_css_selector("from#form>span[@class='bg s_ipt_wr']>input")3. 小结以上,就是selenium的各种元素定位办法的简略介绍。我的项目的理论应用中,在定位办法的抉择上,比拟举荐大家采纳“id > name > xpath/css > 其它”的程序进行抉择。 ...

January 20, 2021 · 1 min · jiezi

关于自动化测试:普通大学多年功能测试3年进入小米测试开发软件测试如何有效的学习8千字长文

崎岖的2020学软件测试容易,找工作难!2020年是崎岖的一年,对于咱们每个人来说,衰弱地活着比什么都重要。 现状1-疫情&裁员潮到来 ➢起因: ➢疫情影响寰球经济,波及大多数行业 ➢大环境预测不好导致企业勒紧裤腰带(中美贸易战) ➢投资环境收紧影响大量守业公司 ➢企业人力成本上升 ➢供大于求 可能在五年前的样子,咱们的软件测试岗位能够说是一个风口。然而当初的话呢,曾经开始缓缓趋于一个均衡的状态了,不再是像十年前五年前,就算你不懂技术,也可能找到一个软件测试的岗位,也可能拿到一个还算不错的薪资。 其实当初这样的一个机会曾经十分的少了,供求关系基本上是缓缓达到一个均衡规范了。 现状2:手工测试衰败 ➢纯手工测试的生产力曾经跟不上时代要求 这个是大家都深有体会的,第一个,因为手工测试曾经跟不上时代的生产力要求。但并不是说,要淘汰手工测试。(只有有软件测试行业的存在,手工测试就不会被淘汰)这个和自动化测试不会代替手工测试是一个情理。 不论咱们的自动化测试、人工智能做得有多好。手工测试它还是会存在的,只是说它占据的比例会越来越少,而且当初的手工测试并不能和十年前的手工测试去相比。因为当初的技术要求越来越高,当初的手工测试市场额度越来越小。 所以如果你是零根底转行,肯定要慎思。 每一行你做到了28定律的2,前(钱)景都是很可观的。 当然不得不抵赖的是,咱们大部分都是普通人,包含我。 可能有一份稳固的工作,过着本人舒心的日子,所以星爷在电影里说到:人嘛,最重要的就是开心! 还是比拟传统,认为元旦才是真正的过年。 本文次要分享8个点,可按需来浏览: Share1:今日头条/腾讯各类大厂软件测试岗面试题 Share2:想拿到年薪二十万,须要具备哪些技能? Share3:挑战自动化测试 Share4:自动化测试心得 Share5:对于测试开发 Share6:测试行业的现状 Share7:小米测试三年,我如何积攒教训? Share8:如何晋升企业面试通过率? Share1:今日头条/腾讯各类大厂软件测试岗面试题(1)软件测试习题参考答案 (2)测试面试题及一些材料 (3)用友自动化测试面试题和局部答案 (4)软件测试一些根底面试问题 (5)软件测试面试题(软通能源/博彦科技/奇虎/瑞星/中软) (6)阿里巴巴和华为口试和面试题 (7)哔哩哔哩软件测试工程师面试题 (8)美团网软件测试面试题回顾版本 (9)拼多多软件测试校招面试题 (10)瑞星软通测试工程师口试题 (11)搜狗软件测试工程师口试题 (12)腾讯近三年78道软件测试面试题(蕴含答案) (13)字节跳动测试工程师口试题 (14)5个重要的面试题(含金量高,分水岭能Pass掉很多人) (15)华测软件测试面试题解析 (16)软件测试真题试卷 (17)实践根底到测试开发面试题(视频精讲) (18)其余局部(次要解说一些综合性的问题) 资源有一部分来源于网络收集与在企业中的测试敌人,感激前辈的答疑解惑!Share2:想拿到年薪二十万,须要具备哪些技能?因为历史起因,大部分测试人员,最开始接触都是纯性能界面测试,随着工作年限,会接触到一些罕用测试工具,比方抓包,数据库,linux等。 我大学学的计算机专业,有肯定的编程根底。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。 有人留言问到我,在一线城市做功能测试,如果定个小指标,想拿到年薪二十万,须要具备哪些技能? 首先必须纯熟整个产品的业务流程、业务是根底,这样保障产品在疾速迭代时、不仅保障新性能的完整性,而且疾速回归原有性能不受影响。 而后须要把握一些罕用测试工具来辅助测试: Web端测试:浏览器开发者工具应用,network、console控制台、兼容性测试 挪动端app测试:(安卓/IOS/ipad端)测试全流程,兼容性测试、稳定性测试,晦涩度测试、adb常用命令 服务端:把握接口测试、抓包工具应用、如何校验接口的完整性 Linux:罕用shell命令,查看谬误日志 数据库测试:相熟数据库表构造,把握罕用增删改查sql语句,便于分析测试后果。 常用工具应用:SVN/git版本控制工具 、postman、jenkins利用打包和构建 换句话说,如果你拿到一个新的产品测试性能,你如果能通过数据库的表构造,和剖析系统日志来疾速的相熟产品业务,阐明你的测试思维,功能测试能力曾经十分优良了。 过后我把握了以上技能点,在公司将工作效率进步了,绝对比拟轻松,这就导致我有短缺的工夫,拾起编程语言,最后用的java语言,而后学习各种自动化测试技术,过后感觉自动化测试特地有意思,而且挺神奇,激发了我浓重的趣味。 起初发现Python语言越来越火,而且我发现python来做自动化和对于编程根底比拟单薄的测试工程师来说特地的适合, python还能用来爬虫,用python还能写一些定时脚本,数据库脚本,效率十分高 ...

January 12, 2021 · 2 min · jiezi

关于自动化测试:数据传输-mysqldiffmysqldbcompare-实现-DTLE-自动化测试

作者:张静文爱可生上海研发核心成员,测试工程师,负责 DMP 以及 DTLE 自动化测试。本文起源:原创投稿*爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。工作:测试开源产品 dtle(https://github.com/actiontech...),对 mysql 字符类型,表构造的支持性。 测试需要如下:1. 测试 dtle 对 mysql 所有的字符类型支持性2. 测试 dtle 对表构造的支持性3. 等....... 测试步骤大抵为:设计表构造,数据类型。应用 dtle 迁徙表/数据。比照应用 dtle 迁徙的源数据库和指标数据库的数据、表构造是否有差别。起初,我开启了 2 个窗口一条条的比照,然而当我比对到第 100 条数据的时候,我发现眼花了,仿佛有些数据“如同不一样”。我还有好几万条数据要这么比照呢,而且每次发新版本,我都要这么来一次......这不是人能实现的艰巨工作! 所以我寻找是不是有什么工具能帮我做这部分工作,搜寻后发现一部分私人写的小工具(具体的就不列举了),然而通过应用后,发现很多工具本身就带有一部分 BUG,如果我用这些工具做数据比照必定会脱漏 BUG。 通过几天的搜寻试用,发现 mysql 官网提供了一个十分不错工具mysqldiff/mysqldbcompare,所以想着分享给大家。 以下就间接说说应用办法: (零碎:Ubuntu 18.04) 1. 软件下载,地址如下: https://cdn.mysql.com/archive...2. 解压到当前目录 mysql-utilities-1.6.5 下: tar -zxvf mysql-utilities-1.6.5.tar.gz3. cd 到 mysql-utilities-1.6.5,执行装置: apt install mysql-utilities如下图: 4. 演示 mysql-utilities 中的 mysqldiff 应用和成果: 首先咱们能够通 过 mysqldiff --help 命令查看用法: 接下来我要测试通过 DTLE 数据迁徙的 2 个数据库,而后验证: 1. 是否有表构造扭转 ...

September 1, 2020 · 1 min · jiezi

测试平台技术博客

测试平台技术博客

June 23, 2020 · 1 min · jiezi