关于测试工具:一种有效的嵌入式软件单元测试工具

一、引言在当今的软件开发畛域,单元测试曾经成为确保代码品质,晋升软件可靠性和安全性的重要环节。对于嵌入式软件来说,尤其在汽车管制等安全性至关重要的畛域,单元测试更成为不可或缺的一部分。然而,传统的单元测试办法往往效率低下且容易出错。为了解决这一问题,本文介绍了一种无效的嵌入式软件自动化单元测试工具——WinAMS。二、WinAMS概述WinAMS是一款以嵌入式软件的函数为单位,施行模块单元测试以及C0/C1/MCDC覆盖率测试的嵌入式软件自动化单元测试工具。它通过穿插编译器将指标机源代码转化为指标机执行代码,而后通过模仿处理器环境进行单元测试。这一过程无需对执行代码做任何改变,使得高信赖性的模块测试得以实现。应用指标机代码进行单元测试,更是为了合乎汽车行业中ISO26262性能平安认证规范。三、WinAMS的劣势与其余单元测试工具相比,WinAMS具备以下劣势: 高效性:WinAMS可能自动化执行单元测试,大大提高了测试效率,缩小了手动测试的工夫和工作量。可靠性:因为WinAMS应用模仿处理器环境进行测试,因而能够检测到更多潜在问题,进步测试的可靠性。灵活性:WinAMS反对多种语言,包含英语、日语等,实用于跨国开发,为不同开发团队提供了灵活性。可追溯性:WinAMS的测试报告具体记录了测试后果和覆盖率,有助于开发人员追溯问题,更好地理解测试状况。四、WinAMS的利用实际通过理论利用WinAMS,咱们发现它在以下几个方面获得了显著功效:进步了代码覆盖率:通过自动化测试,WinAMS可能检测到更多的代码门路,从而进步代码覆盖率。缩小了缺点和谬误:通过严格的单元测试,WinAMS可能帮忙咱们发现并修复许多潜在的缺点和谬误,进步软件品质。进步了开发效率:应用WinAMS进行单元测试,能够节俭大量手动测试的工夫和工作量,从而进步开发效率。加强了代码可维护性:通过继续的单元测试,咱们能够放弃代码的健壮性,使其更容易保护和更新。五、论断本文介绍了WinAMS这一无效的嵌入式软件单元测试工具,并探讨了其在进步代码品质、缩小缺点和谬误、进步开发效率以及加强代码可维护性等方面的劣势。实践证明,应用WinAMS进行单元测试对于进步嵌入式软件的开发效率和可靠性具备重要意义。

September 12, 2023 · 1 min · jiezi

关于测试工具:自动化回归测试平台-AREX-040-版本发布

优化加强189、201:AREX Agent 反对更多协定/框架  Agent 0.3.4 版本已反对对 dubbo 2.x、okhttp 3.x 的录制。 202:新增白名单录制性能  用户目前能够指定仅录制某利用特定门路下的接口申请。 160:利用进行动静类配置后反对主动 retransform,无需再次重启机器失效222:接口申请 URL 中 Query 参数将主动贴入下方参数文本框中  在 URL 栏中输出 Query 参数时,AREX 会将其主动填充到参数(Query Parameters) 选项卡中,同时也能够在参数选项卡中对其进行编辑,URL 栏中会同步更新。 254:用户能够在利用配置中批改最大回放 QPS 数量  为了加重用户被测机器的负载,目前能够在利用配置页面依据须要批改最大回放 QPS 数量。 232:升高 Agent 和配置之间交互频率**  升高 Agent 和配置之间不必要的高交互频率,即缩小 Agent 对配置的拜访次数。为此,Instances 表的 TTL 工夫也进行相应的调整,从 3 分钟调整到 16 分钟,以确保表中的数据在规定的工夫内依然无效。 192:默认状况下单个利用录制的机器数量设定为 1  默认状况下,AREX 只会录制某个利用一台机器的数据,这是为了防止数据反复和冗余。当然,用户也能够通过手动调整的形式来批改录制机器数量(机器 IP 暂不反对指定,仅反对批改数量),以满足特定的需要。 187:反对在前端页面间接删除不须要的利用  对于胜利搭载 AREX Agent 的应用程序,用户能够在零碎前端页面上进行查看和治理。如果用户决定不再须要某个应用程序,能够间接在前端页面上执行删除操作。 42:反对导入导出 Postman 测试用例  各个测试团队都有本人的测试习惯,强制迁徙到一个新的测试工具,有很大的迁徙老本。AREX 当初反对将 Postman 测试用例进行导入、导出。泛滥用例能够一键迁徙到 AREX,无需再次新建我的项目,同时也能够将 AREX 录制到的用例导出,帮忙测试团队升高迁徙老本。 ...

July 3, 2023 · 1 min · jiezi

关于测试工具:自动化回归测试平台-AREX-的-Mock-实现原理

AREX 是一款开源的基于实在申请与数据的自动化回归测试平台,利用 Java Agent 字节码注入技术,通过在生产环境录制和存储申请、应答数据,并在测试环境回放申请和注入 Mock 数据,存储新的应答,实现了主动录制、主动回放、主动比对,为接口回归测试提供便当。 AREX Mock 性能非常弱小,不仅反对各种支流技术框架的主动数据采集和 Mock,还反对了本地工夫、缓存数据以及各种内存数据的采集和 Mock,能够做到在回放时精准还原生产执行时的数据环境,且不会产生脏数据。 这篇文档将从代码实现的角度简略介绍下 AREX 是如何实现在流量回放时主动 Mock 数据的。 示例让咱们先以一个简略的函数为例,了解⼀下其实现原理。假设咱们有上面⼀个函数,用于将给定的 IP 字符串转换成整型,代码如下: public Integer parseIp(String ip) { int result = 0; if (checkFormat(ip)) { // 查看IP串是否非法 String[] ipArray = ip.split("\\."); for (int i = 0; i < ipArray.length; i++) { result = result << 8; result += Integer.parseInt(ipArray[i]); } } return result;}咱们将从两个方面阐明如何实现该函数的流量回放性能: ecord(流量采集)当这个函数被调用时,咱们把对应的申请参数和返回后果保留下来,供前面流量回放应用,代码如下: if (needRecord()) { // 数据采集,将参数和执⾏后果保留进DB DataService.save("parseIp", ip, result);}Replay(流量回放)在进行流量回放时,就能够用之前采集的数据来主动实现这个函数的 Mock,代码如下: ...

June 16, 2023 · 3 min · jiezi

关于测试工具:很后悔才发现这个API管理神器

想必大家都留神到了,近半年国产API管理工具火了起来。这阐明两个问题,第一,API治理的重要性被越来越多的开发者意识到了,研发团队对API治理的需要也越来越强了。第二,阐明国产软件真是越来越厉害了,大家的确在逐步辞别postman、swagger等产品,开始抉择国产工具。 明天,我要给大家举荐一款低调但实力弱小的API治理神器,ApiKit!就很Pro! Apikit 是一款定位专业级的一站式API平台,团队早在2016年就公布了国内第一个将Swagger+Postman+Mock+Jmeter单点工具汇合在一起的开源产品Eoapi,可能疾速解决API文档治理、疾速测试、Mock、API自动化测试等问题。并在2017年正式公布了寰球第一个在线API全生命周期治理平台,帮忙寰球开发者更高效的开发、测试和运维API。 其实,一个产品是不是用心打磨过,手感好不好,一上手就晓得了。连忙试试看吧,复制链接粘贴到浏览器下载!https://www.eolink.com/?utm_source=cpsf&utm_content=cpy14 为解决API治理而生Apikit 在产品迭代的过程中,总结了大量API研发和测试过程中的痛点: 多个API工具的数据难以买通,比方API文档治理用Swagger、Word或者Wiki,测试用Postman,Mock本人写脚本,压力测试用Jmeter或Loadrunner,甚至一个我的项目外部能够同时存在多个API管理工具,多个工具之间数据无奈真正买通,无奈高效地保护API信息和团队合作。API文档编写繁琐、设计不标准、更新不及时、不足对立文档格局等,导致API文档的可读性很差,也没有方法做疾速分享。没有版本治理,不足变更告诉,不晓得API在什么时候被什么人改了什么中央,影响了什么零碎或模块。测试人员难以保护测试用例,大量应用脚本的形式写自动化测试,学习、编写和保护的老本都很高。导致团队合作低效,频繁出问题。 Apikit 的创新型解决方案Apikit 提出了针对API开发合作的翻新理念:文档与测试驱动开发(DTDD),简略地说就是: 用规范文档代替口头约定和笔记文档,让开发、测试、运维、合作有迹可循; 疾速用测试后果推动开发进度,让团队沟通更充沛、治理有事实根据,实现麻利开发。 这套理念通过大量用户验证,逐步形成了以下的API研发测试流程,将后端、前端、测试等团队更好地联合在了一起。 Apikit 的性能到底有多强?市面上有泛滥API研发工具,根本都蕴含了接口设计、文档治理、数据模型、接口调试、接口用例、接口数据Mock等根底性能,然而ApiKit 仍然在性能深度、广度以及用户体验等方面都做到了更好。 全面、疾速、标准地治理所有 API 文档无论应用什么语言开发,无论是 HTTPS、Websocket、TCP、UDP 等协定,还是 Restful、SOAP、WebService 等标准,Apikit 都能够帮助团队疾速、对立、标准地治理起来。 反对所有常见API协定; 通过界面疾速创立API文档,反对导入各类数据报文间接生成文档内容;通过扫描代码注解主动生成API文档,可关联 Swagger 或代码仓库;一键导入 Swagger、Postman、Rest Client、RAP、YAPI 等产品数据;API 文档主动生成代码,反对Java、PHP、Javascript、Python等数十种语言以及上百种框架;API 版本治理,分明晓得API在什么时候被什么人改变过了什么中央; API 变更告诉,不放过 API 的任何变动。一键发动API测试,买通 API 文档与测试Apikit 能够一键发动测试,反对主动生成测试数据,可能通过 Javascript 代码对申请报文、返回后果等进行加解密、签名等解决。 反对本地测试、局域网测试、在线测试等;反对一键切换测试环境,应用全局变量、减少额定申请参数、扭转申请地址等;可在界面间接编写 JSON、XML、Formdata、Raw、Hex 等数据类型;反对将测试数据保留为测试用例,当前能够间接应用测试用例进行测试;一键主动生成各语言测试代码,复制代码即可间接用于我的项目中;反对在测试过程中编写代码进行签名、加解密、生成随机数据等操作提供具体的测试报告,包含返回头部、返回后果、性能工夫剖析等内容;零代码自动化测试,一键进行大范畴回归测试,极大加重测试工作量!缩小超过 95% 的测试工夫!当 API 发生变化时,能够一键进行API回归测试,零碎会主动依据规定判断返回后果并得出测试报告,不便团队疾速理解 API 改变的影响范畴。 针对每个 API 可疾速创立多个测试用例,进步 API 测试覆盖率;一键、批量、疾速测试 API,特有的测试控制台性能,控制台中可能间接查看测试后果;测试用例可设置断言规定,零碎主动判断返回后果并得出测试报告,精确告知谬误起因;API 状态或内容产生变更时可主动告诉相干人员,零碎会列出新版本改变的内容;可通过 Open API 触发 API 测试,联合 Jenkins 等 CI/CD 零碎打造属于您的测试流程。Apikit 应用体验主动生成API文档您能够给我的项目关联 Swagger 生成的 JSON 文件地址,API 研发治理平台可能近程读取 Swagger JSON 并主动生成API文档。 ...

May 24, 2023 · 1 min · jiezi

关于测试工具:给新人推荐这-6-款-API-测试工具

Postman: Postman 是一个风行的 API 开发和测试工具,提供了丰盛的性能,包含申请构建、测试自动化、数据驱动等。用户能够通过 Postman 的界面轻松创立和测试 RESTful API。Insomnia: Insomnia 是一款功能强大的开源 API 测试工具,反对多种协定和格局,包含 REST、GraphQL、gRPC、JSON、XML 等。Insomnia 还提供了一个洁净的用户界面和丰盛的插件库。SoapUI: SoapUI 是一个风行的 API 测试工具,专一于 SOAP 和 REST 协定的测试。SoapUI 提供了多种测试和模仿性能,包含数据驱动、模仿服务器、性能测试等。RestAssured: RestAssured 是一个基于 Java 的 API 测试库,能够帮忙开发人员编写简洁和易于保护的 API 测试代码。RestAssured 反对多种协定和格局,包含 REST、JSON、XML、SOAP 等。Karate: Karate 是一个开源的 API 测试工具,能够帮忙开发人员编写简略和易于保护的 API 测试代码。Karate 反对多种协定和格局,包含 REST、JSON、XML、SOAP 等,并提供了丰盛的断言和验证性能。以上是几个罕用的国外 API 测试工具,每个工具都有其本身的特点和长处,须要依据理论需要进行抉择。 但我明天举荐第 6 款,也是我日常应用并且正在参加的开源我的项目,Postcat 开源的 API 管理工具,纯国产,收费的,主打插件生态,适宜中小团队以及集体开发者应用,有 API 相干的外围性能。 目前在 Github 上 3k star,如果你感觉这个我的项目还不错的话,无妨点个 star 反对一下~ Github:https://github.com/Postcatlab/postcatDemo:https://postcat.com/zh/?utm_source=sf&utm_campaign=xh&utm_con... Postcat 外围性能:API 文档治理:可视化 API 设计,生成 API 文档API 测试:主动生成测试参数,主动生成测试用例,可视化数据编辑插件拓展:泛滥插件扩大产品性能,打造属于你和团队的 API 开发平台Mock:依据文档主动生成 Mock,或创立自定义 Mock 满足简单场景团队合作:既能实现 API 分享也能能够创立云空间独特合作Postcat 劣势:免登录即可测试:省去繁琐的验证登录的操作界面简洁:没有冗余的性能与简单选项收费:中小团队以及集体应用丰盛的插件:反对数据迁徙、主题、API 平安等高达 25 款插件国产:能更好的了解国内用户的需要,与开发团队沟通无障碍欠缺的用户文档:跟着操作就能疾速上手多提 Issue !多反馈!在应用过程中有任何疑难,能够进群交换,也能够在线提 Issue(强烈推荐这种开源的形式),提问题自身就曾经在奉献社区了: ...

April 25, 2023 · 1 min · jiezi

关于测试工具:阿里云EMAS移动测试最佳实践|马来西亚第一大电子钱包通过EMAS测试提效6倍

Touch'n Go eWallet 简介 & 面临APP测试挑战Touch'n Go eWallet (以下简称 TNG eWallet)是马来西亚第一大电子钱包,目前已领有超过1850万注册用户。作为马来西亚国民级金融类挪动利用,任何App品质与体验问题都可能对C端用户造成重大影响。此外,公司业务正处于高速倒退阶段,仅过来一年中TNG eWallet就上线了如领取红包、TNG NFC等超过2000个新产品性能。这也为其品质治理团队带来了如下挑战: 产品迭代速度快,团队手工测试效率瓶颈凸显,且TNG eWallet 的金融属性更要求挪动端测试须要全面精准无脱漏;团队手头现有机型数量有余,难以全面检测出各类兼容性、UI适配等问题。同时,洽购测试手机的投入产出比低;疫情下员工近程办公,手边物理真机无奈共享应用,团队协同测试效率大幅升高,传统模式难以满足以后测试须要。TNG eWallet 应用EMAS挪动测试最佳实际阿里云EMAS挪动测试一站式利用品质治理平台,为客户和开发者提供自助式、管家式的全方位测试服务,帮忙客户发现App中如兼容性/功能性/UI适配/性能等方面问题与隐患,从而全面保障App品质。 阿里云EMAS针对TNG eWallet测试团队面临痛点与挑战,通过公共云上的云真机平台高效输入测试产品服务如下: 1. SaaS化测试平台提供全流程测试能力且实现团队协同 TNG eWallet能够在云上进行利用治理、脚本录制、自动化测试、在线测试报告查阅等测试全流程工作。疫情期间,TNG eWallet测试团队可通过EMAS测试平台放弃高效合作沟通,且web形式间接调用机房内物理真机解决了之前手头真机无奈共享应用的问题。 2. 丰盛全面的机型笼罩保障测试无脱漏 EMAS测试机房内,有超过300款笼罩东南亚市场的支流手机机型物理真机。EMAS机型覆盖度相较TNG eWallet之前单干过的测试厂商拓展了2.4倍以上,更能满足TNG eWallet对于东南亚市场支流机型测试场景的须要。 3. 通过在线脚本录制性能让测试用例产出效率晋升6倍 随同TNG eWallet业务的高速倒退,须要进行测试的APP端功能模块随之迅速增多。EMAS挪动测试平台让TNG eWallet辞别传统通过代码编写测试脚本工作,转而通过在线形式疾速产出测试用例,生产效率较之前晋升6倍以上。测试人员只需通过EMAS真机直连操作App进行相应动作(如登录、浏览、领取等),零碎便会自动化产出测试脚本,并可间接用于批量兼容性/功能测试等。 通过上述形式,TNG eWallet在测试团队规模简直维持不变的前提下,用6个月工夫产出并治理了超过1000个测试脚本,完满撑持了数以千计新性能迭代上线的测试需要。 4. 具体残缺的测试报告,精准辨认、定位回溯线上问题 阿里云EMAS测试平台提供内容丰盛的线上测试报告。其中不仅有报告数据汇总剖析,还可通过视频回放性能随时随地清晰理解如解体、卡顿、性能异样等各类状况,并帮忙测试人员疾速定位问题所在。借助平台线上测试报告,TNG eWallet测试团队可与其技术研发团队更加高效协同,第一工夫发现品质隐患,精准锁定问题并推动在发版上线前进行问题修复,从而确保上线新性能的稳固可用。 综上,通过对于EMAS挪动测试平台的应用,客户真正实现了App测试畛域的降本增效。在团队测试QA人员规模维持不变的状况下,TNG eWallet在半年工夫内实现了1000个测试脚本的高效产出,用自动化测试伎俩笼罩了绝大部分功能测试工作。每2小时内,他们即可实现基于测试脚本30台手机并发的功能性测试并获取线上报告,大幅冲破传统手工测试的人力与效率瓶颈,完满护航了超过2000个APP新性能上线,全面保障了TNG eWallet的用户体验和市场竞争力。 将来瞻望阿里云EMAS挪动测试已服务国内外数以千计的企业,积淀了丰盛的企业挪动数字化转型计划与教训。目前,杭州机房内领有超过700款真机笼罩中国大陆测试市场,香港机房内领有超过300台次要笼罩东南亚市场的物理真机。EMAS挪动测试让客户能够通过所见即所得的SaaS化形式实现近程调试、脚本录制、问题复现等测试需要。此外,通过“专家测试”服务模式,客户能够取得管家式的全流程测试撑持,只需提出测试需要,即可在2天内取得全面详尽的专家测试报告。 随着挪动端测试理念与技术的倒退,越来越多处于数字化转型的企业将会领有更加欠缺的测试团队并须要更加先进高效的测试工具从旁加持,用更少的人力投入,更短的测试工夫以及更低的老本耗费实现更高质量的测试工作产出。 在此倒退过程中,阿里云EMAS挪动测试平台也会在用户体验、性能翻新等方面继续晋升,继续为TNG eWallet等海内外企业的挪动利用提供更全面更牢靠的测试服务,全面护航APP品质以及企业数字化转型倒退过程。

April 3, 2023 · 1 min · jiezi

关于测试工具:性能测试难做RunnerGo帮你搞定

在以后软件测试行业,熟练掌握性能测试曾经是测试工程师们面试的敲门砖了,还有很多测试敌人们每天的工作更多的是点点点,性能方面可能也只是做过简略的并发测试,对于编写脚本,搭建环境方面也比拟生疏。明天就给大家梳理一下如何去做性能测试,和怎么熟练掌握性能测试。文章构造如下: **1、性能测试怎么做? 2、性能测试中测试人员关注的指标和指标剖析 3、性能测试进阶篇** 性能测试怎么做?测试工具抉择:倡议大家试试RunnerGo这款工具,相比拟jmeter更简略,比拟适宜疾速上手。 测试目标是什么?被测系统是什么?测试场景是哪个?性能指标有哪些?次要确定这几点就能够了,而后针对这几点来编写脚本。 测试环境筹备:RunnerGo不须要在发压机下来运行,间接登录他们的官网注册就能够间接应用:https://www.runnergo.com/ 脚本设计:咱们依据需要来确定要做性能测试的一些场景和接口和一些性能指标。这里RunnerGo反对从各种Api调试工具导入接口,一键导入能够间接应用。 接口导入后,RunnerGo能够间接引入接口,在背景画布上通过连线的形式来配置场景,一条接口流就是一个场景。 依据需要咱们确定压测模式:RunnerGo内置各种压测模式,一键抉择后配置想要的参数即可。 抉择好压测模式后一条简略的性能测试脚本就配置好了,咱们能够开始测试了。 RunnerGo开始测试后能够实时查看测试报告,脚本运行时咱们就能够依据性能指标来对测试报告进行剖析。这里就实现了一个简略的性能测试。 性能测试中测试人员须要关注的指标和指标剖析:测试人员须要关注的指标: 并发数、吞吐量(tps/qps)、响应工夫、错误率。 测试时执行发压机器性能是否失常,被压测程序所在机器,资源是否失常。 指标剖析: 咱们晓得,一直进步并发,零碎会变得越来越不稳固,响应工夫的稳定也会越来越大,响应工夫也会变得越来越慢,而吞吐量也越来越上不去,包含CPU的使用率状况也会如此,接口错误率也会晋升。在这种状况下,吞吐量曾经没有意义了。所以咱们在测试中须要找到零碎稳固运行的那个压力点,在这个根底下来优化晋升。咱们在出测试报告时要确保各种测试数据的准确性,并且给出更多对于剖析、比拟后果的信息,以及如何取得后果的细节。 性能测试进阶篇性能测试进阶次要是须要将编写好的测试脚本放到继续集成工具中,将咱们性能测试降级为性能自动化,如果相熟jmeter和jenkins的话间接部署就能够了,对于不相熟的小伙伴集体倡议还是用上问咱们提到的RunnerGo自带的自动化测试,能够间接将咱们配置好的性能脚本设置成定时工作,配置好之后就能够继续集成了。执行实现之后能够间接将测试报告发送到指定邮箱。

March 28, 2023 · 1 min · jiezi

关于测试工具:最近很火的一款测试平台浅谈RunnerGo使用体验

最近有幸试用了一款开源测试平台RunnerGo,这篇文章谈谈RunnerGO的一些不同之处和作者的一些应用体验。RunnerGo是什么?RunnerGo是一款全栈(能够笼罩整个测试流程)、轻量级(基于go语言研发)的开源测试平台上面附上官网和开源链接。 官网链接:https://www.runnergo.comGitHub地址:https://github.com/Runner-Go-Team/Gitee地址:https://gitee.com/Runner-Go-Team RunnerGo的不同之处1.测试工具平台化RunnerGo作为一款web平台能在线做到接口治理,脚本编辑,场景编辑,报告治理。并且在这些性能的根底上反对团队合作,这些是jmeter这些传统不具备的。 2.全栈式相比拟测试工具来说,代码治理、继续构建、继续部署等其余研发工具可能很好的笼罩整个工作流程,而测试工具在性能方面往往是针对单点性能,对于整个测试流程笼罩不全。RunnerGo反对从接口治理—场景测试—性能测试—自动化测试整个的一个测试流程。 3.功能强大,上手简略RunnerGo内置了各种工具,解决传统工具的一些应用痛点:压测模式抉择:与jmeter须要下载插件不同,在配置脚本时能够抉择阶梯模式,并发模式等压测模式。测试报告实时查看:相比拟jmeter来说:在做性能测试时RunnerGo反对实时查看服务器状态、测试报告、debug日志并且反对发送测试报告到指定邮箱,而jmeter默认不反对性能监控,只能是在GUI模式下,通过扩大监听器插件来实现,并且No-GUI模式下只能生成后果报告。自动化测试:反对配置定时工作,不必应用扩大插件,简略配置即可实现继续集成。 RunnerGo应用体验首先对于接口治理和性能测试方面还是十分称心的,能够间接从各种Api调试工具中导入接口,反对断言,变量提取,环境治理等性能。性能测试也十分不便,特地是压测模式抉择,应用体验十分好。测试开始就能看测试报告,压力机状况。其次是场景治理和自动化测试集体感觉还是须要欠缺一下的,目前不反对UI自动化测试(后续会推出),场景治理中目前只反对条件控制器和期待控制器两种(后续会新增)。不过这些并不影响RunnerGo是一款十分好用的产品。十分举荐大家应用。以上就是本篇文章的所有内容了,感激浏览。

March 17, 2023 · 1 min · jiezi

关于测试工具:互联网工具平台化的今天测试工具的未来在哪里

互联网行业的倒退到明天越来越多的公司更加重视工作效率和团队合作,越来越多的产品也趋于平台化,平台化也更有利于进步团队效率,代码治理、继续构建、继续部署这些工具的倒退都是十分超前的,它们对于团队合作的反对和工作效率的晋升非常明显。比照下来测试工具的倒退是显著滞后的。传统测试工具比方jmeter,loadrunner,这些工具在一些单点性能上体现可能不俗,但它们广泛在团队合作,工具平台化上没有建树。 在我看来,测试工具应该是反对团队合作,能够让每个人参加进来,比方当初要做大规模性能测试的话肯定是研发配合测试再配合运维去做的,然而他们的行为都扩散在各自的工具上。这种场景是不是能够实现?或者可不可以有一款笼罩整个测试流程的测试工具,从接口到性能到接口自动化,从UI测试到UI自动化。我想这可能就是测试工具的倒退将来吧。 也有幸理解到有一款开源测试平台,RunnerGo。看到他们的产品理念:为研发赋能,让测试更简略。理解了这款产品的产品经理的一些想法:想解决传统工具的一些应用痛点,扭转测试工具的现状。这些点跟作者的想法还是十分有共鸣的。应用之后也感觉不错,所以举荐给大家。上面附上他们的官网和开源链接。 官网链接:https://www.runnergo.comGitHub地址:https://github.com/Runner-Go-Team/Gitee地址:https://gitee.com/Runner-Go-Team RunnerGo相比拟传统测试工具的劣势开源:RunnerGo采纳了较为宽松的Apache-2.0 license开源协定,号召开发者一起为开源贡献力量。 平台化:团队合作肯定是互联网工具的倒退方向,平台化能力更好的推动合作。 全栈式:反对从接口调试-场景治理-性能测试-自动化测试。一个平台笼罩全测试周期。 易上手:内置各种测试工具无需下载各类插件,上手就能测。 RunerGo的性能特点1.反对接口治理性能,反对团队合作,调完接口就能压测。2.得益于应用go语言研发,采纳分布式架构,可能轻松反对大规模压测。相比拟其余性能测试工具更加轻量级,性能测试后果更精确。3.反对实时查看测试报告,和压力机状况。4.为了晋升工作效率缩小不必要的操作,RunnerGo自研可视化场景配置,压测模式抉择,操作简略,配置直观。5.RunnerGo简化了自动化测试的配置步骤,可配置定时工作,实现继续集成。以上个性让RunnerGo不同于其余工具,集体感觉它的倒退方向也是所有测试工具的一个倒退方向:一站式的测试平台。

March 16, 2023 · 1 min · jiezi

关于测试工具:RunnerGo相较于Jmeter优势在哪里

RunnerGo,是一款基于go语言研发的开源测试平台。本文将从性能测试方面和构造方面还有性能方面比照两款产品。 性能方面:Runner基于go语言研发,绝对于jmeter来说更轻量级。所以性能测试方面RunnerGo应该是优于jmeter的这里我做了个压测比照,实在比照一下:一条应用查看新闻的场景:六个接口,应用并发模式,20的并发,执行10分钟。雷同的配置下进行压测jmeter聚合报告:RunnerGo间接发送到邮箱的测试报告因为计算形式不同这里只比照总申请数,汇总下来:RunnerGo总申请数:98640个,错误率:0jmeter总申请数:91219个,错误率:0比照咱们发现雷同配置下RunerGo收回了更多的申请,而成功率都是百分百,所以RunnerGo在性能测试方面的确是优于jmeter的。 性能方面:在用jmeter做性能测试时想看残缺一点的测试报告,想配置阶梯模式来压测,想配置不同的接口并发这些都须要装置插件并且影响机器性能,想做自动化测试还得放到jenkins,这些配置起来太繁琐。RunnerGo则比较简单:不须要扩大插件即可实时查看测试报告内置多种压测模式平台自带的继续集成和自动化测试配置 构造方面:jmeter的单机模式在个别的压力机配置下,会受限于jmeter本身的机制和硬件配置,最多能够反对几百至一千左右的模仿申请线程。想部署分布式集群测试会带来十分多的运维治理问题。同时,Master-Slave模式,还会给主节点带来很大的交互压力,部署大规模的分布式集群压测十分难做到。RunnerGo自带分布式构造轻松反对大规模并发。综上所述RunnerGo在构造、性能、性能上都优于jmeter,并且适应互联网工具平台化趋势。 当然RunnerGo也有一些须要改良的中央:对我集体来说,RunnerGo目前只反对http协定的性能测试,不反对连贯数据库,合作性能也没有那么欠缺等等,这边也心愿他们能尽快迭代产品,让RunnerGo更弱小。最初附上官网和开源链接感兴趣的小伙伴能够关注一下~官网链接:https://www.runnergo.comGitHub地址:https://github.com/Runner-Go-Team/Gitee地址:https://gitee.com/Runner-Go-Team

March 16, 2023 · 1 min · jiezi

关于测试工具:测试工具覆盖不了整个测试流程试试它

测试敌人们应该很苦恼这件事吧:研发用apipost、postman,测试人员用jmeter,或者测试接口治理用在postman,压测的时候用jmeter。总结一下就是,接口管理工具不对立,或者测试工具不对立。针对这种状况,这里给测试敌人们举荐一款开源测试平台RunnerGo,从接口治理到性能测试再到自动化测试真正做到笼罩整个测试流程。上面附上官网地址和开源链接。官网链接:https://www.runnergo.comGitHub地址:https://github.com/Runner-Go-Team/Gitee地址:https://gitee.com/Runner-Go-Team 说到这里应该有小伙伴要质疑了:RunnerGo又是接口治理又是性能测试、自动化测试。性能有这么精通吗?听小编一一解答。 RunnerGo的性能介绍接口治理能力RunneGo提供十分弱小的接口治理能力,反对从postman、swagger、swaggerurl、apifox、apizza、yapi等文件导入,能够进行参数化、变量提取、断言、环境治理等操作。 场景测试能力RunnerGo自研可视化场景配置,在配置时用户能够在场景画布上连贯API,创立期待控制器、条件控制器来组建一条残缺的场景流测试。 性能测试能力RunnerGo分布式架构轻松反对大规模性能测试,灵便配置接口权重,,实时查看性能测试报告。并内置多种压测模式:并发模式、阶梯模式、错误率模式、响应工夫模式、每秒应答数模式,一键抉择即可满足不同的业务需要。 自动化测试能力RunnerGo反对接口和性能的自动化测试,反对继续并发,反对定时测试工作,测试完结还可发送报告至指定邮箱。 RunnerGo跟传统性能测试工具有什么不同?内置压测模式抉择:内置了并发模式、阶梯模式、错误率模式、响应工夫模式、每秒应答数模式等多种罕用压测模式,笼罩绝大多数压测场景,满足各种简单业务的须要。可视化场景配置:这是用RunnerGo配置的一条登录场景:依据随机值进入登录页面和注册页面,简单场景配置起来更简略。实时查看测试报告:测试工作在执行时能够查看服务器状态debug日志。以上就是RunnerGo的一些特点了,集体认为RunnerGo确实是一款功能强大,应用简略的测试平台,相比传统性能测试工具是有一些独到之处,十分举荐测试团队或研发团队应用。

March 16, 2023 · 1 min · jiezi

关于测试工具:测试角色在项目各阶段的项目管理tips

作者:京东物流 宋雪薇1 前言项目管理是一个繁冗的过程,每个阶段须要波及到不同人员、资源的协调配合。每个角色都有本人的定位和工作,为了紧密配合项目经理或无调配项目经理运行我的项目的场景下确保我的项目成员独特达成我的项目指标,不同的角色把握相应的项目管理意识就尤为重要。 那么,测试角色作为我的项目交付的品质把控者,具备相应的项目管理意识在我的项目的高质量、高效率交付指标上有着重要作用,如前置辨认品质危险、进度危险等。本文旨在梳理、议论测试角色在我的项目各阶段如何评估测试范畴及危险、前置裸露问题以及推动测试进度等项目管理事项,高效合作及交付测试角色产物,最终与我的项目各方独特推动达到高质量、高效率交付的指标。 2 现状及思考在现有麻利迭代疾速交付模式下,针对某一需要/我的项目会拆分至各个团队,各个团队节奏及交付指标不完全一致,且无项目经理角色跟踪推动的状况下,存在后置与合作团队沟通确认事项,如:未拉齐依赖方排期、后期未辨认出改变零碎、需要/设计变更未及时同步相干方、无设计方案沟通导致提测内容不满足提测规范,等均可影响交付节奏。那么作为测试角色的咱们能够做哪些事件? 外围宗旨:高效沟通合作,提前思考后续阶段较容易影响进度、品质问题及危险点,裸露问题,前置沟通、评估及推动相干事宜;防止问题后置裸露在测试阶段;下一章节就让咱们来详谈各个阶段测试角色可提前关注事项,与各方高效合作独特推动解决的相干tips。 3 详谈测试染指各阶段的项目管理tips3.1 需要评审阶段软件测试的第一步就是需要评审,只有对软件需要做了精确、残缺的评审后,能力对接下来各种测试工作的发展做好根底,如需要评审了解偏差,前期很多测试工作都将会受到影响。 需要评审实现需理解哪些信息: 优先级——辨认我的项目/需要重点水平,优先级,以及冀望上线工夫状况(定位后续跟进力度)需要背景——该需要基于什么业务背景革新(便于需要了解不偏差及后续测试阶段重点关注的外围指标)改变范畴——评审改变范畴基于现有零碎是否有抵触、是否明确正当,是否影响其余零碎,也可关注下体验问题(防止后续开发测试阶段流程不通返工)辨认改变/交互零碎——明确该需要是否波及其余零碎改变,辨认改变零碎/是否需配合联调零碎(辨认改变零碎前置协调拉齐相干零碎周期,防止后续阶段长期协调资源状况)测试节点——软件须要进行哪些方面的测试,如功能测试、联调测试、回归测试、性能测试、稳定性测试、兼容性测试、平安测试等测试环境——明确交互零碎是否反对测试环境联调(可前置协调/前置确定联调计划,防止后置沟通确定环境占用测试周期)测试数据——依据改变范畴思考测试数据起源,辨认是否可外部闭环造数,是否可应用测试小工具测试形式——可前置思考应用功能测试、自动化测试测试人员——辨认测试干系人、明确主测试方(如重点项目/需要须要主测试状况)3.2 设计评审阶段设计评审为评估设计满足品质要求的能力,辨认问题及提出解决办法。设计过程中越早减少质量保证流动对最终设计成果的影响就越显著。目前较大我的项目/逻辑较简单需要/研发优化,均需研发输入设计评审文档并邀请测试参加波及评审。 设计评审时须要check的内容: 设计思路满足需要——联合需要背景及内容优先关注设计思路是否与需要评审阶段了解的有偏差设计内容是否存在脱漏——评估是否存在脱漏性能关注实现形式——实时、异步等解决形式对后续测试排期、形式及测试难度有参考价值评估改变设计影响——基于原有零碎改变除本次需要批改内容是否影响原有性能,是需明确影响范畴,研发侧输入影响范畴明确阶段范畴——依据需要是否存在拆解阶段交付,是需明确各阶段交付内容交互方/依赖方实现形式——关注交互方/依赖方实现形式UAT/灰度/上线计划——依据上线个性,前置沟通UAT/灰度/上线计划3.3 排期阶段排期阶段是项目管理中重要的一环,时常在此阶段会裸露一些危险,排期容易呈现两个问题,一是排期不合理,二是后续不能依照排期稳步推动,好的排期就要尽量避免这两个问题,那么测试阶段正当的排期就需尽可能多的参考该节点及之前节点我的项目各方提供的无效信息,全局评估、拆分工作交付,最终提供较正当排期。 输入测试排期须要思考的维度: 参考我的项目重点水平、优先级——是否优先级与已排期需要抵触,需参考优先级调整资源及排期联合需要、设计参考及核查研发工时及排期、阶段交付内容——研发提供拆解后的工作排期是否正当(前置性能是否提前交付,依赖的工作是否有序等),测试根据研发排期工夫提供可并行/串行等较正当的测试排期关注研发是否有联调排期——需保障提测品质,工夫紧工作重状况下是否压缩研发联调排期,可能影响提测品质及测试交付工夫测试联调排期——测试输入联调周期需拉齐对接零碎排期(可协同产品沟通拉齐),防止长期协调联调工夫导致延期APP排期——需确认实现形式为:原生/flutter明确计划是否存在变更——可再次明确需要/设计方案是否存在变更未同步状况明确主测试方——如波及多方零碎,排期阶段可明确主产品、主研发、主测试方3.4 测试用例编写、评审阶段测试用例的编写必须根据需要文档,联合设计方案,确认所有以疑难点,笼罩所有性能需要点,跟进需要状况输入冒烟测试用例、性能测试用例、联调测试用例,思考业务实操场景,模仿用户场景串联流程保障测试内容的高笼罩。并在用例评审节点邀请产研参加评审,有序进行用例评审,确认疑难独特欠缺测试点并会后输入评审会议纪要。 测试用例编写、评审阶段须要留神的事项: 确认需要文档版本及规范——明确最新PRD版本(存在产研线下沟通后未同步测试状况,尽量避免),如有原型需明确原型及PRD内容形容不统一状况下如何发展测试工作思考细节逻辑合理性及歧义形容——思考细节逻辑形容是否正当,PRD形容存在歧义点需标注明确蕴含充沛的异样测试用例——丰盛异样用例,防止异常情况下性能异样辨认用户体验问题——提示信息是否明确、页面性能是否易用业务范围和零碎设计维度补全用例——跟进需要及设计细化测试维度丰盛测试用例测试数据、账号、配置等——辨认测试数据、账号及配置是否需协同方配合,是否可应用工具等晋升效率,如需全流程连通在该阶段记录测试用例评审——与产研侧确认测试范畴、沟通疑难,评审用例设计的清晰度与合理性,优先级排定是否正当,是否笼罩了需要上所有测试点,用例是否具备很好的可执行性,用例的冗余解决机制,是否设计了短缺的异样测试用例,是否从用户的角度登程来设计用户应用场景和应用流程的测试用例,是否简洁、复用性强。联调用例评审——输入交互场景与交互方评审,如为主测试,评审前串联整个我的项目/需要的流程场景用例,组织评审、明确测试数据、账号、配置等信息用例评审会议纪要——记录待确认点及已确认点3.5 编码阶段编码阶段作为研发角色流动,通过编码过程来实现产品需要,此阶段的异样等需相干方知悉; 研发阶段需同步的信息: 需要/计划变更——是否存在需要/计划变更,是否及时同步至产品、测试侧是否有提测延期危险——存在延期危险会压缩后续测试周期,需前置辨认并抛出3.6 代码评审阶段代码评审是研发全流程的工程实际之一,通过代码评审能够更好的保障产品质量和代码品质;可依据改变大小与研发侧沟通进行线上/线下等评审形式参加。 代码评审阶段需测验的规范: 慢sql、空指针等——可无意识评审慢sql、空指针等问题业务逻辑——测试人员需关注是否有显著的逻辑谬误,改变是否遵循业务逻辑补全回归用例——跟进改变范畴可辨认需改变影响原有性能局部,特地留神需确保主流程是否影响,补充回归用例文档——提供新接口/批改接口是否有相应的接口文档更新保护需要抵触辨认——关注改变范畴,辨认其余需要是否也存在改变该段代码问题,防止需要抵触进步集体代码评审能力——学习研发针对代码评审的意见/倡议以及好的代码实现逻辑,便于问题更早的发现(以及代码编写标准、可读性、可维护性等)3.7 冒烟测试阶段冒烟测试是指在对一个新版本进行零碎大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性,尽早发现较阻塞进度问题,提前辨认。 冒烟测试阶段重点关注的维度: 基本功能验证——优先验证基本功能是否可用,便于后续逻辑等较简单性能发展主流程验证——优先辨认主流程问题,防止流程阻塞,妨碍测试进度,提前裸露流程问题及危险(形式根据我的项目/需要状况无效采取手工/自动化形式进行)3.8 功能测试阶段(内部测试阶段)功能测试阶段开始了大规模的测试工作,在此期间认真详尽的测试, 功能测试阶段外围把控的思维: 明确变更同步——针对测试阶段任何变更需同步至相干方,防止一方不知情辨认需要抵触——独特测试需要,测试分支、需要相互影响测试数据高效应用——剖析测试数据是否可验证多用例,高效应用测试数据验证尽可能多用例晋升效率测试问题务必抛出——测试阶段发现的问题即便较小也须要抛出来提供给相干确认方确认,如无需更改则记录相干论断探索性测试——探索性测试,可在测试阶段发现后期未辨认到的影响性能等测试进度报告、危险抛出——针对工夫较长/较大需要、我的项目发送测试进度报告,裸露危险(辨认是否有影响进度、品质等危险问题,抛出问题,记录待确认问题及已沟通确认问题3.9 联调测试阶段(蕴含研发联调、测试联调)联调测试为了保障该需要/我的项目的所有改变场景下发的数据在全链路零碎下失常流转闭环,笼罩用户实在实操场景来确保我的项目/需要的交付品质。 联调测试阶段重视: 研发联调环节——再次核查波及零碎交互需要/我的项目,研发联调工作是否笼罩主流程测试点联调场景验证——与全链路零碎进行联调测试验证,笼罩用户实在实操场景补全联调场景——在联调阶段,可能存在场景笼罩不全状况,可有选择性理解上下游零碎逻辑,可笼罩补全联调场景,且针对接口及音讯尽量全的确保数据传输场景3.10 稳定性测试(实用于APP) 为保障APP端用户体验,APP稳定性测试不可或缺,上线前针对上线版本进行稳定性测试已退出到APP测试流程中,日常针对APP稳定性随机测试也继续监控。 稳定性测试需监控: 解体率——监控阿凡达平台统计,剖析APP线上解体起因,丰盛稳定性测试脚本CPU实时监控——记录稳定性测试期间对应版本的CPU占用数据,平均值、最大值内存实时监控——记录稳定性测试期间对应版本内存占用数据,平均值、最大值网络实时监控——记录稳定性测试期间对应版本流量占用数据,平均值、最大值3.11 UAT阶段UAT阶段次要为业务验收阶段,用户角色验收产研测交付内容,为确保UAT顺利进行,较大我的项目/需要测试人员有针对性进行主流程拉通测试可提前发现配置、环境因素所产生的问题,此环节可放慢UAT进度确保我的项目更高效交付(该阶段可依据我的项目诉求调整)。 UAT阶段应保障: 拉通主流程——依据我的项目/需要大小确定是否需拉通UAT,防止UAT因配置/环境等起因产生流程阻塞跟进/复盘UAT问题——针对较大我的项目/需要跟进及复盘UAT中产生的问题,躲避反复问题产生事项3.12 上线前master回归测试阶段上线前master回归未确保长时间需要不上线分支及版本抵触等因素,上线以后进行master回归操作可无效确保公布内容运行稳固,保障品质。 master回归阶段需check: master回归测试——回归上线性能主流程以及原有流程主流程,躲避测试分支与上线分支代码抵触等问题4 裸露危险最终与合作方独特确定运作策略在我的项目各环节已前置思考可能带来的危险,提前躲避、提前裸露,但并不能齐全保障,那么在裸露危险后,可参考危险水平剖析与分类定位,与我的项目各方高效合作,独特商讨解除危险的可行性计划以及后续运行策略。 4.1 危险水平剖析极小:没有危害或渺小危害 20%轻度:轻度危害 40%中度:中等 60%重度:较大危害 80%极大:重度危害 100%4.2 危险辨认分类/合成构造技术类:明确是否为需要/技术层面引起的危险组织类:明确是否为我的项目依赖关系、资源等起因引起的危险内部:明确内部影响具体起因4.3 与合作方独特商讨危险推动计划测试人员可依据测试角度定位危险优先级,优先解决危险程度较高问题,且优先级较高风险需同步至下级知悉,必要时可采取降级等形式解决; 如为技术类危险——与项目经理、产品、研发独特评估技术层面解除计划;如为组织类危险——与项目经理、产品、研发独特协同调整计划/申请资源等形式解决;如为内部危险——测试人员需提供具体问题,协同项目经理、产品沟通具体起因,采取绝对应的应答措施;4.4 举例说明4.4.1 举例一 背景:治理工作台我的项目(优先级top1,交付工夫紧,开发工作量大) 产生问题:因测试周期时间紧,为防止延期提测,测试在研发阶段明确提测工夫时,发现提测存在延期危险 危险水平剖析及分类:组织类-重度危险 (辨认阶段:研发阶段,辨认及反馈角色:测试人员,类型:进度类)与合作方商讨推动计划(解决过程及计划): 因我的项目优先级较高,测试人员将此危险反馈至主产品及产品负责人处,因各方后期理解的信息存在差异化/关注点不统一等,线下拉齐会议沟通,依据交付优先级拆解交付内容,迭代提测进行测试,最终拉齐前、后端研发、测试交付指标统一,并调配资源进行各项任务交付,危险解除。小结:根据危险水平,可外部解除的疾速推动落地,需耗时较长/协调资源等需及时反馈至下级沟通,确保危险尽快解除落地。 5 总结前置评估、高效合作 保障在前置阶段通过测试经验总结提前思考后续阶段会带来的影响,蕴含但不仅限于:信息不同步、影响范畴不明确、依赖关系不清晰等,前置无意识的辨认较容易影响进度、品质问题及危险点,并裸露问题,继而与相干合作方高效合作、评估及推动危险点解除,防止问题后置裸露在测试阶段甚至交付上线阶段。

February 24, 2023 · 1 min · jiezi

关于测试工具:优测API监控省时又省力

优测API监控为用户提供全天候监控用户的API,保障用户随时都有良好的拜访体验。帮忙用户随时理解到API的实时运行状况,疾速定位到异样问题,省时省力。API监控平台的个性1、省时省心全天候监控API,节俭人力,疾速定位API异样问题,保障线上稳固运行,节俭排查异样工夫。2、灵便配置告警信息自定义告警规定和频率,反对多种告警形式,保障及时告诉相干运维人员。3、具体的监控统计集成整体监控状况,主动生成丰盛的可视化图标,不便用户随时随地理解近期API的详细情况、包含正确率、失常响应工夫等。API监控平台的性能介绍API全天候监控:反对API全天候秒级监控,疾速新建API,简略高效。1、疾速发动监控打算,反对多种形式建设监控API一键式疾速发动监控打算反对多种形式建设、导入监控API。2、提供丰盛的监控配置,灵便配置告警信息反对多种监控配置,包含:超时工夫、监控频率、监控节点反对自定义逻辑断言,校验监控API反对灵便的告警形式,包含:webhook、电话、邮箱等反对自定义告警规定,更好的满足用户不同需要。API监控实时数据统计:提供详尽的监控数据统计,不便用户随时排查定位1、可视化数据统计提供可视化数据统计,通过丰盛的图表详尽展现监控API正确率、错误类别、响应工夫等反对查看近期具体的执行记录和告警记录,不便用户随时查问。2、反对历史数据生成历史报告反对历史过期数据生成历史月报,不便用户查问晚期数据。 分割咱们 官网:https://utest.21kunpeng.com/h...企业微信:

January 31, 2023 · 1 min · jiezi

关于测试工具:优测云真机千款真机在线体验

云真机是优测旗下的一款云端实在手机测试产品。优测领有千台实在手机,笼罩99%市场支流机型,反对7X24小时设施在线服务,实在听感、视感、触感模仿操作,疾速定位机型问题。 云真机的个性1、千款真机在线体验领有3000+款实在手机,笼罩99%支流机型,精准笼罩九成以上指标用户群体。2、操作高效便捷随时随地进行设施调试,真机租用+命令行无缝操作,疾速发现问题。3、问题定位精确报告残缺,提供截图、日志数据文件,反对视频输入。 云真机的性能1、近程设施操控。海内外智能设施通过web浏览器近程在线应用操作,可近程操作各类性能。次要特点√如临现场实在体验。对设施声音进行采集,反对在线播放,并保留设施形状,例如异形屏等。确保用户多方位测试需要,进步用户测试的真实性、准确性。√画面清晰晦涩、操作灵活。使用优测独特技术计划,进步图像传输效率,确保画面清晰晦涩,操作灵活,无效节俭了用户应用的工夫。√设施品种多样,缩小洽购老本。反对IOS、Android等终端设备,企业可通过咱们的云真机服务在1分钟内获取所需指标设施的管制使用权,节俭企业大量的购机老本和工夫老本。2、近程设施调试。Android平台的设施可在本地通过ADB进行近程调试,即享受本地调试的便捷又可应用实在终端设备。次要特点√放慢问题定位,进步开发效率。轻松链接IDE进行本地调试,反对adb命令。大大减少开发考察、解决问题的工夫,进步了开发效率。3、设施托管。用户可将本人的设施托管到云真机实验室里,供异地受权的其他人近程应用。次要特点√高效设施利用率。跨地区企业,可将本人外部的手机等智能设施托管到优侧云真机平台上,使得不同地区研发团队可共用一套设施,晋升了企业设施的应用效率。 分割咱们热线:0755-86013388-843186官网:https://utest.21kunpeng.com/h...企业微信:

January 30, 2023 · 1 min · jiezi

关于测试工具:混沌演练实践一

作者:京东科技 孙民英一、混沌工程介绍1.什么是混沌工程混沌工程是通过被动制作故障场景并依据零碎在各种压力下的行为表现确定优化策略的一种零碎稳定性保障伎俩,简略说就是通过被动注入故障的形式、提前发现问题,而后解决问题躲避危险。 2.为什么要进行混沌演练随着互联网业务倒退,微服务架构、分布式架构和虚拟化容器技术的宽泛遍及,软件架构的复杂度在一直晋升,服务之间的依赖所带来的不确定性也成指数级增长,在这样的服务调用网中,任何一环呈现的失常或者异样的变动,都有可能对其余服务造成相似蝴蝶效应个别的影响。目前营销体系的服务量级一直减少,整体链路增长以及数据流转简单,对整个零碎的可用性、稳定性挑战也越来越大,所以引入混沌演练,被动找出零碎中的软弱环节,而后针对性地进行加固、防备,从而防止故障产生时所带来的严重后果,进一步晋升业务零碎的高可用,进步业务零碎应急保障能力。 3.混沌演练的价值利用混沌演练能够对系统抵制扰动并放弃失常运作的能力进行校验和评估,提前辨认未知隐患并进行修复,进而保障系统更好地抵挡生产环境中的失控条件,晋升整体稳定性。 二、混沌演练实际1.演练流程介绍目前借助京东云RPA自动化服务平台(https://rpa-ops.jd.com/app-ma...)进行混沌攻防演练,测试人员为红方(攻打方),研发人员为蓝方(防守方),红方随机筛选一个时间段,针对服务零碎注入故障(比方:CPU使用率达到100%、网络提早、JSF接口响应提早等),蓝方负责故障感知以及应急解决,通过这样的形式,达到针对零碎高可用的应急演练。 红方: 创立演练打算: 通过拜访RPA自动化服务平台,进入工具市场——演练类,抉择不同的故障计划,点击“立刻执行”; 演练配置: 点击执行后,进入配置页面,抉择执行环境,选取要演练的利用,并随机选取要演练的实例IP; 执行演练: 演练工作创立实现后,在对应的演练工夫范畴内,审批通过后,开始依照抉择的演练工作开始执行; 蓝方: 故障排查: 在演练过程中,蓝方通过报警信息,先对模仿故障的实例机器,进行排查; 复原计划: 演练中发现问题要及时复原,演练后对模仿故障的实例机器进行重启复原,确保机器失常运行,各项性能指标复原; 2.首次演练实际2.1 筹备阶段混沌演练筹备阶段是设计演练策略,次要有设定演练的考核指标,抉择演练的场景、利用和机器,生成相应的演练打算,周知相干人员。 其中筹备阶段最重要的是做好危险评估 ,依据零碎的等级或者混沌的成熟度,初期演练一些简略的事件比方高CPU、高内存;等零碎抵抗力逐渐晋升演练比拟高级的事件如网络提早、过程终止等。 2.2 执行阶段演练场景执行,执行故障注入,测试人员应察看日志和系统监控,记录指标变动状况。 执行场景JSF接口响应提早100ms,因接口超时工夫为50ms,能够在监控图中看到故障注入期间接口超时失败率100% 2.3 复原阶段故障发现及排查定位:演练进行中,蓝方当时不晓得演练哪些故障场景(目前是通过预发演练,研发侧能明确受影响的机器),蓝方通过收到报警,对报警信息进行排查,摹略引擎零碎针对报警信息做出反馈和应急解决。 蓝方发现故障 CPU使用率负载故障,报警机器与演练机器雷同,重启服务后,应用服务器响应失常,可用率复原; 2.4 复盘阶段通过本次演练,发现两个待优化的点: 1.CPU应用负载的演练场景,发现了监控告警邮件提早,倡议减少电话和咚咚报警策略; 模仿JSF接口响应超时场景,发现短少失败阈值告警邮件,减少相应告警邮件; 三、混沌演练总结1.典型演练场景借助于平台进行混沌演练,能够升高演练的学习老本,进步演练的效率,目前平台对于罕用的演练场景曾经反对,大家能够在平台进入工具市场抉择相应的演练场景。 2.重要考核指标混沌演练完结后,须要依据演练执行过程和后果,记录演练流程和对应监控指标变动状况,总结存在的问题以及优化计划收回演练报告,对于演练中的关注指标次要是从故障“发现-定位-复原”的时效性指标,上面具体介绍了在实际演练中须要重点关注的指标,如是否有告警监控、零碎容错能力状况,以及响应机制,其中最初灰色局部高可用指标属于摸索局部,会随着零碎以后的理论状况和业务不同有变动,作为探索性指标。 3.关注危险管制混沌演练会对业务和零碎产生破坏性,为了限度发现应用程序破绽的老本,防止不必要的损坏和超出正当测试容许的理论损失对混沌演练做好危险管制是十分必要的。做好危险管制,将演练管制在一个较小的范畴内,防止因为演练失控带来的更大问题。目前在进行混沌演练实际次要通过以下两个方面进行危险管制: ...

January 12, 2023 · 1 min · jiezi

关于测试工具:揭秘百度智能测试在测试定位领域实践

作者 | intelligents 前几篇,别离介绍了测试流动测试输出、测试执行、测试剖析、测试定位和测试评估五个步骤中测试输出、执行、剖析、评估的智能化钻研和实际,本章节重点介绍测试定位环节的智能化实际。 测试定位的次要作用是在构建失败或问题产生后,疾速给出产生该景象的起因,以帮忙景象解决者给出正当的处理措施,升高问题解决时长,升高人力定位老本和问题时长,依据起因进行分类个别也分为两种: 一、根因定位:即给出造成失败的真正起因(如代码问题); 二、行为定位:即给出造成失败的可能操作或变动,以疾速进行处理,升高影响面。 测试定位智能化通过将数据、算法、工程等相干技术有机联合,从问题景象、问题关联数据、零碎关联数据,利用策略或算法给出问题产生的操作项或根本原因,以最终给予问题解决者决策对应的处理行为。在该畛域的实际绝对较少,百度QA也始终在摸索钻研和实际。本章节将从多个实际的角度,本章节将从多个实际的角度,介绍相干畛域的指标、思路、波及到的技术点,心愿能给到大家肯定参考。 一、 基于频谱的问题根因定位基于频谱的问题根因定位冀望能通过定位剖析技术手段,揭露出疑似代码问题范畴,帮助研发和测试人员在定位问题中疾速修复,升高人效。基于频谱的问题根因定位在学术界钻研已久,其思路是利用测试用例执行过程中的程序元素信息(如测试后果、代码覆盖率),对外部代码做逻辑差别剖析,对代码行或代码块进行可疑度排序,从而去定位谬误本源。其次要过程为应用插桩编译后的程序执行被测用例汇合,对每一个测试用例的标记代码块/语句是否笼罩、是否通过进行剖析,以语句/代码块为统计单位,采集<ef,ep,nf,np>四元组特色(ef:失败用例中,该代码块执行的次数;ep:胜利用例中,该代码块执行的次数;nf:失败用例中,该代码块未执行的次数;np:胜利用例中,该代码块未执行的次数),通过多种可疑度公式(如Tarantula,Ochiai,Overlab等),将每个标记代码块/语句计算出一个可疑度值,并依据可疑度分数排序失去最终高风险代码片段汇合。该剖析定位能力较为通用,可广泛应用到如单元测试、功能测试、diff测试等测试流动,大大降低人工排查定位老本,后续也将继续摸索,联合更多代码白盒元素,尝试更多问题根因定位伎俩一直晋升定位能力,目前百度正在将该定位能力集成到自动化测试流水线中。 二、基于错误码的构建零碎定位计划在测试人员的日常工作中,各种自动化任务量大,其中的异样构建数多,流水线执行完后,业务线同学须要花很多人力在问题定位&标注和红灯修复上;同时,很多问题没有彻底闭环,人工解决止于问题标注和手动复原,导致同类问题重复呈现。为了解决此类问题,咱们心愿对自动化异样构建进行主动标注、修复、问题闭环。错误码,是以后零碎问题的一种较为直观反映。业务能联合代码正文、教训等,将错误码翻译为具体的谬误起因;针对这起因个别有两种解决方案,一是能够依附自动化复原,二是须要人工染指解决。咱们将以上过程概括为主动标注策略、自愈策略、问题闭环策略。主动标注策略指由错误码得出谬误起因后,自动化标注谬误分类,节俭人工定位标注耗时。这要求业务线将工作日志接入对立的日志零碎或应用咱们规定的插件,并梳理一份错误码和谬误分类的映射表,在插件核心进行注册。如此在问题产生时,工具便能够捕捉谬误日志,并提取其中的错误码,和谬误分类做映射,并标注。自愈策略根底是主动标注策略。自愈策略接入须要先圈定主动重启的场景,即满足什么条件须要触发自愈,依赖工具产出的错误码,每一种条件为一种自愈子策略。判断以后满足自愈条件时,便触发自愈策略,如呈现红灯时重启环境等。可依据业务线须要,配置超时工夫、模块、内存等多个触发条件和自愈子策略,反对业务线自行定制,较为灵便。问题闭环策略同样基于主动标注策略,和自愈策略能够联合应用。在大概率须要人工染指的场景,主动创立问题的icafe卡片,卡片内容中形容问题、错误码和主动定位后果,由人工来确认问题的解决形式和处理结果。从问题呈现到卡片创立再到卡片状态被批改为解决实现,才算实现闭环。在我的项目业务线试点中,异样工作问题上报率达到100%,问题闭环率达到94%。 三、商业支出变动大盘止损决策定位介绍商业支出变动大盘止损决策定位过程由报警接管, 报警定位诊断、故障特征提取、止损决策、止损计划举荐组成,其外围是笼罩和诊断策略的有效性;其中笼罩又蕴含报警笼罩、指标笼罩两局部;报警笼罩首先须要笼罩产品线的各个子方向,指标笼罩是指对以后已笼罩报警的业务的监控指标齐备性的笼罩,蕴含零碎稳定性指标笼罩、用商指标笼罩、宏观指标&业务过程指标联合齐备性指标的整体笼罩,通过齐备的报警指标笼罩能第一工夫感知商业大盘支出变动危险,基于报警信息制订一套故障特色规范数据结构来解析不同报警取得通用的故障特色;诊断策略对故障特色进行策略剖析并最终给出无效的止损举荐计划,诊断策略的有效性对最终止损举荐的品质至关重要。以后诊断策略次要蕴含危险水平辨认策略用于判断报警危险水平;危险指标&报警辨认策略用于判断零碎关联的危险指标/模块信息;异样点辨认策略用于确认业务实在异样工夫点;日志trace定位策略联合成果监控拓扑,对报警链路模块日志trace定位,实现精确定位到故障模块,进而对模块程序/词典变更暂停或回滚止损;依据监控影响pv计算以后报警预估损失pv指数,预估线上问题级别, 给出止损倡议;通过止损库策略梳理给出齐备的止损预案操作领导疾速发动止损决策;为了更便于不同业务定制诊断策略,以后提供故障诊断、止损决策策略反对业务低成本自定义编写,其中故障特色可在继承通用策略的根底上自行编排、告诉款式可在根本规范格局下进行子编排解决。目前商业支出变动大盘止损决策定位已实现报警触发、诊断、止损举荐的全流程机制买通,并可间接给出止损决策计划。 四、搜寻UI展示case级定位办法为了晋升零碎品质,品质保障同学个别会针对零碎建设全方位的品质监控,尽管能召回的问题变多,然而随之而来的针对case级的定位,就会是一项耗时耗力的工作,ui展示case定位就是基于这个背景而来的。定位次要分为两个局部,一个是根底建设,二就是具体逻辑实现。根底建设是定位重要的一环,零碎的复杂度会给咱们定位带来极大的挑战,越是简单的零碎就越难定位。针对这个问题咱们解决方案是建设残缺的日志trace计划。首先为了节俭资源,不独自存储日志,只存种子信息,所有日志保留一份;而后建设模块topo,将日志从上到下的进行递归检索,依据日志的内容生成申请链路。最初为了保障平安,建设流量管控,超时等机制。最终实现了秒级提早和检索耗时的日志trace能力。二就是具体定位逻辑实现,次要是通过定位topo、联合case报警信息去触发整体的召回定位能力,而后通过日志里的进行进行正则化的匹配和提取,来判断在具体case的起因在哪些地方有体现,比方具体的资源为什么没有召回,在哪个中央被删除和批改,最终实现分钟级别的报警接管和主动定位。 ---------- END ---------- 举荐浏览【技术加油站】系列: 揭秘百度智能测试在测试评估畛域实际 揭秘百度智能测试在测试剖析畛域实际 揭秘百度智能测试在测试主动执行畛域实际 揭秘百度智能测试在测试主动生成畛域的摸索 【技术加油站】浅谈百度智能测试的三个阶段 【技术加油站】揭秘百度智能测试规模化落地

December 21, 2022 · 1 min · jiezi

关于测试工具:精准测试技术十年发展漫谈

一、 背景 精准测试技术,是这几年比拟热的一个方向。从2012年这个体系开始诞生,到当初整整历经了10年的工夫。中国从国外引进了很多技术,火与不火其实在国外曾经决定了。外乡成长起来的精准测试路线自成一家,它不是从国外引入,是在中国的大环境下缓缓倒退起来的。从寂寂无名,到软件品质技术从业者的激情被一点点的调动起来,再到被认可及至推广,两头翻越过万重山。本文作者星云测试平台设计师、开创合伙人赵明学生站在另一个维度,以星云为例偏重讲了精准测试技术的起源倒退、商业内核以及行业的瞻望。  二、 精准测试的定义 精准测试一句话概括就是:测试用例和代码之间的追溯,这是它最实质的货色。精准测试的实质决定了它抓住了测试的一个外围要点。大家晓得,软件次要有两个方面:一个是咱们看到的性能,即从界面上看到输入输出(通常咱们测试是基于这个);另外还有背地的代码。在功能测试整体动静运行的时候,性能和代码必然存在着追溯关系。这种互相追溯,很像物理界的量子纠缠实践。就是说,软件代码运行逻辑和性能输入,是两个也同时是一个整体,像量子纠缠一样。当把两个量子视为一个整体,只观测任何一个都观测不全面。这个也就是咱们黑盒测试以前遇到的问题,它存在很多隐性问题,因为它没方法察看计算机最实质的货色--代码的同步变动。精准测试就把这两个全副观测、捕获并回放进去了。最早星云在2014年的国内软件测试大会上首先公布精准测试的时候,就叫穿线测试,英文名字叫Threading Test,并没有直译成 Accurate test,当初看还是Threading Test最符合。首先,精准测试建设起了用例和代码的关系,相当于把黑盒和白盒关联起来,做黑盒测试时获取到白盒数据。即实现一个测试逻辑,代码上的逻辑立马同步生成,精确地把开发测试关联起来,这里应用了Threading的穿线的含意。另外一个层面,精准测试最实质就是线程笼罩测试。它跟白盒最大的区别是覆盖率是线程级的,也就是说咱们要追溯到用例这个级别。比方一个零碎可能很多用例同时跑,最终用例级的数据就是在线程外面。咱们拿到线程级的数据,就能拿到测试用例级别的这种覆盖率。这里体现了Threading线程的含意。所以咱们整体英文名字叫Threading Test,这是咱们中国本人命名的。  三、 精准测试技术倒退精准测试是从2012年开始倒退的。最开始的时候(星云)团队建设一些根底理念,次要建设用例和代码互相追溯的根本技术方向和框架。2013年,星云开始做第一个源码插装内核,即基于JAVA的SASI(源码插装)。2014年,用例和代码追溯、软件示波器、回归用例主动选取根本曾经成型。这年有个重大的事项:在 iSQE大会上以“穿线测试”第一次公布产品。过后引起了行业上很大的关注。2015年,开始做C++的SASI(源码插装)相当于向国内最顶级的白盒测试工具进行挑战并闯关冲破了这个技术畛域。2016年,做出的产品开始正式商用,开始有用户洽购了。2017年,向白盒测试最顶级的覆盖率MC/DC(100%覆盖率)去挺进并获得成功。意味着在航空航天、智能工业等畛域,中国开始有能力实现本人的高端白盒工具的代替。2018年,在分布式系统的追溯上,星云全零碎的用户标识和流量隔离技术诞生,这也是精准测试比拟外围的技术。2019年,开始做SABI 1.0(SouceCode Analyzer ByteCode Intrumentation),插装形式产生重大改革,跟咱们见到的惯例架构区别很大。可能做到无损采集与剖析数据,可靠性很高,用户发版流程也很简略。2020年,开始做整体轮次级我的项目级累计覆盖率,可能实现全自动的实时的跨版本的数据合并,解决覆盖率技术商用的重要阻碍,以及嵌入零碎的反对。2021年,开始做SABI 2.0及高可用。2022年,冲破了更多要害的畛域,比方linux kernel、DSP芯片、安卓的Framework操作系统等,因为以上的数据采集形式十分非凡,实现十分不容易。 能够说任何一项高端技术,都不能脱离一个渐进的过程,唯有质变能力真正实现量变。尽管充斥了艰苦,但从学术实践到技术落地、到各大企业理论场景接连不断的好评,发表了中国在这个畛域中率先获得了令人惊喜的成绩,不再受制于人。  四、 精准测试的专利技术(星云)精准测试建设了一套十分残缺的国家级专利簇爱护机制。上面为大家解说一下这些专利技术的特点。 一种基于测试用例与源码双向追溯的测试安装及办法, 是星云精准测试最要害的发明专利,2014年申请2017年正式受权。这个专利过后引起了很大的争议,专利局认为这种货色十分底层,就像苹果因为重力而落地,通过水的势能来发电一样,专利局一通认为这个货色太常理化了。不过就像通过水的落差发电一样,须要有人可能进行零碎的实践论证摸索并且进行工业化的利用,能力真正的在转变为生产力,而用例和代码的追溯也正是通过工业级精准测试的利用才开始全面受到重视并开始大面的利用。 2018年取得受权的国家发明专利“覆盖率可视化”(行业俗称代码染色)、回归测试用例选取等,都是在精准测试体系中比拟要害的专利。比方 “回归测试用例选取”,在代码变动的状况下,到底应该选哪些用例进行回归?(星云)的这我的项目技术能够精准的挑出这些用例(都是基于代码和用例的关系),在新版本公布当前,看它代码门路变动的问题,整体回归效率进步3-5倍以上,并且大幅度降低因为回归工夫无限而引起的品质危险。 其它的专利技术是在整个商用过程中,陆续创造的。比方:分布式系统或者集中式零碎,很多人同时拜访的场景。就是在分布式系统上,看一个用例在各个系统都怎么跑的,而且并发跑的时候不能受到烦扰。那么就要有用户标签技术,而后做流量隔离。这个在分布式系统下也是一个重要的发明专利。就是指咱们在分布式系统下,每个测试用例可能跑到每个散布零碎外面,往哪个版本存?咱们做了一套主动解决机制,这也是很要害的一套逻辑,属于精准测试的基础性专利。 一个残缺的优良软件体系,根本来说它须要有8项发明专利进行全方位的爱护。精准测试是中国领有齐全知识产权的理论体系。当初咱们(星云)曾经批准和申请超过16个,后续咱们还在继续做全面的知识产权笼罩。   五、 精准测试的一分一合对于精准测试不算太理解的人可能认为精准测试就是单纯的覆盖率工具或者白盒工具在中国改了个名字,但还是有重大区别。简略了解,它跟传统覆盖率有一个一分一合的变动。“一分”指的是:精准测试不仅仅去统计(大范畴的整体)代码覆盖率,而是要准确到用例级。比方回归用例选取、测试用例聚类分析、智能缺点定位、开发测试的协同,所有的数据都可关联到用例级,精准测试的作用和范畴就变得很大。大家看下面的雷达比照图,相当于给传统白盒测试做了一个全方位的突围。用例级就能有高精准度的测试剖析,传统的白盒并没有这种测试剖析。“一合”指的是:咱们这个覆盖率曾经不再是单元级的。传统白盒测试次要针对单元级,工具很贵,号称壁垒极高无奈冲破,但实际上它的难度还不至于遥不可及。软件在单元状况下,一个单元跑,它的性能要求很低。星云精准测试跟传统测试的白盒的差异很大。以前白盒测只能用在单元,当初咱们精准测试能够把它用到零碎级,也就是功能测试阶段。星云能够在零碎全速运行、数据量十分大的时候实时采集数据,并确保对原有零碎不要进行烦扰。理论利用中,还是能够持续延用黑盒测试的操作方法,动静执行用例后,能够失去大大超于白盒单元测试的多种测试数据及其剖析后果,用起来非常不便。 所以,大家能够看到星云精准测试使传统测试模式产生了一个重大转变,实现了真正意义上的灰盒测试,使测试左移实现了优雅的落地。但它并不是让咱们的测试工程师马上就懂代码开发、懂脚本开发、懂单元测试,它是十分天然的去把用例跟代码进行追溯剖析,因为星云有一套动态逻辑剖析,能够把测试应用难度大大降低,没有开发教训的黑盒测试工程师可能用的十分好,如果肯下功夫甚至还能够逐渐冲破职业天花板,成为优良的测试分析师。 精准测试能够给黑盒充沛赋能。以前测试和开发人员交换十分被动,如果开发说逻辑有5个,那就是5个,即使有第6个也很难被发现。有了精准测试整个黑盒子就关上了,测试模式产生一个很大的转变。它使测试实现精准数字化。咱们在2015年的时候提出通过精准测试引领测试进入数字化,过后的支流观点测试是不可能数字化的,就像咱们人去开汽车一样,想左拐就左拐,感觉该刹车就刹车,没什么数字化。然而有了精准测试当前,所有动作能够去关联代码,每项性能都能够被数字化度量,Debug和回归甚至变成了乏味地打怪降级的过程。所以,回过头来看,能够发现精准测试是针对IT零碎十分好的数字化、可量化、可评估、可考核、可度量、很准确的一种技术办法。  六、 精准测试体系上面给大家介绍一下精准测试体系的具体情况。如上图所示,星云精准测试有这样的运行架构图。它首先会对源码进行一个编译和剖析,把代码构造动态剖析好后,将动态信息上传到后盾对应我的项目版本中进行存储。再依据块的地位和类型信息进行插装,点缀只有编号信息。代码插装好当前,放到被测系统外面间接动静去跑,测试人员用软件示波器点用例开始完结,就会主动把每个用例和代码的正向和反向追溯关系建设起来了。 正反向追溯有两个主体性能,一个是可能让测试整体量化,使之看到所有的测试过程。测试工程师没有跑用例,就没有关联关系的数据;如果乱跑,咱们剖析一看性能齐全不对,跑的性能和设计性能不应该聚类到一块但却聚类到一块,就认为是瞎跑的,跑的不对。什么都能够看得十分粗疏。另外,星云提供的测试智能剖析的一些算法,如测试用例最小级、回归用例选取、测试用例的聚类分析、智能缺点定位等,这些原本很理论化的技术,之前没人可能把它做进去。例如回归用例选取这技术,它底层数据提取特地难,须要破费大量的工夫去钻研如何去真正落地实现。比方咱们碰到的一些场景:给安卓的Framework代码插桩,而后拍张照片,照片渲染进去当前,整个安卓的驱动层代码到底怎么走?一瞬间就要驱动计算并且展现进去整体逻辑的运行状况,这个复杂度相当高。实现了这种技术,就能够用精准测试帮忙手机厂商去节俭CTS测试的工夫。 精准测试在晚期倒退阶段,推广还是受到了很大的妨碍,其中一部人认为技术难度过高,因为国外的最顶级白盒工具也无奈达到精准测试的技术要求,更像是实践钻研而无奈商用,还有一部分意见认为测试就是做性能黑盒人工测试,就利用应用基于传统的经验性的测试方法体系。当初这种观点曾经在产生悄悄转变。因为实质上,咱们做测试就不应该漠视计算机的软件代码和性能间实质上的强关联性。  七、 商用精准测试的无损技术 再从内核能力的角度上,给大家讲一下开源白盒覆盖率工具和商用精准测试之间的比照。当初咱们很多单位在基于开源工具来做精准测试,是坏事,但也存在问题。咱们星云从2012年开始守业,为什么不拿个开源的间接做?还能够省10年内核开发,但我能够斩钉截铁地跟大家讲:要残缺实现精准测试那样做必定是不行的。 开源工具的艰难点本源在于:它的剖析和插桩全副在字节码上,但理论覆盖率的观测点却在源码上。这就产生了一个重大的信息脱节,因为字节码是有损耗的。开源工具它可能看到你的条件笼罩百分比,但它基本不晓得每个条件真和假,因为在字节码阶段,它的条件和真正的源码上的条件曾经产生了变动,曾经没人能搞得清下面和下边对应关系了。比方Jacoco这样的开源工具做了这么多年也没有冲破这个底层的根本性问题,这种差别会导致覆盖率不可补救的缺点和谬误。大家晓得:做覆盖率条件笼罩是十分必要的一个指标,开源工具解围了很多年,也没有胜利。另外,它的字节码操作非常复杂,行业里间接拿来试用,但没有人能残缺、清晰地论述它的外部状况。 星云精准测试的SABI(字节码插装)和SASI(源码插装),能够实现真正的无损测试技术。SABI,SouceCode Analyzer ByteCode Intrumentation,即源码剖析字节码插装。就是说在源码上间接剖析,观测点也还是在源码上。这个就可能残缺实现无损的插桩,覆盖率100%准确标准。SABI是依赖十分全面的源码动态剖析后,通过校对后的数据往字节码插,而不是间接在字节码剖析,往字节码插。SABI字节码技术能够满足国内标准的CDC的笼罩要求。 SABI是大家十分认可并欢送的技术办法,2019年左右研发进去,解决了金融畛域无侵入式插装的诉求。目前SABI 2.0技术,能看到具体条件确定性的虚实笼罩,而不是仅仅是一个笼罩百分比,包含分支笼罩。它把所有的简单运算在源码阶段全副算完,比方它会产生一个分块数据库,外面所有的点缀在什么地位曾经全副算好,对于插装来说就是一条指令。一个分块数据库可能几十兆上百兆,但所有的插装动作就一条,所以它可靠性能够有十分好的保障。因剖析进去的分块数据库是明文的,有问题能够间接核查,甚至能够把里边一些点缀主动去掉或删改都能够,很凋谢,不是个黑盒,应用平安和牢靠度高。 SASI(源码插装),是传统白盒最根底的技术,间接在源码插装,次要利用在对于覆盖率规范要求更高的畛域。源码插装当前,通过高级语言、高级编译器的编译,间接生成最初公布包。这种是齐全无损的,能够随时反查插点缀,不会引起语法错误、性能谬误等,可靠性更高。  八、 商用精准和开源精准的区别 商用零碎级精准测试有前置精准的动态剖析过程。图中你会看到它每个条件虚实、条件组合虚实。它把代码都切成逻辑块了,间接在对应的地位上展现后果。开源产品缺了一个残缺的动态剖析过程,后续很难深刻做上来。这种代码染色,一行一个色彩,须要测试人员对代码的理解能力要求高,无形中进一步推高了应用老本。商用零碎级精准测试可能整个脱离Git零碎做代码可视化。咱们有残缺的动态剖析,有Ll、L2、L3三级不同的可视化表白。L2级次要利用在代码管控十分严格的场景下。它不提供源码浏览权限,但咱们能够依据剖析进去的代码构造,看到整体条件、嵌套关系等,对于黑盒测试人员的信息是足够的。 商用零碎级精准测试零碎外部有非常复杂的计算,这些计算是以动态代码剖析做根据,它不在这个阶段去关联代码,关联到Git上。在Git下来拿源码,而后再去算,一个是来不及,另外因为它不是结构化的,基本达不到理论应用要求。开源产品做差别覆盖率时,须要让Git通知你差别代码什么。而商用精准测试,早曾经实现了动态剖析,对于程序的控制流有没有差别很分明。它的运算齐全脱离任何内部零碎,像这种实时覆盖率切换的要害的性能,在理论场景的应用频率很高。 理论利用中,对覆盖率的信息要求相对不仅仅是单版本的,而是须要投影到很多版本。商用精准测试一旦基线切换,它会把历史数据往新基线主动进行投影,并且整个过程对用户都是通明的,不须要人工 干涉。因后面曾经做过程序控制流剖析等工作,它的投影可能实现秒级的计算和切换。这些也是基于开源产品研发精准测试无奈冲破的技术瓶颈。 另外,很多企业级客户喜爱在代码块上做标记,通知你不同的代码在做哪些性能。商用精准测试也满足了这一需要。它能够在分块上做具体标记,这个数据是一种结构化的,里边会有嵌套的程序信息了解。它能够画出程序的管制流程图,像有深度的网状结构,覆盖率看得十分清晰,这些都是基于分块信息。 在商用精准测试的应用场景里,大家用的比拟多还有“实时覆盖率”性能。即:在一个发版轮次中,多个版本之间主动会集覆盖率。当数据从程序里传进去当前,它只有跟用例的关联关系信息,它属于哪个版本、哪个轮次/打算/工作,起初都是不晓得的。通过星云主server当前,会把这些数据实时往外吐,随后有专门的server去实时往里合,一瞬间就合在轮次上。如果想看这个轮次的覆盖率,只有一刷实时马上就能够看到。 商用精准测试里,蕴含了一整套切基线的机制。这个机制比较复杂:当一个新版本上线,一看数据属于新版本,它会主动把基线切换为新版本。切的过程中,它会把历史数据往新版本投,如果这个函数没有变,就会把历史数据投到过去;如果变了,整个清零造成一个新的轮次累计版本,用户马上能够看到一个实时累计版本的状态。这个是做了比较复杂的一套零碎,咱们在很多时候感触也比拟深,这个内核做的复杂度十分高。 行业上大家对商用精准测试还是有些误会,拿开源Jacoco来比对是不失当的。因为产品可能达到大规模商用化,要求是十分高的。咱们(星云)能够对数亿行代码的大型高复杂度的零碎插装,也就是说在对亿行代码插装的时候是不能有任何闪失,性能、性能以及引起编译上的谬误,都是相对不容许产生的。 星云做过很多大型零碎,包含数十个节点的分布式,还有数百个大型服务,复杂性很高。目前录最快的处理速度是在一个88核的机上,相当于每秒钟要解决140万组的覆盖率数据。当然这个也不是原始数据,是在利用端收回来初步合并当前的数据。每秒140万组合用例的关联,这个关联不能有时间差。因为一旦有时间差,你的数据属于上一个用例的,会引起剖析上的谬误。每秒计算量要1.4亿个字节每秒,就是要算的这么快!这些数据来了当前马上就算完,1.4亿字节这个数据马上就要算到主零碎外面去,所以它的整个的实时笼罩的提早也要求很严格。 嵌入式零碎场景中,要反对到实时零碎。以前星云能够实现准时,当初齐全能够在实时零碎做。比方在一些DSP芯片的管制上,不会烦扰它的时序。插装当前,时序可能保障失常,不会引起异样的逻辑。咱们的精准测试整套零碎都是C++做的,单节点128g内存能够撑持2000个零碎。这种量级在以前是很难设想的(白盒工具个别次要用在单元测试阶段,测一些函数)。这种大型零碎的计算,对整个内核能力要求十分高,刷覆盖率速度要很快。开源的产品速度很慢,基本够不到理论的生产场景要求。星云百万级代码行的,根本就是秒级。一刷,所有的笼罩全副算完,实时速度很快。目前星云精准测试运行绝大多数场景下,能够达到7x24小时不间断运行与计算。这个很要害!如果大家对覆盖率或者精准测试了解不深,大家会感觉这不就是一套测试用的零碎么,宕机就宕机。但实际上,商用精准测试就应该是软件测试界的Oracle,它不容许宕机。因为大家一旦用上当前会十分纠结这个数据,比方我忽然间一个条件没了,我测试过了为什么没了?不论你量有多大,丢了必定不行,因为丢了就会造成剖析的误差,所以整个零碎这种持续性以及稳定性十分要害。咱们(星云)花了一两年的工夫始终在专门优化,因为它的要求太高了。商用精准测试要在零碎级采集,用户的零碎通常有很多,单零碎采集的状况不多,可能几百上千个零碎同时在采集,它要求十分高,可能做到7×24继续不间断,就须要很多技术做撑持。  九、 精准测试技术成熟度五级划分 目前,按技术实现状况,能够把精准测试分成5级。最高级T1级叫做“开源笼罩级”。次要工作是统计覆盖率,拿开源产品架构略微改一改就开始用了。它只有覆盖率的次要性能,包含差别笼罩,做一些简略的定制,这叫“开源笼罩级”。个别用在高校教学、一般利用层级的覆盖率统计,须要审慎思考用于企业质量体系建设指标。 T2级就是“开源精准级”。这个级别次要基于 APM技术+开源,做到精准测试一些根底性能,比方能够实现用例和代码追溯。因为后面咱们讲的开源内核的能力限度,对于很多场景,没有无效的计划去解决。咱们看过很多企业在这方面遇到了一些很大的实际困难,投入很多研发工夫和精力,但最初都翻越不过来,节约了不少贵重的激情和投入。个别用在互联网公司外部翻新、对于覆盖率指标精确度要求不高、以及企业对降级到精准测试的外部运行初步评估等场景,起到了对精准测试技术开荒与导引作用。 T3级是“商用白盒级测试”。这个畛域几十年前就有,比方国外工具C++Test、TestBed、VectorCast等,利用在汽车、航天一些畛域用的工具。这些商用工具的单元测试能力强,用它来做航天航空上要求的MC/DC的覆盖率,不会有什么问题。但它受限在单元测试这个环节,不针对零碎级利用。也就是说,黑盒工程师根本是用不起来的。这些工具大多没有用例和代码的追溯,在测试剖析方面的能力比拟弱。从用户的角度看,一个是价格十分高,另外在国产化代替的大背景下既不便洽购、各种适配都有很大问题。次要用在对单元测试要求高、代码量绝对较小、品质要求极高、仍采纳传统瀑布开发模型的企业。常见的场景在航天军工类的嵌入式零碎等。 T4级是“商用零碎级精准测试”。它的技术体系十分残缺,要求较高。比方:(1)在满足白盒测试要求的同时,需能够对接黑盒测试,整个采集过程可在零碎级进行;(2)内存和CPU的附加开销,必须管制在5%以内;(3)企业用户能够依据本身须要,定制零碎级别的笼罩维度和业务模型;(4)反对轮次级实时覆盖率和跨版本覆盖率累积技术,实现白盒探索性测试的要求;(5)对微服务零碎做全方位反对;(6)对流量隔离(穿透)技术须要提供弱小的反对,以便更好的在微服务零碎中实现全程精准测试;(7)在回归测试智能选取上,须要给出推荐值,并可进行公共底层模块引起的全量举荐修改等。 在T4商用零碎级测试里,能够计算实时覆盖率,轮次级、打算级、工作级、实时覆盖率可能主动生成并查阅。T4级在整个流量隔离或者分布式系统的用户标签、穿透等方面,有十分标准化的解决方案。各种标准协议一个用户标签打过来,各个层面全副穿透过来,能够拿到整体的用例和代码间全零碎的这种关联关系。另外在用例选取、回归选取等有些算法的优化,包含动态修改、动静修改等,技术计划都很残缺。另外,商用精准测试的server个别都比拟强,整体对性能的烦扰能够管制在5%以内,因为这个级别次要是PC级的利用,性能开销要求不是最次要的问题。自2016年以来,星云测试在这个级别做了最深刻的钻研,并在银行、证券、保险、智能工业(通信)、智能汽车、国家电力、电信经营、航空航天、军工等畛域的多家企业实现了圆满落地。 T5级是“商用内核级精准测试”。它可能执行对于Android Framework级代码的覆盖率统计、Linux操作系统内核过程和相关驱动的覆盖率统计、DSP芯片中无操作系统状态下裸C/C++代码的覆盖率统计等,对系统的烦扰十分小。因为如果插装到操作系统上,很可能机器启动不了。这个级别对性能的影响度肯定要管制在1%以内,芯片与嵌入式板子等要求更高,因为他们是有时序的。咱们一些芯片有中断时序,比方几个中断,它肯定要保障原有执行时序不能被打断。假如要0.1毫秒实现,那是相对不能超过0.1毫秒。它不像PC端系统,慢一点也影响不太大。比方金融零碎,查问性能原来是1毫秒,插装后变成1.2毫秒,它顶多是慢一点点,不会影响业务后果。然而这种芯片级会影响业务后果,造成逻辑谬误,这是相对不行的。目前国内次要是星云测试承当起了这个级别的测试工作,利用在一些高端场景及畛域中,比方军工、智能汽车、芯片、电力等行业的国家级我的项目上。  十、 精准测试的效力晋升这个图早在8年前,咱们(星云)就公布了,当初看下来实际效果与起初的预估没多少误判。商用级精准测试有很多驱动点能够改良效率,以覆盖率打比方:原有的黑盒测试的瓶颈阶段效率是很低的。这个阶段如果仍然应用人海战术,基本上能够认为是耗费大量老本,而看不见无效成绩。也就是你不晓得软件外面是什么,就在那猜用例,猜的很多都不对。比方一天猜了100个用例,兴许只有2个是有用。但商用精准测试,就能够高效地剖析用例、有目的地补充用例,一天做100个用例100个都是无效的,它并没有减少工作量,这个是最让人赏心悦目的。引入商用零碎精准测试很多企业覆盖率很容易做到惊人的90%以上。因为它的晋升是全方位的,包含咱们开发测试的交互的效率和治理端的效率。以前咱们强调现场治理,时常须要盯着测试工程师看干不干活,干得怎么样。这种状况一个是容易造成矛盾,另外因为受人为因素烦扰太多也不主观,再有就是不能帮忙测试工程师们发现自己须要补充的技能,长此以往容易迷茫,早早碰到职业天花板,很苦楚。由此导致人员流动过于频繁,不利于业务稳固。另外,商用级精准测试在回归上,给了测试和开发们很大的支撑点。以前很含糊的一些货色,要人去投入大量工夫剖析,当初测试用例主动举荐性能能够主动剖析,而且速度极快,整个回归测试效率至多进步一倍以上。  十一、商用精准测试的布局与倒退商用精准测试不是我的项目制的,整体都是高度产品化,每个性能都要思考到整个行业的通用模式诉求,如何做到普适化?是十分一个严格的产品化过程。所以客户的需要是模型化,咱们就得按模型化来设计。比方很多场景要通过参数来辨别,相似oracle这种软件的参数比拟多,个别咱们(星云)的业余人员能够帮大家配好,对某个行业客户的具体场景后续不须要变配置。高性能、高牢靠永远是谋求的技术治理点。如果没有高性能、高牢靠,产品性能就算再弱小也是没用的,大规模商用化是会受到重大妨碍的。商用精准测试技术是将来软件质量体系最外围的业务和大趋势,它不容许有任何谬误,咱们(星云)在这块投入很大。 目前独创的核心技术都有爱护。因为咱们(星云)会依照自主可控内核的路线去倒退,尽管很难,然而对企业来说,正是有了外围竞争力,才有资格去国际舞台上与支流白盒一争高下。如果拿开源间接用,会发现上手快很简略,然而企业很多简单一点的需要变更、性能扩大都解决不了。因为它内核自身就有缺点,另外是大部分用户还是看不懂它的逻辑自身,遇到问题无从下手。 所以(星云)始终很关注专利爱护受权。对专利的重视和爱护是心愿大家尊重技术创新,尊重商业标准。如果有人要借鉴,须要一个知会、受权的流程。星云是敌对的,比方白皮书外面的内容是咱们的专利失去受权能够公开后,面向行业是敞开式的定期更新、向大家介绍最新的技术,也会写这些根底怎么做。 我集体认为,精准测试是在测试全面智能化之前的一个很好的过渡,然而我认为过渡期最起码须要几十年,那时AI才有可能成为主导。而后把人的工作全副省掉,甚至可能包含覆盖率工具都能够不再须要。但这是最起码是几十年当前的事件。 不改初心,方得始终。在很长的一段时间内,咱们会继续的倒退精准测试,让精准测试成为整个测试行业提高效率的一个保障。当初很多企业的业务扩大太快,无限的人基本接不了暴增的我的项目,测试工作量随着我的项目指数级减少。精准测试让指数级变成一个直线。人力的奉献是无限的,因为软件的算法是极度简单的,人力无奈在看不见的状况下,去做齐全而无效的遍历。所以好的产品和工具是必须品。咱们始终在倒退,包含很多钻研单干、一些实践上的算法,逐渐的让它更领有更弱小的能力,把人从繁琐而没有创造力的工作中解放出来。  撰稿人介绍:赵明是中国最早一批软件测试业余硕士,曾在三大检索及国内外围期刊发表数篇学术论文,师从国内驰名软件测试科学家。深度关注和把握软件白盒测试实践和工具底层技术。精准测试技术理念的发明人和商用工具的总设计师,作为第一发明人申请了16项精准测试外围发明专利,残缺的构建了精准测试的发明专利簇。精通软件测试外围实践算法,精通多种语言编译器核心技术,代码剖析和插装技术,精通计算机程序底层开发(图形,存储,二进制剖析)技术,精通各种软件测试实践算法。带队实现了中国第一个齐全自主可控商用白盒测试内核的研发,实现了超高性能白盒测试内核的研发,将白盒测试的应用领域从单元级向零碎级和达到实时性要求嵌入式零碎进行了扩大和利用,设计并研发了WINGS单元测试用例主动生成零碎,可能面对非常复杂的软件系统实现全自动的生成100%语法正确的可间接运行的单元测试用例,产品性能远超国内上同类产品。

October 14, 2022 · 1 min · jiezi

关于测试工具:Jenkins-如何玩转接口自动化测试

事件是这样的,上周有个测试同学小飞反馈说。最近在应用一款接口管理工具Apifox,该工具提供了CLI命令工具,它想通过联合继续集成工具Jenkins及Apifox提供的CLI命令对测试用例进行自动化测试。然而他对Jenkins的应用不相熟,对此我将整个流程梳理了一遍并分享给大家 1 Apifox CLIApifox CLI是Apifox提供的接口继续集成命令行运行工具。用于反对实时运行在线数据及导出数据运行等两种形式。 装置形式如下 npm install -g apifox-cli⏰ 注意事项: Apifox CLI依赖的Node.js版本须要 >= v10 上面是通过对官网提供的宠物商店接口测试用例,咱们通过Apifox CLI并联合这个测试用例来进行自动化测试的实际 小飞同学:那上图命令行中的url是从哪里获取的呢?你能够在Apifox的自动化测试Tab中找到测试用例,而后抉择你要测试的用例名称并点击详情。如下所示 而后在该测试用例的详情中,点击继续集成的按钮,会弹出一个继续集成配置的窗口 接下来咱们在继续集成窗口中点击新建 最初在窗口抉择运行环境、循环次数、线程数等等信息,点击保留即可创立该运行url 测试用例继续集成的url创立胜利了 那怎么在Jenkins上玩转Apifox? 1.1 装置Nodejs环境关上Jenkins后咱们首先须要先装置NodeJS环境。以后演示的Jenkins版本是Jenkins 2.346.1,如果是旧版本的jenkin 拜访操作门路不同 首先在dashboard面板左侧菜单抉择系统管理菜单,而后在系统配置模块下抉择插件治理 抉择可选插件,并搜寻Nodejs 点击装置即可 1.2 全局工具配置装置完Nodejs插件环境之后,接下来须要在全局工具配置中设置Nodejs的相干配置,下图全局工具配置的入口 而后抉择你冀望运行的Nodejs版本, 如果你是window操作系统还须要指定运行门路 1.3 新建我的项目Job实现上述环境配置之后,你曾经实现一半的流程✅ 接下来咱们创立一个工作 Job,来实现接口自动化测试。 创立工作胜利之后,在job的配置中抉择构建环境且设置Node 如下图所示 设置之后抉择构建模块(build),新建一个构建步骤,抉择类型:执行 Shell 最初咱们将上文通过Apifox生成的继续集成url链接复制到Shell输入框中 实现上述操作之后,咱们能够来运行这个工作Job,点击控制台输入看下输入后果!后果合乎咱们预期! 最初上个世纪的接口自动化测试老本很高,如果我的项目没能通过自动化测试来保障接口的品质,仅仅依附手动测试,不仅费时费力,还容易导致问题!而通过上文的介绍,咱们只须要应用Apifox 提供的url链接, 就能跑自动化测试。再将Apifox CLI集成到jenkins就能实现自动化测试的继续集成!几乎就是神器! Apifox地址:www.apifox.cn

July 29, 2022 · 1 min · jiezi

关于测试工具:ApiPost组成介绍

一、ApiPost组成介绍 二、装置和简略应用下载地址: Apipost-基于合作,不止于API文档、调试、Mock apipost能够快捷不便的进行接口测试,在须要须要应用header或者cookie的时候。apipost能够自定义header参数: apipost还提供cookie治理能够主动存储,登录返回的cookie 三、Apipost接口参数化设置apipost提供了获取request和response办法,能够应用response办法获取响应返回的变量参数token 在后执行脚本中设置一个全局/环境变量 到须要援用的接口中进行援用就能够了

May 17, 2022 · 1 min · jiezi

关于测试工具:7-堪比JMeter的Net压测工具-Crank-总结篇-crank带来了什么

1. 前言通过下面的学习,咱们曾经理解分明crank的职责以及作用,那么咱们从新回来思考一下,crank能为咱们带来什么? 2. Crank带来了什么?为分布式压测提供了解决方案、能够模仿更高强度的压测 单机压测最多提供65535,通过反对多个Agent能够很轻松的冲破这个极限提供了压测后果二次解决的能力,并反对将后果保留到json、csv、数据库甚至是es(目前仍在对接) 通过对以往压测数据的后果做折线图的展现通过ci能够实现自动化触发压测,再通过折线图清晰理解每次代码对性能的晋升状况3. Crank还能更进一步吗?下面的实战训练咱们仅仅是做了根底的工作,只管咱们通过模仿多接口同时压测实现了对单场景的压测,但实在的我的项目远远不会是所有人都同时拜访一个页面,而不拜访其它页面,那咱们如何模拟出更贴近实在场景的用户轨迹呢? 实在的用户场景应该更像 如果咱们心愿更进一步,想晓得咱们的零碎的极限到底在哪里,咱们能够依照依照此用户场景进行深度还原压测场景,实现对整个场景的压测,并通过调整正本、带宽、Redis集群、数据库集群数量等形式晋升QPS,最初通过一直的压测以及配置一直的减少,理解到咱们应用什么样的配置、用多少正本、用多少带宽、什么样的Redis、数据库集群可能抗住多少的用户,但这个须要视咱们实在的业务场景,如果QPS到100就够用的话,那么咱们破费那么高的老本搞那么大的QPS有什么意义呢?咱们又不是须要再做一个淘宝进去,理论没有那么高的用户量,搞到极致的优化也只是劳民伤财罢了 4. 疑难Agent的压测机配置必须很高吗? 压测机的配置高,将赋予压测机更高的压测能力,但QPS的高下并不是通过压测机来决定,Qps低的我的项目,搞个超级计算机过去,Qps依然低为何我启动Agent执行工作后每次都须要Install Sdk?每次装置都须要半天,翻墙我也解决过了,但还是很慢 倡议Agent启动时指定dotnethome,并且在启动工作时,最好指定工作的框架环境是曾经存在的环境,Agent的启动配置能够查看入门篇,指定工作运行框架能够查看进阶篇为何我通过crank官网的命名运行出错呢? crank还在继续更新降级中,可能会呈现用新版本的crank发送上文示例不能应用的状况,能够装置指定版本的crank,以上示例都有在0.2.0-alpha.21567.1版本运行胜利我想本人搭建Agent的docker镜像,文中提供的镜像不晓得是否平安? 文中用到的镜像是通过上面的dockerfile编译的,没有搞很简单的货色,不释怀的能够应用自建镜像doddgu/crankagent:net5.0是.net 5.0版本我的压测场景也须要登录,但不须要实现每次申请都是一个新的用户,我该抉择bombardier还是wrk、wrk2呢? 针对压测场景简略的,又不须要实现多用户、不须要动静参数的能够用bombardier、简略不须要学习lua、成本低心愿能够用动静参数,玩一些简单场景的,抉择wrk或者wrk2更适合压测场景繁多,且不须要实现多用户、不须要动静参数不能应用wrk、wrk2吗? bombardier能实现的场景,wrk、wrk2都能够做到针对简略的get申请,不须要更改参数应用wrk一样很简略、应用post申请的须要多把握一点lua脚本常识,有条件的还是倡议应用wrk、wrk2,它更灵便动手老本也不是太大crank agent dockerfile FROM mcr.microsoft.com/dotnet/sdk:5.0ENV PATH="${PATH}:/root/.dotnet/tools"EXPOSE 5010RUN dotnet tool install -g Microsoft.Crank.Agent --version "0.2.0-alpha.21567.1" ENTRYPOINT crank-agent --dotnethome "/usr/share/dotnet"5. 总结Crank的性能其实是很繁多的,它不像咱们起初设想的那样宏大,所有的事件都能做,也没那么简单,但咱们也能够说Crank什么都无能,因为它提供了让咱们运行dotnet我的项目以及在docker中运行dotnet程序的能力。 但它最初能做什么事取决于应用它的人想用它来干什么,它只是一个工具而已,不要把它想得太美妙,有了它当前能够不写代码,自动化实现测试工作,我只须要等后果,主动出报告等等……有这样想法的还是去洗洗脸吧,大白天的居然在做梦? 压测以及性能调优考验的是咱们对整个零碎的一个全局掌控能力,通过压测让咱们晓得目前零碎的瓶颈在哪里?等咱们的业务规模到了瓶颈时,能够通过调优进步我的项目的QPS、使其响应能力更快,不会因为零碎而影响咱们的业务,其目标是帮忙业务倒退的更好,但如果业务没倒退起来,一味的陷入性能调优这个深坑中去,会使得咱们破费昂扬的代价做了没有实际意义的事,就比如说家里总共就四口人,非得搞个中巴,美其名曰能够拉更多的人,过年走亲戚不会坐不下什么的,每次出门费油又疼爱的不得了,最初舍不得开了,最初还得花钱给它找停车位,那就得失相当了 开源地址MASA.BuildingBlocks:https://github.com/masastack/... MASA.Contrib:https://github.com/masastack/... MASA.Utils:https://github.com/masastack/... MASA.EShop:https://github.com/masalabs/M... MASA.Blazor:https://github.com/BlazorComp... 如果你对咱们的 MASA Framework 感兴趣,无论是代码奉献、应用、提 Issue,欢送分割咱们

April 22, 2022 · 1 min · jiezi

关于测试工具:利用简单方法解决外部系统回调测试环境多套环境便捷切换

原文由JoyMao发表于TesterHome社区网站,点击原文链接可与作者间接交换这个是简略的措施来解决内部零碎回调测试环境时面临多套环境的办法。 背景:部门有10套测试环境并发,每套环境都有一些同样的利用来承受外网或者内网内的其余零碎的webhook回调解决,但回调地址只能有一个:每次版本变动,对应利用ip都会发生变化,须要及时去批改,存在管理混乱的问题。 过程解决的办法很多,比方服务化、proxy、k8s...复杂度不一,不改变现有测试公布环境的根底上,利用proxy是最不便的,但须要提供方便改变proxy转发的形式。这时候nginx的dynamic_upstream插件就能解决,他提供http接口来治理upstream(server的加、删、上线、下线),十分不便。咱们要做的就是在公布零碎中建设一个治理页面来治理,构造如下: 此插件比拟古老(古老不代表过期),github地址:https://github.com/cubicdaiya...readme中有具体的API,这里就不再粘贴了。 附:装置插件及nginx过程(centos为例) [1]yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-develcd /homemkdir callback_switch[2]cd callback_switchwget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz --no-check-certificatetar zxvf pcre-8.45.tar.gzcd pcre-8.45./configuremake && make install[3]cd ..wget https://nginx.org/download/nginx-1.16.1.tar.gz --no-check-certificatetar zxvf nginx-1.16.1.tar.gzwget https://github.com/cubicdaiya/ngx_dynamic_upstream/archive/refs/tags/v0.1.6.tar.gz --no-check-certificatetar zxvf v0.1.6.tar.gz[4]make nginxbincd nginx-1.16.1./configure --prefix=/home/callback_switch/nginxbin --with-http_stub_status_module --with-http_ssl_module --with-pcre=/home/callback_switch/pcre-8.45 --add-module=/home/callback_switch/ngx_dynamic_upstream-0.1.6makemake install[6]ln -s /home/callback_switch/nginxbin/sbin/nginx /usr/sbin/nginx 后续优化因为插件自身接口响应不利于UI端应用,我用go-iris从新包装了下他的http接口,配合vue-element实现对应的治理UI,实现只有配置好nginx的uptream zone后,能够非常不便的进行回调申请接管利用的设置。 原文由JoyMao发表于TesterHome社区网站,点击原文链接可与作者间接交换埋头学技术也不忘低头看路,加入第十届MTSC 大会(上海),技术、人脉双丰收 >>>

March 18, 2022 · 1 min · jiezi

关于测试工具:拆机胜利-6012C笔式万用表开箱及不完全拆解

胜利 6012C开箱及不齐全拆解 邻近毕业,开始提前拾掇一些货色来加重之后搬运的压力,仪器设备之类的也开始寻求一些小体积的代替,在没有精度要求的时候拿进去用用,这样就能够把大家伙收起来了。 万用表的话,看了半天,决定找一个适合的笔式万用表,价格100以内,网上仿佛没有太多相干的信息,本人在某马的网站上看了看了,最初看形状选了个6012C(尽管理论到手之后发现质感挺个别),性能只能说不太对得起价格,然而能大略做个参考吧。 首先是盒子。 关上,C型号只有机身和表笔两样。 摊开看一下。 (红色保护套能够拆下来,一开始没留神到间接带着怼插座所以弄上了点灰。彩色表笔中间都有保护套。 顺带一说,把红色保护套拆下来塞表笔的插孔里的话,机体会更像一支主动水笔。 供电是一节七号电池。 防伪标签下藏着几个小孔(拆开发现外部对应地位是蜂鸣器)。 咳咳,说到拆,还没试用呢,上手玩一下先(顺带放下了手里的螺丝刀)。 长按电源键开机,默认是Auto模式,电源键同时也是Select键,短按一下切换到下一种测量模式,就是电压电阻电容(没有电感)、通断、温度(图一乐)等。 而后,其余的两个键也是相似的逻辑,短按的性能对应文字,长按的性能对应图标。最靠近屏幕的键,短按是切换非接触电压测量(电工判断走线)和零前线判断,长按是手电筒性能(一个3mm直插白光LED);两头的键短按是数据放弃,长按是关上屏幕背光(大略是没找到适合的图标轻易用了一个)。 先试了下电阻、电压、通断等等,感觉还能够,不过手上临时也没有能够比照的设施还有高精度的器件。 而后试了下电容——好吧看来它的确只是一根高级点的试电笔(测104显示0.13uf这样子,可能图中这次测的后果比拟离谱,然而图一乐的货色也懒得计较了,要准确又便携的话当前整个LCR镊子玩)。 持续拆好了,看看外面是什么样子。 把尾部的一个小帽子拿下来,再拧下三颗螺丝(两颗内部可见,一颗在电池上面)并撕掉机体侧面的两张长长的贴纸,之后就能够很容易地用拆机片关上外壳(因为有卡扣嘛,不过我实际上是用勺子解决的,拆机片没有带到新宿舍)。 牛屎芯片,很悲观,看不出什么信息,霎时没有趣味拆下去了,而且另一面的屏幕预计是导电橡胶连的,万一沾点灰还不好装回去。 再拍一张完结好了(奇怪的对焦orzzz)。 完结,总的来说作为高级试电笔挺不错的,测量嘛,电压电阻啥的就认为有两位半的精度吧,其余的嘛,判断一下数量级还是能够的。

March 4, 2022 · 1 min · jiezi

关于测试工具:2021年软件测试工具总结嵌入式软件测试工具-IDCF

兴许你生疏,但在智能物联网时代,人们会越来越关注嵌入式软件测试。 说起嵌入式软件测试,咱们先疾速理解一下嵌入式软件本身的特点:嵌入式软件具备实时性、内存空间无限、I/O通道少,而且要求功耗低、高可靠性,对老本也比拟敏感,和硬件关联性强等特点,因而嵌入式软件的测试与个别商用软件的测试有较大的区别。 嵌入式软件开发和运行的环境齐全不一样,是离开的,开发在Windows/Mac OS桌面客户端(宿主机环境)上进行,而运行的环境是在指标机环境上,即个别是基于Linux/Android内核开发的嵌入式操作系统或像RT-thread那样的实时操作系统,反对ARM CPU、 MCU 和 蓝牙芯片等低功耗的要害硬件。 嵌入式软件的单元测试个别在宿主机环境下进行,只是在个别情况下(如指标机编译器可能有缺点)会要求在指标机环境下进行,所以在单元测试上,嵌入式软件和个别商用软件的之间差异比拟小,不过,嵌入式软件的单元测试对代码的品质要求比拟高,个别要求达到MC/DC覆盖率。嵌入式软件的集成测试,个别指与指标机的硬件环境集成,也能够和仿真环境集成,这时须要做相应的硬件兼容性测试。但到了零碎测试、配置项测试或确认测试,个别就会在指标机环境下执行,这时和个别商用软件的测试有较大的差异。 因为嵌入式零碎的实时性,其测试应充分考虑零碎实时响应的问题,其响应工夫个别要求在毫秒级别,其对应的负载测试少不了。在对指标机进行测试时,个别须要对在宿主机上编译通过的代码进行插桩解决。这样能够在指标机执行程序的时候,将插桩时预测好的数据返回到宿主机上进行剖析,因而,宿主机和指标机之间的数据传输也要认真对待。 除此之外,咱们须要制订合乎零碎需要的可靠性级别和安全级别,进行相应的可靠性测试和安全性测试。嵌入式软件测试工具,开源工具比拟少,少数是商业工具,而且往往成套,笼罩零碎性能、性能剖析和安全性测试。明天咱们就介绍比拟罕用的或好用的嵌入式软件测试工具,次要有: ETest StudioKlocworkHitex TESSYRapita Verification SuiteSquishTrinity DT10VectorCAST 一、ETest Studio 一款国产化黑盒测试工具,能够做配置项测试和零碎测试,包含测试资源管理、环境形容、接口协议定义、用例设计、实时数据监控、测试工作治理等性能,次要特点有: 提供各类管制总线和仪器接口API,可由开发人员集成各类通用接口板卡和用户自定义的接口板卡。反对的I/O类型包含:RS232/422/485、1553B、CAN、TCP、UDP、AD、DA、DI、DO、ARINC429等,并可灵便扩大;反对看待测系统及其外围环境、接口状况等进行可视化仿真建模设计,如提供Matlab/Simulink集成接口,可实现现有仿真模型的开发和利用,反对仿真模型实时代码的生成和运行;提供接口协议描述语言(DPD语言)及其编辑编译环境;可通过表格、仪表、曲线图、状态灯等虚构仪表实时监测接口数据;可按二进制、十进制、十六进制监测输出与输入的原始报文并查问过滤;测试脚本反对时序测试和多任务实时测试,具备可主动生成满足不同组合笼罩要求测试数据的性能;提供实时内核模块,可实现高可靠性强实时测试,响应工夫<=1ms,同步传送和抖动工夫小于10us。上位机和下位机别离采纳Windows和实时操作系统。官网地址:http://www.kiyun.com/Show/fan... 二、Klocwork Klocwork是一款反对百万行甚至千万行以上的C/C++/Java/JS/C#代码品质动态检测工具,利用当先的深度数据流剖析技术,动态地跨类、跨文件地查找软件运行时缺点、谬误和安全漏洞,并精确定位谬误产生的代码堆栈门路。次要性能包含: Klocwork反对自动化扫描1000多种代码缺点,包含空指针、资源及内存透露、未捕捉的异样、除零等,全面检测代码品质问题;Klocwork提供全面的平安规定扫描能力,反对CWE, OWASP, CERT, PCI DSS, DISA STIG, 和ISO/IEC TS 17961等规范,深度数据流剖析能力强、准确率高、漏报率低;反对罕用的IDE,如Eclipse, Visual Studio, IntelilJ Idea等,并与CI/CD工具和集成、B/S+C/S部署形式;Klocwork反对动态检测软件应用的安全漏洞,包含SQL注入、被净化的数据、缓存溢出、弱代码实现及其它多种常见利用安全漏洞。官网地址:https://www.perforce.com/prod... 三、Hitex TESSY Tessy 源自戴姆勒- 奔驰公司的软件技术实验室,由德国Hitex 公司负责寰球销售及技术支持服务,是一款专门针对基于C/C++开发的嵌入式软件进行单元/ 集成测试的工具,Tessy 也能够满足各类规范( 如ISO26262、IEC61508、EN 50128/50129 等)对测试的需要,而工具本身也通过了TUV 的认证,证实该软件是安全可靠的。次要性能有: 主动生成测试环境、一键执行及评估后果;便捷的测试用例设计形式,如集成了分类树编辑器CTE,反对导入导出多种格局的测试用例;通过剖析源文件自动识别函数及相干接口,在接口产生变更时,反对通过简便的操作进行测试数据复用,实现高度自动化的回归测试;提供分支笼罩、MC/DC、多条件笼罩MCC等多种覆盖度剖析。还提供其它一些工具,如: Static code anlaysisTest case specificationWorking with standardsAnalyzerHardware-in-the-loop test官网地址:https://www.hitex.com/embedde... 四、Rapita Verification Suite (RVS) RVS是一套面向嵌入式软件的测试工具集,反对MC/DC覆盖率剖析,满足DO-178C和ISO 26262认证要求。其中RapiTest具备易于编写和易于审查但功能丰富的测试格局,以及创立多线程测试和测试代码元素(如泛型和公有类型)的能力(无需编写源代码)。 单元、集成和零碎测试的生成和执行 - RapiTest;结构性代码覆盖率剖析 - RapiCover;执行工夫剖析 - RapiTime;调度剖析 - RapiTask。官网地址:https://www.rapitasystems.com... ...

January 12, 2022 · 1 min · jiezi

关于测试工具:附下载国内首个中国混沌工程调查报告2021深度解读-IDCF

随着分布式、云原生成为支流的零碎架构设计计划,大规模分布式系统的稳定性保障能力越来越成为业界关注的重点。现在,混沌工程作为保障系统稳定性的利器,受到业界宽泛关注,中国信通院作为国内最早推动混沌工程标准化工作的单位,联结混沌工程实验室全体成员单位、社区、媒体独特发动国内首个混沌工程问卷调查,以期把握我国混沌工程的接收水平和特点。 2021年11月11日,在混沌工程实验室主办的“混沌工程与零碎稳定性主题沙龙”上,中国信通院云大所副所长栗蔚深度解读了国内首个《中国混沌工程调查报告》。以下为报告具体内容。 本报告采纳在线考察加线下访谈的形式,共回收无效问卷1016份、访谈企业17家。报告的第一局部介绍考察背景,第二局部介绍我国混沌工程以后应用状况,第三局部是混沌工程致力于进步的零碎稳定性现状,第四局部聚焦混沌工程的倒退倡议。本报告以调查结果为根底,力争详实主观地反映混沌工程畛域利用现状与痛点需要,为宽广从业人员、专家学者和钻研机构提供真实可信的数据参考。 外围观点1、国内软件系统稳定性有较大可晋升空间。考察数据显示,近20%的受访用户所负责的产品可用性低于2个9(意味着用户每个月要忍耐超过7.3小时的服务故障),超过4成产品的可用性低于3个9(意味着用户每个月要忍耐超过44分钟的服务故障)。故障产生之后的解决状况也差强人意:仅不到一半的故障均匀发现时长(MTTD)小于1小时;故障均匀修复时长广泛超过1小时,超过6成故障修复工夫(MTTR)高于1小时,甚至有约20%的服务故障修复工夫超过12小时。日益简单的IT零碎与疾速迭代的软件交付为零碎稳定性的保障带来诸多挑战和不确定性,国内软件系统稳定性仍有较大晋升空间。 2、混沌工程利用以后成熟度偏低,市场须要成熟、欠缺的混沌工程商业产品及咨询服务。超过3成企业仅在小范畴应用混沌工程,仅8.68%的企业较大规模地利用混沌工程,混沌工程在企业外部渗透率有待进一步提高;近半数企业在研发、测试环境中应用混沌工程,仅不到20%的企业在生产环境中发展混沌工程演练,混沌工程在外部应用的技术复杂度不够高;妨碍用户大规模、深度应用混沌工程的次要阻碍是:不足相干教训以及放心故障注入对生产环境带来危险。将来,需面向市场推出成熟、可信的混沌工程产品或建设咨询服务,以晋升混沌工程的技术认可度、升高用户应用门槛、打消应用顾虑,成为推动行业步入快车道的催化剂。 3、混沌工程是晋升产品可用性的无效伎俩,是建设稳定性优先策略的技术外围。考察数据显示,随着混沌工程应用频率晋升,低可用性(可用性低于99%)的产品占比急剧萎缩,高可用性(可用性高于99.99%)的产品占比迅速增长。混沌工程通过在生产环境中执行探索性测试以发现零碎中的暗藏问题,在软件系统稳定性保护上展现出微小价值,其中晋升服务可用性及升高故障修复工夫是两大次要收益。65%的受访用户认为采纳混沌工程晋升了服务可用性,49.85%的受访者认为混沌工程帮忙升高了MTTR。企业须要建设稳定性优先(Stability First)的策略,构建零碎稳定性保障体系,巩固推动数字化转型过程。 4、企业期待构建残缺、可度量的零碎稳定性保障体系。线下访谈数据显示,业务零碎开发人员面对日益简单的技术架构,急需利用适配新型IT架构的稳定性保障工具、建设门路指引以及稳定性度量体系;受访用户广泛示意,正当借力合作伙伴或技术钻研机构的技术支持和实践经验,能够很大水平躲避新技术驳回过程中可能遇到的阻碍,缩短技术成熟周期。具体数据解读第一局部【混沌工程利用现状】倒退阶段:混沌工程在企业外部的利用处于起步阶段1)混沌工程普及率较低,将来有广大增长空间:受访用户中有超过3成从未应用过混沌工程,仅3.94%左右的能比拟频繁地(每天演练)应用混沌工程。 图1 混沌工程应用频率 2)混沌工程在企业外部的渗透率偏低:超过3成企业应用混沌工程的产品比例低于25%,仅8.68%的企业外部利用混沌工程的占比超过75%。混沌工程对企业外部的很多应用场景、产品都有较大可渗透空间。 图2 公司中应用混沌工程的业务占比 3)混沌工程应用阶段较为高级:44.41%的用户在研发/测试环境中发展演练,在预生产环境中发展混沌工程演练的占比也达到了32.21%。较低的生产环境使用率体现了用户对混沌工程间接作用于生产环境的不自信。 图3. 发展混沌工程演练的环境 开发工具:混沌工程实际以国内开源工具为主,需要侧与供应侧偏重各有不同。1)服务需要侧(甲方)更偏向于采纳商业产品为辅助:33.04%的服务需要侧偏向于采纳成熟的商业产品作为辅助,以实现混沌工程疾速落地、避开施行陷阱;其次才会思考自研平台。 图4 混沌工程应用工具散布-需要侧 2)服务供应侧(乙方)更偏向于采纳自研平台为辅助:对于服务供应侧来讲,商业产品的吸引力(26.68%)小于自研平台(37.96%)及国外开源工具(29.07%)。 图5 混沌工程应用工具散布-供应侧 故障类型:故障注入类型以根底资源故障为主。1)故障注入类型聚焦于根底资源层面,应用层及容器关注度偏低:网络资源故障和计算资源故障是最通常采纳的故障注入类型,而利用类和容器类故障注入的关注度绝对较低。 图6. 故障注入类型散布 2)故障演练施行靶点次要为主机/虚机:与故障注入类型统一,用户最常采纳的故障演练施行靶点为主机/虚机,较少将故障间接施行在利用上,这可能与局部利用故障有肯定的技术实现门槛,须要与开发框配合实现无关。 图7. 混沌工程演练的施行对象/靶点 施行收益:晋升可用性是施行混沌工程的最大收益与前述剖析后果保持一致,可见混沌工程有助于晋升用户最关注的服务可用性。考察数据显示,高达65%应用过混沌工程的受访用户示意混沌工程能够“晋升服务可用性”,显著高于其余收益项。 图8. 施行混沌工程的收益 施行阻碍:教训的不足及对危险的担心,国内市场须要成熟、欠缺的混沌工程商业产品或咨询服务升高技术施行难度。考察数据显示,46.32%的用户不足应用混沌工程的相干教训,45.29%的用户示意放心“混沌工程可能会对生产环境带来某些危险” ;而对于刚接触混沌工程的用户来讲,“不足相干教训”是其深度驳回混沌工程最大的阻碍;对于频繁应用混沌工程的用户来讲,对危险的担心占上风;同时,随着混沌工程应用频率的晋升,用户对掂量混沌工程效益的需要显著增长(图10橙色线)。 打消用户驳回混沌工程的顾虑,有以下倡议: 向市场推出成熟的混沌工程产品或咨询服务,升高用户的应用门槛是尽快推广混沌工程的无效伎俩;设计齐备的零碎稳定性度量体系、混沌试验故障分级机制能够量化混沌工程的施行成果,推动混沌工程精益化发展,晋升混沌工程施行的投入产出比。 图9. 施行混沌工程的最大阻碍 图10. 采纳混沌工程的阻碍在应用频率上的散布 前置条件:技术就绪是施行混沌工程的前置条件产品技术层面的就绪包含:欠缺的监控体系、可量化的零碎稳定性评估体系及零碎已具备韧性根底。考察数据显示,65.59%的用户认为具备欠缺的监控体系是混沌工程施行的首要前置条件,超60%的用户须要对混沌试验时故障注入后的影响有可量化的评估模型,而团队合作在用户的认知中重要性绝对较低,48.09%用户抉择此项。 图11. 施行混沌工程的前置条件 概念认知:混沌工程概念不清晰,常识遍及任重道远考察数据显示,超过半数被访用户对混沌工程和演习的概念分辨不清,约1/4的用户认为两者没有区别,仅有约1/5的用户能明确表述出两者的区别。对被访用户的反馈信息加工、进行词频剖析后,能够发现混沌工程更偏差于在生产环境中执行探索性测试,具备随机性,以发现零碎中的暗藏问题;演习更偏差于有计划性地验证某一具体猜测。 图12. 混沌工程与演习是否有区别 图13. 用户对混沌工程的意识 图14. 用户对演习的意识 第二局部【零碎稳定性现状】可用性:企业产品可用性仍有晋升空间1)考察数据显示,近20%的受访用户所负责的产品可用性低于2个9,近半数产品的可用性能低于3个9。这意味着47.04%的用户每个月要忍耐高于44分钟(可用性99.9%),甚至超过7.3小时(可用性99%)的服务故障。 图15. 可用性现状 2)故障产生之后的解决状况也差强人意:仅不到一半的用户故障均匀发现时长(MTTD)小于1小时;故障均匀修复时长广泛超过1小时,超过6成故障修复工夫(MTTR)高于1小时,甚至有约20%的服务故障修复工夫超过12小时。 图16. 故障均匀发现时长(MTTD) ...

December 27, 2021 · 1 min · jiezi

关于测试工具:基于海量日志和时序数据的质量建设最佳实践

简介: 在云原生和DevOps研发模式的挑战下,一个零碎从开发、测试、到上线的整个过程中,会产生大量的日志、指标、事件以及告警等数据,这也给企业品质平台建设带来了很大的挑战。本议题次要通过可观测性的角度来探讨基于海量日志和时序数据的品质建设最佳实际。 作者 | 寂之起源 | 阿里技术公众号 一 前言在云原生和DevOps研发模式的挑战下,一个零碎从开发、测试、到上线的整个过程中,会产生大量的日志、指标、事件以及告警等数据,这也给企业品质平台建设带来了很大的挑战。本议题次要通过可观测性的角度来探讨基于海量日志和时序数据的品质建设最佳实际。 二 品质建设痛点家喻户晓,在云原生开发模式下,可观测性是十分重要的一部分,它通过日志、指标、Trace等数据,让咱们能够深刻理解零碎的运行状态和衰弱水平。在 CNCF Landscape大图中,可观测性也占据了相当大的一块地位。 然而在理论应用过程中,许多人对可观测性的关注,次要集中在零碎上线之后。这当然是没有问题的,但实际上,从一个零碎开发开始,始终到线上运行,都是能够从可观测的角度来对系统的品质进行评估和掂量,咱们能够称之为对品质的观测。 下图比拟概括地形容了一个零碎的品质观测残缺生命周期,大体上能够分为如下四个阶段,并且在每个阶段都有须要特地关注的一些数据和指标: 开发阶段:重点须要关注代码的品质,例如动态代码扫描以及依赖查看会发现潜在的代码缺点和平安危险,由此咱们能够统计千行代码缺陷率或者重大缺点比例,从而来掂量一个零碎的代码品质是否符合要求测试阶段:在此阶段须要重点关注测试的品质,例如测试覆盖率,以及测试用例的失败率等指标灰度验证:须要关注零碎的稳定性以及不同版本之间的差别,因而也会有一系列的业务指标,例如HTTP Error 比例,不同版本的提早等指标的比照线上运行:此时须要重点关注零碎的稳定性以及业务的稳定性,因而各种线上的性能指标、业务指标、利用日志、Trace等各种数据都是十分重要的在整个品质观测的生命周期中,除了各种各样的数据,咱们也会波及到各种各样的零碎,例如 GitLab、sonarqube、Allure、JMeter、Jenkins、Travis CI、Argo CD 等等。这些不同的零碎作用于不同的阶段,会产生大量的异构数据,如何对这些数据进行正当的治理和应用,从而能够比拟不便地挖掘出其中的数据价值(不局限于软件品质方面),对咱们来说是一个比拟大的挑战。 基于上述的探讨,咱们能够大体总结出品质观测的几个痛点: 海量的异构数据:在零碎开发、测试、验证、上线等各个阶段产生了大量的日志、时序、Trace 等数据,这些数据产生的地位、数据格式、以及存储的地位,都有可能是不一样的。如何从这些数据中疾速精准地挖掘出潜在的品质问题比拟艰难。依赖规定,不足智能:品质监控比拟依赖于人的教训,很大水平上受限于人为设定的规定和阈值,无奈做到数据自适应,因而无奈施展出真正的数据价值。另一方面就是随着零碎的倒退和演进,须要大量的人工干预和一直调整,才可能让监控比拟无效。告警风暴与告警误报:为了不错过轻微的问题,咱们可能会配置大量的监控,从而导致在残缺的软件生命周期中可能产生大量的告警,难以从其中辨认出无效信息。另外大量的告警也带了很大水平上的误报问题,从而导致“狼来了”效应,于是真正的问题反而很容易又被疏忽掉。这就陷入了恶性循环。三 数据对立接入和治理1 海量数据管理痛点首先咱们来探讨第一个痛点,也就是如何对海量的异构数据进行治理。目前可观测性相干的零碎形形色色。 例如日志可能会应用 ELK 或者 Splunk,指标会应用 Prometheus,Trace 应用 Skywalking、Jaeger 或者 zipkin。但太多的抉择也不见得是坏事,在这种状况下,可观测性数据的治理又给咱们带来了如下几个痛点: 运维老本高:残缺的品质零碎须要数个甚至十多个软件的协同,从而也带了极高的运维老本。学习老本高:每个软件都有本人的应用插件、插件零碎,有些还会有本人的DSL语法,学习老本十分高,很难齐全把握应用。扩大艰难:随着数据规模的增长,软件的扩大能力、性能、稳固能力等方面都会有很大的挑战。数据孤岛:不同的数据处于不同的零碎中,协同艰难。例如想要将 ES 中的日志和 Prometheus 中的指标进行一个 Join 查问就无奈实现,除非做额定的二次开发。2 数据对立接入和治理基于上述几个痛点,咱们的解决方案是将这些异构的数据进行对立的存储和治理,如下图所示: 在这里,咱们将日志、指标、Trace等数据全副接入到一个对立的可观测性存储中。而后基于这个对立的存储,进行后续的查问剖析、可视化、监控告警、AI 等下层能力,甚至还能够进行数据的加工和规整,一站式地实现异构数据到同构数据的转换过程。 基于对立的存储,咱们能够构建对立的查问和剖析语法,从而一套语法适配不同的数据,并且让不同的数据之间进行联结查问也变成了可能。如下图所示,咱们以规范 SQL 为根底,进行了局部 DSL 扩大和 SQL 函数扩大,并交融了 PromQL,从而让不同类型的数据查问和剖析变得对立。 例如上面的例子: 咱们能够通过规范 SQL 语句对日志进行剖析还能够通过 PromQL 扩大的 SQL 函数对指标数据进行剖析还能够通过嵌套查问,对指标数据的剖析后果进行再聚合此外还能够再通过机器学习函数,给查问和剖析赋予 AI 的能力 基于上述对立的数据存储和查问剖析,咱们能够十分轻松地实现对立的可视化和监控。如下图所示,尽管不同阶段的数据产生自不同的零碎,也有着不同的格局,然而因为它们的存储和剖析是统一的,因而咱们能够构建出对立的报表来查看各个阶段的软件品质,以及对立进行监控的配置和告警的治理,而无需将这些扩散到各个不同的零碎中,脱离例如 ES + Kibana、Prometheus + Grafana 等组合。 ...

October 19, 2021 · 1 min · jiezi

关于测试工具:基于海量日志和时序数据的质量建设最佳实践

简介: 在云原生和DevOps研发模式的挑战下,一个零碎从开发、测试、到上线的整个过程中,会产生大量的日志、指标、事件以及告警等数据,这也给企业品质平台建设带来了很大的挑战。本议题次要通过可观测性的角度来探讨基于海量日志和时序数据的品质建设最佳实际。 作者 | 寂之起源 | 阿里技术公众号 一 前言在云原生和DevOps研发模式的挑战下,一个零碎从开发、测试、到上线的整个过程中,会产生大量的日志、指标、事件以及告警等数据,这也给企业品质平台建设带来了很大的挑战。本议题次要通过可观测性的角度来探讨基于海量日志和时序数据的品质建设最佳实际。 二 品质建设痛点家喻户晓,在云原生开发模式下,可观测性是十分重要的一部分,它通过日志、指标、Trace等数据,让咱们能够深刻理解零碎的运行状态和衰弱水平。在 CNCF Landscape大图中,可观测性也占据了相当大的一块地位。 然而在理论应用过程中,许多人对可观测性的关注,次要集中在零碎上线之后。这当然是没有问题的,但实际上,从一个零碎开发开始,始终到线上运行,都是能够从可观测的角度来对系统的品质进行评估和掂量,咱们能够称之为对品质的观测。 下图比拟概括地形容了一个零碎的品质观测残缺生命周期,大体上能够分为如下四个阶段,并且在每个阶段都有须要特地关注的一些数据和指标: 开发阶段:重点须要关注代码的品质,例如动态代码扫描以及依赖查看会发现潜在的代码缺点和平安危险,由此咱们能够统计千行代码缺陷率或者重大缺点比例,从而来掂量一个零碎的代码品质是否符合要求测试阶段:在此阶段须要重点关注测试的品质,例如测试覆盖率,以及测试用例的失败率等指标灰度验证:须要关注零碎的稳定性以及不同版本之间的差别,因而也会有一系列的业务指标,例如HTTP Error 比例,不同版本的提早等指标的比照线上运行:此时须要重点关注零碎的稳定性以及业务的稳定性,因而各种线上的性能指标、业务指标、利用日志、Trace等各种数据都是十分重要的在整个品质观测的生命周期中,除了各种各样的数据,咱们也会波及到各种各样的零碎,例如 GitLab、sonarqube、Allure、JMeter、Jenkins、Travis CI、Argo CD 等等。这些不同的零碎作用于不同的阶段,会产生大量的异构数据,如何对这些数据进行正当的治理和应用,从而能够比拟不便地挖掘出其中的数据价值(不局限于软件品质方面),对咱们来说是一个比拟大的挑战。 基于上述的探讨,咱们能够大体总结出品质观测的几个痛点: 海量的异构数据:在零碎开发、测试、验证、上线等各个阶段产生了大量的日志、时序、Trace 等数据,这些数据产生的地位、数据格式、以及存储的地位,都有可能是不一样的。如何从这些数据中疾速精准地挖掘出潜在的品质问题比拟艰难。依赖规定,不足智能:品质监控比拟依赖于人的教训,很大水平上受限于人为设定的规定和阈值,无奈做到数据自适应,因而无奈施展出真正的数据价值。另一方面就是随着零碎的倒退和演进,须要大量的人工干预和一直调整,才可能让监控比拟无效。告警风暴与告警误报:为了不错过轻微的问题,咱们可能会配置大量的监控,从而导致在残缺的软件生命周期中可能产生大量的告警,难以从其中辨认出无效信息。另外大量的告警也带了很大水平上的误报问题,从而导致“狼来了”效应,于是真正的问题反而很容易又被疏忽掉。这就陷入了恶性循环。三 数据对立接入和治理1 海量数据管理痛点首先咱们来探讨第一个痛点,也就是如何对海量的异构数据进行治理。目前可观测性相干的零碎形形色色。 例如日志可能会应用 ELK 或者 Splunk,指标会应用 Prometheus,Trace 应用 Skywalking、Jaeger 或者 zipkin。但太多的抉择也不见得是坏事,在这种状况下,可观测性数据的治理又给咱们带来了如下几个痛点: 运维老本高:残缺的品质零碎须要数个甚至十多个软件的协同,从而也带了极高的运维老本。学习老本高:每个软件都有本人的应用插件、插件零碎,有些还会有本人的DSL语法,学习老本十分高,很难齐全把握应用。扩大艰难:随着数据规模的增长,软件的扩大能力、性能、稳固能力等方面都会有很大的挑战。数据孤岛:不同的数据处于不同的零碎中,协同艰难。例如想要将 ES 中的日志和 Prometheus 中的指标进行一个 Join 查问就无奈实现,除非做额定的二次开发。2 数据对立接入和治理基于上述几个痛点,咱们的解决方案是将这些异构的数据进行对立的存储和治理,如下图所示: 在这里,咱们将日志、指标、Trace等数据全副接入到一个对立的可观测性存储中。而后基于这个对立的存储,进行后续的查问剖析、可视化、监控告警、AI 等下层能力,甚至还能够进行数据的加工和规整,一站式地实现异构数据到同构数据的转换过程。 基于对立的存储,咱们能够构建对立的查问和剖析语法,从而一套语法适配不同的数据,并且让不同的数据之间进行联结查问也变成了可能。如下图所示,咱们以规范 SQL 为根底,进行了局部 DSL 扩大和 SQL 函数扩大,并交融了 PromQL,从而让不同类型的数据查问和剖析变得对立。 例如上面的例子: 咱们能够通过规范 SQL 语句对日志进行剖析还能够通过 PromQL 扩大的 SQL 函数对指标数据进行剖析还能够通过嵌套查问,对指标数据的剖析后果进行再聚合此外还能够再通过机器学习函数,给查问和剖析赋予 AI 的能力 基于上述对立的数据存储和查问剖析,咱们能够十分轻松地实现对立的可视化和监控。如下图所示,尽管不同阶段的数据产生自不同的零碎,也有着不同的格局,然而因为它们的存储和剖析是统一的,因而咱们能够构建出对立的报表来查看各个阶段的软件品质,以及对立进行监控的配置和告警的治理,而无需将这些扩散到各个不同的零碎中,脱离例如 ES + Kibana、Prometheus + Grafana 等组合。 ...

October 15, 2021 · 1 min · jiezi

关于测试工具:引流工具GoReplay简介和在猪齿鱼效能平台中的应用

背景校验零碎的正确性和可靠性时,仅靠用例场景无奈笼罩全生产环境下的所有场景,须要一套引流工具,在零碎正式上线前用线上的申请测试待上线零碎,在失常申请下理解是否有报错、在数倍申请下理解零碎的性能瓶颈。罕用的引流工具有GoReplay、tcpcopy等。 猪齿鱼效力平台自动化测试模块流量回归测试性能,次要应用GoReplay录制产品界面中的操作产生的HTTP申请及响应用于生成流量文件,而后将其导入Choerodon平台生成用例进行治理与执行。本文通过GoReplay的介绍及GoReplay在猪齿鱼效力平台中的实际,帮忙大家了解猪齿鱼流量回归测试的概念及应用。 对于GoReplayGoReplay,原名叫gor,因为其易上手,且性能比拟全所以咱们应用GoReplay进行流量录制。GoReplay是在投入生产之前应用实在流量测试应用程序最简略和最平安的形式。 随着应用程序的增长,测试所需的工作量也呈指数增长。GoReplay提供了重复使用现有流量进行测试的简略想法,这使得它十分弱小。能够剖析和记录应用程序流量,且不影响利用,打消了将第三方组件置于要害门路中带来的危险。 GoReplay的工作原理框图: GoReplay的装置下载地址:https://github.com/buger/goreplay/releases在环境中输出指令:--wget https://github.com/buger/goreplay/releases/download/v1.1.0/gor_1.1.0_x64.tar.gz 这样咱们就能获取到gor_1.1.0_x64.tar.gz压缩文件,。 而后对其解压输出指令:--tar vxf gor_1.1.0_x64.tar.gz 文件解压过分咱们失去了一个gor文件;咱们将gor文件挪动到path环境下,这样咱们就能够应用gor命令进行流量录制了。 GoReplay的根本指令--input-raw- 用于捕捉HTTP流量,您应该指定IP地址或接口和应用程序端口。--input-file- 承受之前应用的文件--output-file。--input-tcp- 如果您决定将来自多个转发器GoReplay实例的流量转发给它,则由GoReplay聚合实例应用。可用输入: --output-http- 重放HTTP流量到给定的端点,承受根底URL。--output-file- 记录传入的流量到文件。--output-tcp- 将传入数据转发给另一个GoReplay实例。--output-stdout- 用于调试,输入所有数据到stdout。GoReplay在猪齿鱼效力平台中的实际1.录制流量1.1 首先咱们先在服务器中装置Gor_1.1.0; 1.2 而后输出命令以下命令: sudo nohup gor --input-raw :8080 \ # 监听服务的端口(默认网关的端口为8080) -http-allow-method GET \ # 只录制GET,POST,PUT,DELETE四种办法的申请 -http-allow-method POST\-http-allow-method PUT\-http-allow-method DELETE\-input-raw-track-response \ # 捕捉响应报文 -input-raw-timestamp-type PCAP_TSTAMP_HOST \ # 指定工夫戳格局 -input-raw-buffer-size 32mb \ # 管制用于持有TCP包的零碎缓存大小 -prettify-http \ # 主动解码 Content-Encoding:gzip 和 Transfer-Encoding:chunked的申请和响应 -output-file-append \ # 追加到文件,使得最终只生成一个.gor文件 -output-file requests.gor & # 指定后果文件名称。 ...

October 15, 2021 · 1 min · jiezi

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

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

September 26, 2021 · 1 min · jiezi

关于测试工具:首个汽车信息安全ISO国际标准正式发布ISOSAE-21434

ISO/SAE 21434 2021年8月31日,汽车信息安全畛域首个国际标准ISO/SAE 21434“Road vehicles—Cybersecurity engineering(路线车辆 信息安全工程)”正式公布。ISO 21434将帮忙汽车产品开发商、原始设施制造商及其供应商确保其车辆的网络安全。随着车辆变得更加互联以及主动驾驶汽车的逐步减少,以安全性(Security)思维来设计和施行汽车软件变得至关重要。 摘 要: 1_什么是 ISO 21434?_ 2_ISO 21434 概述_ 3_ISO 21434 合规性_ 4_为什么举荐 MISRA C:2012 修订版 1 和 CERT C 指南?_ 5__什么是 ISO 21434 工具? 什么是 ISO 21434? ISO 21434“路线车辆—网络安全工程”侧重于路线车辆电子系统中的网络安全危险。 ISO 21434 概述 ISO 21434 笼罩了车辆生命周期的所有阶段—从设计到服役—的网络安全工程的利用,它实用于车辆中所有的电子系统、部件和车辆软件,以及任何内部连贯。此外,该规范为开发人员提供了全面的办法来施行逾越整个供应链的平安保障措施。 为什么 ISO 21434 很重要? 随着车辆互联的减少(例如 Wi-Fi 和蓝牙)和主动驾驶汽车的倒退,网络攻击和因而受到侵害的危险也在逐步减少。以后的性能平安要害(safety-critical)的规范不足以应答此类危险,因而须要建设新的指南和规范。 ISO 21434背地的用意是提供一个结构化的流程,以确保网络安全问题在汽车产品的整个生命周期都被思考到。该规范要求汽车制造商和供应商在施行网络安全工程时证实他们的渎职考察,并要求将网络安全治理利用到整个供应链以反对网络安全工程。 它的用意是促使企业激励网络安全文化,以便所有设计都从一开始就思考到平安问题。 ISO 21434 合规性 ISO/SAE 21434 对软件开发有特定要求,包含从网络安全要求登程的对固有缺点和整体一致性、正确性及完整性的剖析。 网络安全应该处于所有设计决策的最前沿,包含抉择用于软件开发的编程语言。在抉择编程语言时,须要思考几个规范,包含: • 平安设计和编码技术。 • 明确的语法和语义定义。 然而,有些准则可能无奈在所选语言中失去充沛解决,正因如此,才须要以下几种办法解决语言缺点,包含: • 语言子集的应用。 • 强制执行强类型。 • 应用防御性实现技术。 ...

September 17, 2021 · 1 min · jiezi

关于测试工具:让全链路压测变得更简单Takin20重磅来袭

自Takin社区版1.0公布两个多月以来,有很多测试同学陆续在各自的工作中使用了起来,其中包含金融、电商、物流、出行服务等行业。这个过程中咱们收到了很多同学的反馈倡议,同时也理解到很多同学在落地全链路压测过程中遇到了很多难点,比方: 链路调用关系简单,梳理耗时容易脱漏; 装置部署比拟麻烦,须要配置很多信息; 生产全链路压测危险较高,是否在测试环境落地? …… 上述问题都是全链路压测落地过程中不可避免的挑战,通过咱们产品和研发小哥哥的不懈努力后,全新的Takin2.0终于来啦!这一次,咱们的指标是:赋能测试工程师,让全链路压测变得更简略。 相比于1.0版本,本次Takin2.0中咱们全新开源了2大新个性:链路主动梳理和测试环境全链路压测!同时针对1.0版本很多同学反馈的装置部署繁琐问题,做了专门的优化——实现一键装置部署。 咱们心愿Takin能够进一步为测试同学赋能,让全链路压测落地实际变得更加简略。也欢送大家退出Takin社区互相学习交换,和咱们一起,让Takin变得更好! 一键装置部署,无效升高接入老本依据泛滥测试同学的反馈倡议,同时为了升高装置部署的难度和老本,便于大家将更多的工夫精力用于压测和性能定位剖析。咱们对装置部署模块,进行了上面几点优化: 多容器一键拉起根底组件一键打包端口配置数量简化本地+云端多种部署模式视频教程:https://news.shulie.io/?p=3661 链路主动梳理,疾速了解零碎架构随着业务的倒退,服务链路日趋繁冗,宏大的服务节点数量、简单的服务分层、离散的组织协同模式,让服务治理的难度达到前所未有的高度。而对于测试同学来说,简单的业务逻辑和零碎调用关系,更是让压测的发展难上加难。 如上图所示,咱们都心愿零碎链路调用关系能够如图一所示高深莫测,然而理论的零碎链路关系往往像图二一样让人手足无措。本次咱们开源的链路梳理性能,就能够解决这个问题。 仅须要部署客户端,不须要对服务利用进行任何革新,就能够在Takin上,看到所有的服务调用关系,疾速了解零碎架构,并且通过链路架构图能够具体理解链路通过的利用、缓存、中间件、DB,甚至第三方的API,每条链路的所有走向都高深莫测。 测试环境全链路压测,满足不同应用需要通过大量的测试同学的反馈和调研,咱们发现很多同学现阶段对于在测试环境进行全链路压测的需要更为迫切。一方面,业务量级临时没有比拟显著的高并发场景,在测试环境发展压测曾经能够满足技术业务须要;另一方面,生产全链路压测落地自身难度比拟大,出于投入产出比的思考,测试环境全链路压测,是以后阶段性价比更好的抉择。对于测试环境的全链路压测,本次咱们做了如下几点优化: 测试环境疾速接入;不须要做数据隔离;多环境多模式适配; 更多具体内容,请看这里: Takin的github地址:https://github.com/shulieTech/Takin 测试环境全链路压测应用文档:https://news.shulie.io/?p=3369 生产环境全链路压测应用文档:https://news.shulie.io/?p=2987 看了这么多还有疑难?没有关系,锁定9月22日,数列科技直播间,线上为你答疑解惑!扫码入群,直播有揭示!

September 17, 2021 · 1 min · jiezi

关于测试工具:如何符合ISO-26262标准

介绍ISO 26262是汽车行业应用的性能平安规范,改编自IEC 61508。它蕴含对软件开发和设计的要求。大多数要求都蕴含在第 6 局部的合规性表格中。 在本白皮书中,您将学到如何应用编码标准和动态代码剖析工具来帮忙您合乎ISO 26262中每级ASIL的要求。汽车上越来越多地应用电子设备,而这些设施正在变得越来越简单。 软件故障不是小事,它可能会危及车辆的平安。开发团队须要确保不会产生故障。但详尽的测试简直不可能,因而零碎必须在设计上就可能避免故障或者确保故障时的行为是受控的。 合乎性能平安规范,如ISO 26262,是平安汽车零碎设计的要害。 ISO 26262 概述 ISO 26262改编自平安相干的电子系统的性能平安规范IEC 61508,它重点关注车辆零碎在整个平安生命周期中的特定需要。 须要合乎 ISO 26262 的零碎包含: •  驾驶员辅助零碎。 •  推动和车辆动态控制。 •  被动和被动平安零碎。 越是简单的零碎,失败的危险就越大。这包含系统性和随机性硬件故障。 如何应用 ISO 26262 升高危险 ISO 26262 为开发人员提供了加重这些危险的指南。这包含以下要求和设计过程。 汽车平安完整性等级 (ASIL) ISO 26262 对危险和平安要求进行分类。有四个汽车平安完整性等级(ASIL A – D)。ASIL A 是最温和的级别。ASIL D是最严格的级别。 零碎(性能级)的 ASIL决定了开发团队须要应用哪些办法 ISO 26262 第 6 局部规定了这些要求,包含: •  软件开发的启动。 •  软件架构设计。 •  软件单元设计和实现。 编码标准要求 倡议应用编码标准,例如 MISRA,以合乎 ISO 26262。应用编码标准与动态代码剖析工具能够帮忙您恪守ISO 26262第6局部的要求。以下是如何达到这些规范。 ISO 26262,第 6 局部合规表 ISO 26262 第 6 局部包含定义实现符合标准办法的表格。 ...

September 15, 2021 · 1 min · jiezi

关于测试工具:0330-兼容性测试

简介多个硬件之间,多个软件之间,或者是软硬件之间的相互配合水平 APP 兼容性测试挪动设施型号多用测试 APP 在支流设施上是否失常运行测试 APP 在支流设施上解体卡顿景象兼容性测试的作用进一步提高产品的品质,进步用户体验尽可能做到平台无关性保障软件存在价值,是掂量软件品质的重要指标是软件产品的市场更广大测试方法人工测试借助第三方工具:appcrawler

September 1, 2021 · 1 min · jiezi

关于测试工具:0319-分布式测试Selenium-Grid

简介Selenium Grid 近程运行 Selenium test,宗旨是在多个机器上并行运行 selenium 长处它是所有测试的核心入口点能够治理和管制浏览器运行的 Nodes/环境扩大并行运行测试跨平台测试负载平衡组成 装置与应用环境筹备: java 环境浏览器对应的 webdriver下载地址: https://www.selenium.dev/down... 官网文档: https://github.com/SeleniumHQ... 启动 selenium grid: # 作为 hub 角色启动java -jar selenium-server-standalone-<version>.jar -role hub配置 node.json,此文件可治理分布式环境,样例如下: { "capabilities": [ { "browserName": "firefox", "marionette": true, "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "chrome", "maxInstances": 5, "seleniumProtocol": "WebDriver" }, { "browserName": "internet explorer", "platform": "WINDOWS", "maxInstances": 1, "seleniumProtocol": "WebDriver" }, { "browserName": "safari", "technologyPreview": false, "platform": "MAC", "maxInstances": 1, "seleniumProtocol": "WebDriver" } ], "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 5, "port": -1, "register": true, "registerCycle": 5000, "hub": "http://localhost:4444", "nodeStatusCheckTimeout": 5000, "nodePolling": 5000, "role": "node", "unregisterIfStillDownAfter": 60000, "downPollingLimit": 2, "debug": false, "servlets" : [], "withoutServlets": [], "custom": {}}应用配置文件运行 selenium grid: ...

August 31, 2021 · 1 min · jiezi

关于测试工具:0317-APP自动遍历测试技术

monkey是一个在模拟器或者设施上运行的程序,用于生成用户事件的伪随机流 装置Android SDK 自带 应用根本配置选项adb shell monkey 100 # 对所有包随机操作 100 次操作束缚adb shell monkey -p com.xueqiu.android 100 # 指定对雪球app 随机操作 100 次事件类型和频率调试选项<!----> 事件计数adb shell monkey -p com.xueqiu.android -s 20 80 # 工夫种子,反复上一次的随机事件adb shell monkey -p com.xueqiu.android -vv -s 20 80 # 具体日志adb shell monkey -p com.xueqiu.android --throttle 500 100 # 时间延迟,使操作速度慢下来adb shell monkey -p com.xueqiu.android --pct-touch 10 1000 # 事件百分比罕用事件--pct-touch :触摸事件,比方点击--pct-motion :动作工夫,比方滑动--pct-trackball :轨迹事件,比方挪动+点击,曲线滑动--pct-majornav :次要导航事件,比方回退按钮、菜单按键maxim对 monkey 的改良,包含基于遍历规定,进步性能 https://github.com/zhangzhao4... AppCrawlerhttps://github.com/seveniruby... 环境要求java 8appium 1.8.x装置办法间接下载:https://pan.baidu.com/s/1dE0JDCH从源代码编译执行参数capability设置:与appium统一testcase:用于启动APP后的根底测试用例,能够了解为前置条件selectedList:遍历范畴设定triggerActions:特定条件触发执行动作的设置执行参数比配置文件优先级更高 自动化反对--testcasetestcase 的残缺状态 ...

August 31, 2021 · 1 min · jiezi

关于测试工具:0307-APP-控件交互

元素的罕用办法点击办法: element.click() 输出操作: element.send_keys() 设置元素的值: element.set_value() 革除操作: element.clear() 是否可见: element.is_displayed() ;返回 Ture / False是否可用: element.is_enabled()  ;返回 Ture / False是否被选中: element.is_selected()  ;返回 Ture / False获取属性值: element.get_attribute()  ;返回 Ture / False元素罕用的属性获取元素文本: element.text 获取元素坐标: element.location ;返回值为字典:{"x": 100, "y": 200}获取元素尺寸(高、宽): element.size ;返回值为字典:{"width": 500, "height": 22}其余获取手机设施屏幕尺寸信息: driver.get_window_rect() ;返回值为字典:{"width": 500, "height": 22, "x": 0, "y": 0}

August 29, 2021 · 1 min · jiezi

关于测试工具:集合运行排错方法

汇合运行排错罕用有两种办法:①通过申请体和响应体来排错②提前关上"Postman Console"窗口来排查谬误

July 29, 2021 · 1 min · jiezi

关于测试工具:postman的报错This-request-does-not-have-any-tests解决方法

步骤1.查看是否保留了申请。步骤2.查看变量是否存在。步骤3.查看是否设置了检查点。

July 29, 2021 · 1 min · jiezi

关于测试工具:软件测试工具

测试罕用的工具 BUG管理工具:禅道、Jira、Bugzilla等。 web端自动化测试工具:selenium、QTP等。 app自动化测试工具,有Appium,MonkeyRunner、Robotium等, 性能测试工具次要是Loadrunner和Jmeter。 抓包剖析工具wireshak、fiddler。 数据库工具:mysql/oracle

July 28, 2021 · 1 min · jiezi

关于测试工具:测试报告设计

软件测试报告的组成:一、概述        包含我的项目背景、需要剖析二、测试工夫、测试环境三、测试过程        评审记录、测试范畴、测试用例四、性能实现清单        列出是否曾经依照测试计划实现性能五、缺点统计测试缺点统计;测试用例执行状况统计六、测试统计状况资源统计执行状况问题统计问题列表遗留的问题七、测试总结测试论断;(是否通过)测试内容、测试用例的笼罩水平、bug的解决水平八、测试危险h5游戏

July 26, 2021 · 1 min · jiezi

关于测试工具:开源神器自动生成随机-mock-数据测试对象

测试的痛点大家好,我是老马。 每一位开发者大部分工作都是写代码、测试代码、修BUG。 咱们有很多测试代码,总是破费大量的实际去构建一个对象。 于是就在想,能不能主动填充一个对象呢? 于是去 github 查了一下,找到了一个测试神器 data-factory。 https://github.com/houbb/data-factory/data-factory作用data-factory 我的项目用于依据对象,随机主动生成初始化信息。便于测试。 个性8 大根本类型的反对数组、对象、枚举、Map、链表、Set 等反对String、BigDecimal、BigInteger、Currency 等常见类型的反对Date、LocalDate、LocalDateTime、LocalTime、Year 等常见日期类型反对反对 Regex 正则表达式@DataFactory 注解反对灵便配置疾速入门引入依赖 <dependency> <groupId>com.github.houbb</groupId> <artifactId>data-factory-core</artifactId> <version>0.0.8</version></dependency>咱们通过 DataUtil.build(class) 就能够生成对应类的随机值。 比方 DataUtil.build(String.class);,就能够生成随机的字符串: 0s5Z8foS1老马发现,根本反对所有常见的类型,咱们指定对应的 class 即可,这点还是挺不便的。 不过我个别都是应用对象,那能够主动填充一个对象吗? 对象 bean 填充当然,最罕用的还是初始化一个 java 对象。 public class User { private String name; private int age; private Date birthday; private List<String> stringList; //S/F 的枚举 private StatusEnum statusEnum; private Map<String, String> map; //Getter & Setter}构建办法 User user = DataUtil.build(User.class); ...

July 15, 2021 · 3 min · jiezi

关于测试工具:Burp的安装使用

工具运行须要 Java环境,请自行装置,此处不赘述。 获取 burpsuite 软件包后解压到指定目录, 解压实现后右击burp-loader-keygen.jar,以Java(TM) Platform SE binary的形式关上keygen点击run启动burpsuite如果上述形式没有胜利启动burpsuite,关上cmd,进入burp-loader-keygen.jar所在目录 。 执行命令: Java -Xbootclasspath/p:burp-loader-keygen-2020-2.jar -jar burpsuite_pro_v2020.2.jar将Keygen中License复制粘贴到burpsuite中而后点击Manual activation点击Copy request复制完后,将字符串粘贴到BurpSuite剩下的那个框里,如图,再点击Next显示激活胜利 ,点击Finish .而后点击 Next!再点击 Start Burp 进入 burpsuite主界面激活之后,不能通过双击BurpSuite主程序来启动,否则启动之后还是须要输出key,两个文件必须放在一个目录下 。须要应用启动脚本来启动 Bur

July 13, 2021 · 1 min · jiezi

关于测试工具:腾讯WeTest平台新功能上线-多维度助力产品质量提升

导语 随着数字化转型降级减速,企业对产品质量治理的需要增量不断扩大。一方面是更多行业畛域对软件测试服务的摸索实际,一方面是业界需要的继续迭代降级。在肯定水平上对产品品质服务提出了更高的规范要求。 作为行业当先的品质云服务厂商腾讯WeTest基于行业倒退改革,不仅对平台全线产品进行翻新降级,还推出了多项新性能服务,解决不同行业畛域日益多样化、复杂化的痛点需要,多维度助力产品质量晋升。 继续新陈代谢,紧随技术提高和市场变动,这也是腾讯WeTest的至强之道。 所有产品将于2021年6月18日随新平台正式上线,本期让咱们先将眼光聚焦在产品新个性上。 助推“新基建”减速,开释企业新动能 在产业数字化深刻的过程中,5G、人工智能、大数据等新技术正在为产业畛域带来新的价值空间。2020年,我国在新基建重点畛域投资规模约达1万亿元[1]。新基建既蕴含硬件设施也蕴含软件服务,软件作为企业数字化转型中必不可少的一环,其品质的高下往往会决定企业数字化转型的效率。 腾讯WeTest作为翻新的软件系统测试平台,是软件产品和信息系统品质的保障伎俩,同样也是数字化新基建过程中重要的助推力量。腾讯WeTest平台可能开释企业新动能,为用户带来更多价值。 不同于传统测试,腾讯WeTest平台具备三大劣势特点:一方面,腾讯WeTest平台提供上千台实在手机,节俭昂扬设施老本完满解决了挪动端碎片化问题;同时,自动化测试脚本大大缩短测试工夫,投入人力更少;此外,腾讯WeTest平台不受地区和工夫限度,企业可能在任何工夫地点提交测试工作,更符合企业降本增效的价值指标。 此次腾讯WeTest平台进行了全面降级,不仅从硬实力上晋升了技术能力,同时也在服务层面进一步欠缺,为产品品质晋升按下“减速键”。 在基础设施层面,腾讯WeTest平台对机房网络和手机供电模式进行一系列降级,让测试更加稳固。 在产品服务层面,近程真机调试和规范兼容测试两项服务进行了降级,真机调试提供了笼罩更全面的设施机型,更加高质清晰的画面,更为晦涩便捷的操作。规范兼容服务底层能力全面降级,反对游戏(基于深度学习模型)和利用(基于控件)的智能遍历,场景覆盖度相较原服务晋升约30%。 腾讯WeTest平台全新上线的自动化兼容测试,可能对测试全过程进行记录,提供全过程的截图、性能数据、剖析日志等数据,将测试后果全方位展现在报告中,帮助用户疾速定位产品问题。 随着新基建过程不断深入,腾讯WeTest平台将渗透到新基建数字化转型的多个畛域,涵盖金融、游戏、视频等多个产业和场景,为海内外泛滥行业提供业余服务。 新能力上线、旧计划降级 2020年的一场疫情让线上业务取得了迅速增长,同时也对金融、批发、电信畛域的IT零碎稳定性提出了更高的要求。除了硬件部署、网络通信、利用架构之外,更须要对平台零碎、服务器性能等进行管控和保障,这就须要通过包含全链路压测、容量压测与评估等伎俩找到性能瓶颈并取得无效解决方案。 新上线的WeTest压测巨匠作为全链路服务器性能测试平台,其具备百万级别并发能力,分布式压力源,灵便构建压测场景链路,一键查看性能指标、应用门槛低等特点。WeTest压测巨匠可能模仿电商、游戏中的海量实在业务场景,为企业提供全链路压测,迅速定位性能瓶颈,提供优化倡议计划。 新上线的UQM用户品质治理作为业余的游戏客户端性能和异样的监测剖析平台,针对游戏全生命周期的研发、经营、迭代等不同阶段,提供全方位的品质监测、数据分析、业务洞察服务。全面反对挪动端、pc端、主机端,反对极简接入Unity、Unreal等支流游戏引擎,借助深度的性能大数据分析,洞察定位实在玩家在体验过程中呈现的游戏解体、卡顿、发热、闪退、ANR等品质问题,为游戏企业项目组提供硬件数据统计分析,辅助决策后续游戏业务的研发方向,晋升游戏品质。 新上线的Perfdog Service是一套性能服务组件,无需侵入即可部署到本地/云真机,且主动适配多种利用类型和支流自动化框架,企业能够基于Service组件进行二次开发,进行自动化性能测试服务及云测试服务。 在传统的软件研发、版本迭代的过程中,企业须要投入大量的人力,来进行性能测试,老本很高不说,测试效率还很低。不仅如此,局部企业因为客户端测试能力有余,常常会呈现像iOS无奈性能测试、剖析;Android测试不精确、不稳固等理论测试问题。 WeTest的Perfdog Service性能组件,可能帮助企业灵便搭建本人的性能云平台,疾速构建本地性能监控、自动化云测服务、自定义WEB端数据看板等能力,为其提供核心技术反对和自动化性能解决方案。另外因为集成了多平台性能获取及技术能力,性能测试指标更业余深度,为企业疾速实现客户端性能测试。 随着数字货币、挪动领取等技术日趋场景化的遍及利用,还使得金融、批发等畛域放慢了向“线上服务”迈进的步调。各类小程序因强用户体验、低开发门槛和疾速上线迭代的个性,成为了泛滥行业重要的数字化工具。 小程序市场规模和用户数量持续增长,小程序破绽攻打、数据泄露、山寨仿冒等平安问题逐步增多,WeTest小程序平安服务应运而生。 基于多年平安业务实际,此次腾讯WeTest的小程序平安计划再降级,针对小程序不同业务场景提供包含小程序平安加固、小程序平安扫描的全方位平安解决方案,为客户小程序平安保驾护航。通过剖析仿冒程序,开掘危险破绽、爱护外围代码等办法爱护小程序业务平安、数据安全,升高客户业务危险和资金损失。越来越多小程序开发者深知,强化小程序原生平安能力,是推动小程序利用与倒退的必由之路,而WeTest小程序平安服务正是这条路上的“守护者”。 而针对手游方面,此次降级计划中,也包含了手游平安。WeTest提供了手游平安四大解决方案,连贯腾讯平安测试专家,多维度保障产品安全。 通过手游宕机破绽检测、浸透测试、反外挂、平安加固等定制服务,帮您主动发现服务器异样破绽、提前揭发游戏外挂危险,检测反对各种支流引擎的同时,深度爱护游戏资源文件,笼罩协定、内存、脚本等多维度平安,满足用户的游戏平安需要,晋升手游平安服务测试的品质和稳定性。 定制化解决方案,晋升行业竞争力 数字化转型的减速催生出许多新业态、新模式的倒退,如何做线上线下的数据交融以及利用大数据积淀驱动业务增长成为关注点。与此同时,许多企业曾经采纳了麻利、DevOps、云计算等用以应答疾速变动的需要。产品质量治理也同样须要更前沿的技术能力,匹配更简单的业务需要。 凭借腾讯WeTest多年行业教训及丰盛业务场景的积淀,腾讯WeTest推出了泛滥具备行业特色的解决方案。通过一直深入行业布局,进一步晋升产品质量治理服务在数字化转型中的价值性和有效性,让不同行业畛域的研发效力失去晋升。 测试核心技术私有化解决方案 公有云畛域,腾讯WeTest将腾讯测试技术六大外围能力私有化,针对金融、政府等行业客户因为平安及合规性要求而不能应用外网Saas服务的痛点,从新设计开发,并悉数通过了中国信通院DevOps解决方案(工具类)先进级评审,为客户提供业余的测试核心技术私有化解决方案。 智慧批发解决方案 智慧批发畛域,腾讯WeTest面向批发行业提供性能优化、平安防护等维度的全套批发品质解决方案,联合腾讯WeTest独具劣势的WeTest压测巨匠、WeTest小程序平安计划,可能无效解决传统批发品牌数字化、智能化转型过程中涌现的零碎性能瓶颈、虚伪营销流量、数据资产泄露等泛滥痛点。从外围痛点登程为宽广批发品牌提供小程序公布前至数据化经营过程中的全方位防护,为外围零碎稳固运行、业务流量无效转化保驾护航,助力品牌衰弱增长。 游戏全生命周期解决方案 游戏畛域,腾讯WeTest面向游戏行业提供了游戏性能剖析、异样剖析、网络监测等服务的一站式解决方案。针对游戏全生命周期所面临的性能品质问题提供从本地研发工具,到线上大数据分析,及定制化专家报告的全方位能力,精准解决影响游戏“不可用”到“不好用”的行业痛点。 腾讯WeTest推出的一体化解决方案可能解决用户上手老本高、难以间接产生业务价值的问题。通过行业化、场景化定制,使用户可能聚焦特定场景,在资源无限的状况下更高效地解决业务痛点,晋升行业竞争力。 高效项目管理,拓展研发效力 数字化转型过程中,我的项目经常会面临一直迭代的状况,我的项目开发治理必须具备稳定性和高效性。对内,我的项目团队应用交互是否便捷,操作体验是否高效将间接影响项目管理的效率和稳固;对外,如何跨部门、企业进行麻利的协同治理会越来越成为我的项目研发晋升效力的关键所在。 随着腾讯WeTest新性能和服务的日益丰盛,新版控制台迎来重大体验降级,让开发项目管理更加稳固、麻利、高效。 新版控制台以理论业务场景登程,帮忙用户疾速构建平安便捷的项目管理体系,通过灵便的权限管制轻松搞定跨部门、跨企业的团队合作。同时,平台提供多样化的测试工具,涵盖平安测试、兼容测试、云手机等多个方面,不便用户疾速获取并汇总我的项目产生的测试报告、问题汇总、数据统计等,实现轻松上手,疾速把握各我的项目数据分析、资源运维、额度应用、缺点状况等内容,无效升高项目风险。 ...

June 11, 2021 · 1 min · jiezi

关于测试工具:Linux下Arthas的简单使用

前言后面咱们就曾经说了Windows怎么应用Arthas了,那明天咱们就来聊一下在Linux下的Arthas的应用 一、筹备咱们同样也须要筹备一个java程序,启动之后不能进行的,那我就用的死循环程序,上面是一个死循环程序,始终输入a的值 public class test1 { public static void main(String[] args) { int a = 1; while (a==1){ System.out.println(a); } } }二、测试Linux下测试Linux下跟Windows下应用步骤差不多,只不过你须要启动的是jar包,你先把程序的jar包放到Arthas的目录下,应用FTP传输就能够了 没有FTP传输工具的,能够关注咱们公众号:全栈开发Dream , 回复2获取下载链接 上传实现后,应用命令启动这个jar包,比方我的是test.jar,那我放好之后,进入到jar包的目录,就应用以下命令行启动 java -jar test.jar而后让这个程序在这里运行不要敞开,咱们关上另外一个窗口,启动Arthas 进入Arthas的的目录,输出启动命令,命令如下 java -jar arthas-boot.jar同样的,抉择test后面的数字,启动Arthas 如果你想要检测其余的java程序的话,就输出程序名后面对应的数字 有时候可能会呈现端口被占用,那就须要换一个端口执行 java -jar arthas-boot.jar --telnet-port 9988 --http-port -1当然Linux也是能够用浏览器拜访arthas的,然而只能在内置的web,不能在里面的Windows浏览器拜访,要是用Windows的浏览器拜访链接是找不到的 三、执行咱们先执行一下help,呈现的命令跟Windows的是一样的 常用命令其实上一篇说的,Windows应用的命令在Linux这里也是能够应用的 清理命令是也是能够用的 Windows下是clear,Linux下是cls 1.dashborad仪表板输出dashborad之后,也会呈现仪表板的信息,来回顾一下 仪表板次要有三个局部,第一个是所有的线程状态,第二个是内存应用的状况,第三个是JVM的状态和Windows的信息 这些内容是会刷新的,可依据这些数据对这个程序以及java虚拟机进行监控,须要退出的话按q 或者Ctrl+c即可退出。 2.thread线程板输出这个命令之后,也会呈现一个线程板,这个跟上一篇的Windows的性能的差不多的,显示的是所有线程的状况 每个线程后面会有一个id,输出 thread +对应的id能够查看的该线程的一些信息 3.jad反编译这个命令是一个反编译的命令,能够把jar包反编译成代码展现在屏幕上,例如我的是test程序,然而我的类如同是test1,那我就输出jad test1,要是我输出jad test的话,他会说这个类没有找到,因为我的类名就是test1 个别的程序的话,就须要装置上面的步骤来输出 jad 包名.类名我输出jad test1之后,他就会把我这个类的文件反编译进去,显示在这里 ...

June 4, 2021 · 1 min · jiezi

关于测试工具:Gremlin-拥抱失败的混沌工程实践-IDCF

译者语:这是一篇Kim Harrison现场转播记录对于混沌工程与失败的主题演讲。该演讲是LaunchDarkly在旧金山组织的对于“失败”主题线下流动的一部分。演讲者Ana Medina[2]是供职于Gremlin公司的混沌工程师。其实中国今人早就参透了其中情理:失败乃胜利之母。我试图从Ana的演讲中分出了四个局部,她别离详尽探讨了爆炸半径,游戏日流动,星期四下线实际和on-call与培训四个局部。Gemlin在文化层面对于失败和混沌工程的思考是最近几年业界先进实际值得咱们认真学习。比照Netflix的ChAP博客文章,Ana的故事更贴近于咱们日常的工作,为咱们从各个角度实际混沌工程提供了参考。堪称是干货满满,请大家观赏。在生产环境进行测试又来了!五月份咱们在旧金山Microsoft Reactor举办了线下的团聚。这次流动次要聚焦于对于失败"的文化。特地地,咱们想凝听和学习"失败"文化(防止失败,从失败中复原,从失败中学习)是如何影响在生产环境中进行测试的。 Ana Medina, 本次的演讲嘉宾,现任Gremlin的混沌工程师。她讲述了如何施行混沌工程试验并且赞美了"失败"文化是如何帮忙工程师造成肌肉记忆,投入更多工夫开发性能和建设更具韧性的简单零碎的实际中起到的作用。 "咱们要试图更多地去建设这样的勇气:尝试承受失败终将产生的想法,也要你的组员承受失败并且可能庆贺失败的产生,并且可能意识到咱们可能从失败中学到很多货色" ——Ana Medina,Gremlin混沌工程师 主持人:好了,大家筹备好来点儿混沌了么?对此我十分兴奋。我很喜爱这个主题,混沌工程中的失败和混沌工程如何成为你胜利的要害。有请下一位演讲者,现任Gremlin的混沌工程师。Gremlin帮忙企业用户施行混沌工程从而防止了服务的生效和进行。Ana Medina曾供职于Uber,作为基础设施团队的SRE聚焦于混沌工程与计算,现供职于Gremlin。让咱们有请Ana。 Ana Medina:嗨!大家好!谢谢大家明天来捧场,也谢谢大家保持到最初一个演讲。十分冲动可能和大家分享一些对于失败和混沌工程的故事。 我是Ana Medina,我是来自Gremlin的混沌工程师。 Human are fallible "人类是易犯错的"易犯错的意思就是制作谬误或者犯错误。大家能够举手通知我是否有人已经犯过谬误呢?是的,是的,大家都会犯错,对吧? 我实际上想通知大家的是应用另一种形式对待问题。我想跟大家聊一聊建设和学习一种承受谬误的文化。我置信这种兼收并蓄的文化就是拥抱和注入失败,这也是我明天所要探讨的。 哲学家尼采说,"任何勇敢的人面对已知的危险也会不足勇气"。咱们要试图更多地去建设这样的勇气:尝试承受失败终将产生的想法,也要你的组员承受失败并且可能庆贺失败的产生,而且可能意识到咱们可能从失败中学到很多货色。 所以,咱们要做些什么事儿呢?好的,明天我将讲一讲混沌工程。在座的各位是否能够举手示意我,有多少人据说过混沌工程?酷!太棒了!很快乐据说大家曾经在生产环境的测试中探讨混沌工程了!它曾经流传开了! 那么让咱们再概括一下,什么是混沌工程呢?混沌工程是为了揭发咱们零碎的弱点而设计的,通过三思而行和详尽打算的试验。它不是仅仅试图于进行试验并心愿一切顺利;而是要进行三思而行和详尽打算的试验。 所以当共事们听到混沌工程的时候常常会像这样反馈:"等等!不!我不想让他人毁坏我的生产环境仅仅是因为他们能够。"或者是咱们当时没有做任何事儿就间接在周一向大家发表:"咱们明天要在生产环境进行混沌工程试验",而后共事们或者插入网线或者敞开服务器等等各种混沌的事儿。不,这不是混沌工程试验,它们既没有详尽打算也没有三思而行。 所以在Gremlin咱们把混沌工程类比于向你的零碎中注入疫苗使得其从无害入侵中取得免疫。也就是说这实际上要让你的工程师们当时就筹备好应答这些失败的场景。 爆炸半径什么是混沌工程的法令呢?首先从一个试验登程。而后思考它的爆炸半径并且进行上面的抉择,要么扩充试验爆炸半径并划定范畴,要么打断试验并且修复未被揭发的问题,并且再次进行反复试验。 所以如图所示,这就是咱们所说的爆炸半径。首先从一个十分十分小的初始测试开始,而后你能够看到混沌工程试验在扩充,再之后你兴许会看到混沌工程试验胜利了,正如咱们上文所形容的一样。这样的做法就好比,实际上你并不知道一个混沌工程试验会给你两个服务器带来什么样的影响,为什么你要在100%的资源上进行试验?所以你实际上须要从一个三思而行的方向登程,"我要从一个服务器开始,一个容器,就从一个服务开始。而后逐步地继续地扩充爆炸半径"。 这也意味着,兴许我还没有信念在咱们的生产环境上进行混沌工程试验。没问题,咱们能够从测试环境开始,从QA环境开始,在混沌工程试验成长到足够成熟之后,再于生产环境进行试验。 在咱们探讨爆炸半径时,另外一件须要咱们思考的事件是终止条件。是什么能够使得混沌工程试验停止下来呢?有一些实际包含了咱们的错误率升高,比方当我看到用户的错误率升高或者API调用的谬误频率增高,那么咱们就触发使得试验进行。或者当我的用户呈现了很多提早,比方咱们在一个iOS生产环境上运行敞开容器的混沌工程试验,当你看到先前只需几毫秒加载的图片须要五秒以上的工夫能力在用户的屏幕上呈现的时候,你可能实际上须要下一步的操作来进行这个试验了。 然而在探讨混沌工程的时候你还有一个事件须要思考,就是你的混沌工程平台自身须要一个大红按钮(a big red button)!这个性能意味着当你从监视器或观测零碎发现你的用户端受到了失败的混沌工程试验的影响,你有能力通过按下大红按钮来进行和复原所有。 可见正如我所说,当咱们施行混沌工程的时候,要三思而行和精心打算。咱们应用迷信的形式来达到这个指标。所有从一个假说(hypothesis)开始。比方咱们说:"如果我进行我的容器和Redis,我置信我的备用(Replica)Redis将会变成次要的(Primary)Redis。我不会蒙受数据失落的影响,我会持续享受良好的用户体验,所有都会安稳的运行,因为我有良好的Redis配置。" 让咱们持续,你持续上述假说施行了混沌工程试验(我在去年11月的AWS re:Invent上也探讨了这个例子)。咱们敞开了我的次要Redis容器,而后这下好了,我玩儿完了。因为我意识到我的开箱即用的Redis根本配置使得备份容器会观测次要Redis容器(以放弃同步)。当次要Redis被敞开而备用Redis容器看到一个空的次要Redis容器时候,备用Redis容器也清空了本人自身,并且被晋升为次要Redis容器。咱们失落了所有Redis中的数据! 当然了,如果你在生产环境施行了这个试验,那么数据的失落会给你的公司带来很大的经济损失,你的用户也会口碑载道。所以你不必要做这么极其的试验。那么你要思考的是首先在一个绝对平安的空间内施行混沌工程试验,这样实际上你能够验证配置的正确性,并且可能保障并通过监督工具和观测工具验证没有数据的失落,这也是工程师须要付出口头的中央。因而,当客户再也无法访问应用程序上的任何数据时,你实际上并不会发现他们真的不称心。 下一步,当你看到混沌工程试验胜利或者失败之后,你须要分享这些后果。你须要分享这些"失败"。你想通知你的共事们:"嗨,话说咱们上个月施行了一些混沌工程试验,而后咱们探测到应用程序没有正确的的配置,咱们要做上面这些步骤能够让咱们的应用程序更加有韧性,更加牢靠。" 这样来分享试验后果是十分要害的一个局部。 (Ana再次展现了上图)这还是爆炸半径的图,咱们把所有的货色都放在一起。首先咱们施行第一个初始的混沌工程试验。咱们剖析这些后果,咱们看到所有都很胜利,因而咱们拓展爆炸半径而后继续进行混沌工程试验。 游戏日当初我想聊一点儿对于"失败"的文化,聊一点儿我对待失败产生的认识,以及我三年来实际混沌工程的更多感触。我之前退出Uber的混沌工程小组并且学习了如何搭建外部的工具,还为它的运行值守。它给我了很多乐趣,我也从中学习到了很多。然而这个经验也使我意识到我想要退出一个帮忙其余企业进行混沌工程的公司。 接下来我要开始讲讲"游戏日"(Game Day)。在Gremlin,咱们被动的拥抱失败并且一直地通知咱们的用户也要如此。当然咱们通知用户要用Gremlin来做这件事。然而还有一件事儿,嗯,就是咱们做一个叫做"游戏日"的实际。简略来说咱们把一个团队叫到一起,探讨他们的架构图并且思考什么样的谬误和失败会产生。Gremlin实际上有一整捆如何进行游戏日的资源,他们放在一起包含了目录模板,可用的混堵工程试验模板,邮件模板等等。然而这个点子实际上是要大家在一起思考架构图,并且思考什么样的失败在什么中央会实际上产生。 这也是一个绝佳的机会回头来看事变产生后的回顾和思考,"嗨,咱们实际上在几个月前产生过一个事变,当初咱们想确定咱们曾经正确执行了应答措施。" 那么你就能够依照雷同的条件来施行混沌工程试验,从而满足你的事变产生后的回顾需要。 所以在Gremlin咱们实际上也是在这么做的。咱们在Gremlin上应用Gremlin。咱们明确的应用软件服务自我试用准则,咱们也想确定它真的是具备韧性的并且可能为咱们的员工展现其韧性。在两个月之前,咱们把游戏日的线路图放在一起,并且收集共事们的想法。"嗨,你想做混沌工程试验,然而并不需要晓得从哪里开始?" 这样咱们就写出了像SRE手册一样的游戏日线路图,并且也思考了用SRE心态构建事物的形式的层次结构。 第一个根底层面就是要确定你的监测和告警要正确的配置和建设。咱们当初曾经发表了博客,介绍了Gremlin施行游戏日来验证咱们的告警和监测零碎。咱们是上个月发表的,揭示了一大堆干货。咱们曾经可能从咱们的监测工具Datadog中学到很多货色了。上周五咱们刚刚在生产环境进行了游戏日。咱们试图去验证生产环境的监测零碎正确的运行。并且试图去答复共事们是从手册中寻找解决步骤还是真的从试验中失去启发而去解决问题。咱们很快乐有这样的互动。游戏日给咱们带来的体验是可能把任何人汇集在一起。所以当我通知他人他们想要把混沌工程带到他们的公司,实际上是在通知他们:"嗨,带上一些实习生,中等水平的工程师和你的架构师们,这样你能够分享常识,并且可能一起学习,查看最终的决定,最初咱们就能为公司带来胜利。" 星期四下架另外一个咱们一直拥抱失败并且可能施行一些混沌工程试验的事件叫做"星期四下架"(Takedown Thursdays)。乏味的是,咱们之前把它叫做"星期五宕机"(Failure Fridays),然而随着公司的发展壮大,咱们意识到在周五早晨进行混沌工程试验真的变得越来越艰难了。咱们有默认的近程工作模式,于是在东海岸的员工在周五就须要加班,于是为了他们咱们就变成了"星期四下架"。咱们在这天实际上会做一些新性能的公布,或者各种新的尝试。于是大家就聚到一起,次要是产品的工程师,他们会思考各种不同的破坏产品的办法。所以你不仅仅是在应用这个产品利用,咱们还在后端进行混沌工程试验,包含了底层的测试或者宽泛意义上的应答高负载的事件。 我还要探讨一个的话题,应用混沌工程进行断路失败预先的重现能促成和进步"失败"文化。这也正是咱们说的关注事变后的回顾并且再次思考。"嗨,我想确定工程师们染指并且修复了那些被标记和未被标记的基本问题。" 那些条件最终造成了混沌工程试验,这样你就可能应用这些行为再次进行验证。 在这部分"失败"的文化中,咱们有好多人曾经把零碎事变的预先回顾和查看分享进来,分享给更大的平台,咱们也从中学习到了很多货色。你能够去GitHub中搜寻,那里曾经有一大堆公开的事变的回顾和探讨。你更能够从中发现乏味的行为,兴许有些正是你想在你的基础设施中,你的应用程序中,你的服务中施行的,通过这些条件你就能够造成混沌工程试验的配置。通过这样的形式你就能够思考,"嘿,大家在分享他们对于失败的想法,让咱们看看他们实际上是否能够利用在我的场景中"。 On-Call和培训下一个实际,在随时待命值班(On-call)的培训中应用混沌工程。好了,大家是否在随时待命交接班的时候仅仅被丢过去一张纸,"嗨,轮到你了,干活吧!" 兴许还有一本手册。这就是我实际上经验的事儿。我入职公司第三周的时候,没有任何生产环境(的教训)也没有任何零碎的常识,而后在我值班的第二周凌晨三点咱们的生产环境产生了宕机。浏览那本手册真的是太可怕了。我还是主任值班人,凌晨三点的时候,你能设想到我(相当解体)。公司并没有可能向上降级汇报的必要文化。 所以我过后吓坏了,我就想"好了,我晓得咱们有这本手册,咱们有所有的这些仪表板。" 我过来看着他们,并且执行了手册上形容的必要步骤。然而我非常的胆怯。我过后想的是"噢,兴许我今天进了公司发现自己就被开了"。总体的感触一点也不好。蹩脚的是那本手册如同是180年前的一样,所以在值班时候有一本古老的手册事件就变得更蹩脚了。当初回想起来我更心愿我值班时候会有一些对于怎么在心理上如何解决焦虑的培训,让我可能凝视着咱们的仪表板的同时更快节奏地输出命令,可能通知共事我正在服务器上执行什么。 所以设想一下,无论是你的轮岗实习生,你将要公布新性能到生产环境的新入职的工程师,咱们要把他们叫到一起来通过施行混沌工程试验的形式来进行培训。这是一个绝好的形式让大家一起学习过往的失败教训或者让大家思考新的可能产生的失败场景。 让咱们概括一下,失败是能够承受的事件。我想让大家一起体验失败并从中一起学习。当咱们了解了人类必然犯错便会拥抱谬误,这样兼容并包的文化就能发明出一个环境。 Gremlin几个月前公布了收费产品。大家能够拜访Gremlin.com注册并且体验混沌工程试验,只须要五分钟。咱们有两个混沌工程试验能够施行在你的基础设施上,关闭系统,敞开容器和占满CPU使用率。这是一个很好的可能理论验证你的K8S环境是否真正牢靠的办法,看他是否实在反馈容器的空间,或者你的监督和告警正确配置,或者在CPU负载增高时弹性扩容是否能正确工作。 问答环节观众1:大部分运维人员都晓得零碎哪里哪些局部是重大损坏的,他们也曾经给出了很多优先级,比方"这里须要修复"。那么你是怎么从把零碎破坏的更重大和医治这个零碎中调配和安顿工夫的呢?你是怎么可能花工夫去破坏他们,与此同时你还曾经晓得有些破坏的中央曾经开始被修复了? Ana:是的,我感觉这个例子更像这样。"咱们曾经足够凌乱了,咱们不想要零碎外面更多的凌乱了。咱们为什么还要成心地做这个事件呢?" 所以项目经理是如何了解韧性的重要水平有时候非常要害。咱们的做法之一就是实际游戏日。咱们有时候会有公司的销售人员安顿三个小时后的工夫来一起体验毁坏。这个既能够在开发环境也能够在生产环境。然而这个最重要的是始终拥抱失败去揭发失败并且探讨"这些P0的Jira工作到底是什么?" Gremlin应答这个的做法是这样的。咱们的工程师值班轮岗时候,并不会负责为他本周的以后我的项目值班。你会在另一个我的项目的Jira中工作,解决一些值班时候的事件,某些会变成影响韧性的事件,或者某些高优先级真正影响客户的事件。 ...

May 24, 2021 · 1 min · jiezi

关于测试工具:Linux下Arthas的安装和卸载

对于Arthas的简介在《Windows下Arthas的装置和卸载》这篇文章写过了,就不反复了间接进入正题装置步骤其实跟Windows下装置是差不多的,也是下载Arthas的jar包,启动jar包来装置Arthas 办法一,在线装置1.登录服务器这个就不多说了,应用服务器的这是基本操作,应用root身份登录服务器 2.进入装置目录进入你想寄存Arthas的jar包的门路,同样的,如果没有就新建,有的话就间接进入,ls命令是显示当前目录下的所有文件夹,能够查看Arthas文件夹有没有创立胜利 这里有一个疾速创立文件夹的命令提供给大家应用,比方我想创立一个叫Arthas的文件夹来寄存这个jar包就用以下命令 mkdir arthas //创立一个叫arthas的文件夹cd arthas //进入arthas文件夹注:曾经创立好文件夹的能够间接应用第二条命令行进入目录,cd 你的文件夹名。如果还没创立文件夹的,须要先用第一行的mkdir 你的文件夹名,先创立文件夹,而后cd 你的文件夹名,进入文件夹目录 3.下载jar包进入目录之后,应用以下命令开始下载jar包,呈现相似如图所示的样子就是下载实现了 curl -O https://arthas.aliyun.com/arthas-boot.jar 输出ls命令查看以后的目录下有一个arthas-boot的jar包 4.启动arthas-boot.jar包下载实现之后,应用以下命令就能够启动jar包了 java -jar arthas-boot.jar输出这段命令之后,启动了jar包,跟Windows下的启动一样,如果没有java过程启动,也是会呈现这样的谬误, 跟Windows的一样,这是因为启动的这个jar包,会自动检测启动的java过程,要是呈现了这个,阐明你没有开启任何java过程,所以检测不到 那怎么办呢?我总不可能像Windows零碎一样关上个IDEA就行吧?这里你启动一个不会退出的java过程即可,比如说Tomcat,因为我的服务器没装置Tomcat,就借用一张他人的截图了,进入Tomcat的目录启动Tomcat 再回来jar包的装置目录,输出刚刚的命令启动这个jar包,就会呈现过程了,抉择一个选项,比方这里输出1而后回车,就会开始下载arthas并装置了,下载实现了之后呈现的内容跟Windows下装置是一样的 这里能够输出quit来退出Arthas的输出,返回到Linux的输出 与Windows零碎的有一点不同的是,生成的.arthas是暗藏的,间接应用ls查看目录的话,是无奈查看的,须要查看相干目录的话,能够应用ls -a查看这个目录,就会看到跟Windows一样会有的.arthas和logs两个文件夹 办法二,离线装置间接下载好zip包,放到一个目录,解压即可 能够在官网文档给的门路下载 链接:https://arthas.aliyun.com/doc/ 嫌麻烦的,能够应用我提供的百度云链接下载,永恒可用! 链接:https://pan.baidu.com/s/1UjgS... 提取码:1y9p 下载好之后,要通过ftp来上传到Linux的任意目录,进入该目录,而后应用命令解压即可 解压的命令如下 unzip -d 解压的目标目录 解压的文件名卸载arthasLinux下卸载也很简略,因为这个Arthas是绿色软件,删除了装置目录和日志目录就能够了,更Windows下卸载相似,删除 .arthas 和logs这两个文件夹即可,进入.arthas和logs的目录,输出命令删除就能够了,非常简单 1首先进入到这个目录,输出ls -a命令看到这两个文件夹 而后离开输出以下两条命令删除两个文件夹rm -rf .arthasrm -rf logs如果没有进入这个目录,间接输出以下命令行也是能够删除的rm -rf ~/.arthas/rm -rf ~/logs/arthas

May 22, 2021 · 1 min · jiezi

关于测试工具:Windows下Arthas的安装和卸载

什么是Arthas?首先Arthas 是Alibaba开源的Java诊断工具。 依据阿里巴巴官网文档能够晓得,Arthas能够解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相干的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无奈在线上 debug,难道只能通过加日志再从新公布吗?线上遇到某个用户的数据处理有问题,但线上同样无奈 debug,线下无奈重现!是否有一个全局视角来查看零碎的运行状况?有什么方法能够监控到JVM的实时运行状态?怎么疾速定位利用的热点,生成火焰图? 好的,那这么弱小的工具应该怎么装置呢 Arthas装置步骤首先咱们应该先创立一个文件夹来寄存Arthas的jar包,装置Arthas举荐应用arthas-boot 办法一、在线装置1.关上命令行按win+R,启动下图的运行程序,输出cmd(不辨别大小写) 2.进入装置目录先进入装置目录,命令关上之后是一个如图的小黑框,有点像linux零碎的命令框 默认的目录是在c盘的用户名的目录,之前如果创立的了目录或者想要把jar包放在其余盘的,就应用盘名+英文的冒号进入其余盘的主目录,比方我想装置在D盘,那就输出D:,进入到D盘,右边会显示D:\>,示意胜利进入D盘的目录了,进入了想要放jar的目录之后,如果之前创立了文件夹来放jar包,那就间接进入文件夹即可,如果没有创立好,那也能够先创立在进入文件夹,这里有一个疾速创立文件夹的命令提供给大家应用,比方我想创立一个叫arthas的文件夹来寄存这个jar包就用以下命令 md arthas //创立一个叫arthas的文件夹cd arthas //进入arthas文件夹注:曾经创立好文件夹的能够间接应用第二条命令行进入目录,cd 你的文件夹名。如果还没创立文件夹的,须要先用第一行的md 你的文件夹名,先创立文件夹,而后cd 你的文件夹名,进入文件夹目录 3.下载jar包进入目录之后,就能够开始下载jar包啦,应用以下命令开始下载jar包,呈现相似如图所示的样子就是下载实现了 curl -O https://arthas.aliyun.com/arthas-boot.jar输出dir命令查看jar包的能够查看装置详情 4.启动arthas-boot.jar包下载实现之后,小伙伴是不是就焦急启动啦,应用以下命令就能够启动了哦 java -jar arthas-boot.jar输出这段命令之后,启动了呈现这段货色是什么意思呢 其实啊,这是因为启动的这个jar包,会自动检测启动的java过程,要是呈现了这个,阐明你没有开启任何java过程,所以检测不到 那怎么办呢?简略,我关上个IDEA(关上即可,不须要运行任何java文件都能够) 再回来进行输出刚刚的命令启动这个jar包,就会呈现过程了能够看到呈现了几个选项,那我轻易选一个吧,我选第一个,输出1 ,而后输出回车,个别第一次的话会须要下载安装包,会主动进行下载并且启动,如下图,会显示一个门路,这是Arthas的装置门路(后面下载的是jar包,这个才算是Arthas)启动之后最上面会呈现一个有点像Linux的命令输出界面,在这里就能够输出Arthas的命令了,输出quit能够退出这个Arthas的输出,返回到Windows文件操作命令输出 在C盘的用户名的目录下,会有.arthas和log两个文件夹,这是Arthas的装置目录 办法二、离线装置间接下载好zip包,放到一个目录,解压即可 能够在官网文档给的门路下载 链接:https://arthas.aliyun.com/doc/ 嫌麻烦的,能够应用我提供的百度云链接下载,永恒可用! 链接:https://pan.baidu.com/s/1UjgS... 提取码:1y9p 下载好之后,进入到的任意目录,而后解压即可 卸载Arthas卸载也很简略,因为这个Arthas是绿色软件,删除了装置目录和日志目录就能够了,即须要删除 .arthas 和logs这两个文件夹即可,进入到这两个文件的目录,C盘——用户——(用户名)目录,抉择.arthas 和logs这两个文件夹,间接右键删除就能够了,非常简单

May 21, 2021 · 1 min · jiezi

关于测试工具:如何测试报表系统

随着大数据分析的风行,测试人员越来越多的须要接触到各类不同的报表,如何测试报表中相干数据的有效性和正确性成为了难点。 报表波及的测试点很多,比方上下游数据的比对、权限、性能、平安、接口、内容展现等等,且因为报表是用户最关怀最罕用的模块,所以如何保障报表的测试品质就显得尤为重要了。 报表测试次要分为:报表界面测试、报表安全性、报表准确性、报表展现速度(也就是性能)。从重点开始,数据准确性测试,带有报表测试的零碎分为两类,一类是业务零碎中,带有统计分析功能模块,该模块中蕴含剖析报表,这个零碎的主体是业务零碎,报表是为办理业务的而提供帮忙的。比如说,应年检统计报表,某月应交罚款车辆统计报表,这样的报表数据精确与否,可通过减少、删减、批改相干业务或相干业务的参数,查看统计报表数据变动,检查数据准确性。另一类是零碎只有统计性能,就是数据仓库展示这类,它与业务零碎拆散,并且通过多层解决,比方数据仓库的数据,通过抽取,荡涤,展示前会通过数据挖掘,数据再解决,有些字段在原始数据表中基本就没有。这样的数据准确性测试比较复杂,当然查看出数据谬误,批改定位也是很不容易的。 针对报表测试,个别状况下,咱们须要本人筹备数据,来验证报表统计的准确性。因为零碎的形成不一样,简略把报表测试过程合成为两个档次:数据收集汇总、数据统计展。 在做数据收集汇总验证时,咱们须要理解数据从哪里来,如何汇总,数据入库的规定是什么,如何寄存,在什么工夫点进行汇总。把这些问题弄清楚了,才能够针对性的做测试策略,来验证数据入库的准确性。这步很重要,因为这个是报表测试的数据起源,如果这里的数据出错,前面的所有都没有意义。 针对数据统计展示,咱们须要理解页面上展示的数据来源于库中的哪些表哪些字段,依据什么样的规定来统计。把所有须要展示的数据集对应分明,这样能力无效的进行数据筹备,验证前端的统计、展示是否有问题。 在理论的测试过程中,以上两个档次不要集中在一起去验证,免得链路过长,不好定位问题,最好离开来验证(能够由不同的人员并行测试),同时,在测试过程中,肯定要保证数据的可控制性!!!在开发设计之初,咱们就须要评估相干的测试数据制作工夫,进行有针对性的筹备。实现数据筹备后,最好可能备份,以便在测试过程中随时还原数据,重现或者验证BUG。 1.1 数据汇总测试策略 测试项目:数据起源 测试要点:1.数据从哪些零碎中的收集2.通过什么形式进行收集(定时工作\接口筛选\数据库同步) 测试项目:数据入库 测试要点:1.数据源库与指标库的对应关系2.理解相干库的基本操作(MYSQL\HADOOP) 测试项目:数据验证 测试要点:1.明确数据入库的工夫分片(按日?月?年?时?分)2.核查两边的数据,能够抽样验证,重点关注临界的数据 1.2 测试数据筹备 测试项目:原始数据 测试要点:1.理解原始库的库表构造\数据分类2.理解本次报表展示的边界规定,对应的筹备测试数据3.通过肯定的伎俩生成数据并固定测试数据 测试项目:展示数据 测试要点:1.数据笼罩所有分类2.数据量须要足够多3.须要蕴含所有边界值(联合展示时的查问条件)4.数据中须要蕴含大量的非法数据,验证零碎的容错性 测试项目:数据生成形式 测试要点:1. 存储过程2. 第三方工具3. 通过业务生居数据(并不举荐)4. 相干业务接口生成数据 1.3 页面数据展示测试 测试项目:数据的起源 测试要点: 来源于哪张表,哪个字段 数据库中的数值与界面数据的对应.如数据库中性别的数据可能是0或1,但界面显示为男或女,这个对应关系是否正确. 测试项目:数据的范畴 测试要点: 是否只显示了报表设置的对应范畴 特地要留神边界数据,要分明报表的需要,是否须要过滤掉被抉择的数据.如工夫抉择为2006-9-27~2007-9-27,那么是否应该蕴含9-27这天. 测试项目:数据的对应关系 测试要点: 数据库中的字段是否与报表中的信息对应 测试项目:数据的格局 测试要点: 小数位,千位符,四舍五入等是否与报表设置统一 单位或税率转换是否正确 组合显示的数据是否正当 测试项目:数据的排序 测试要点: 排序形式是否与报表设置统一(如果没有设置,是否有一个清晰的默认排序形式,如按字母或数字排序) 测试项目:数据准确性 测试要点: 对于各种分类统计,首先验证数据总量是否统一,其次验证各类数据的总和是否统一,特地留神四舍五入对数据的影响 所登录的用户是否能查看到全量的数据,还是局部数据,局部数据的统计是否正确 测试这一部分内容须要对业务逻辑相当相熟,对数据库的设计也要十分理解.必要时能够通过本人写查问语句查看数据.有些报表的条件有多有少,但测试方法都是一样.依据条件通过等价类划分和排列组合设置各种条件组合.千万不要自觉的测试,否则会导致该测的没测,多余的测试做了一堆..一般来说有类别划分的(个别界面体现为下拉框),每个类别都要测试到,如性别中的男,女都要测试.输出的能够用等价类来划分要测试的数据. 1.4 页面UI测试 测试项目:报表的整体格调 测试要点: 报表是否符合规定的或用户设置的格局 测试项目:报表题目 测试要点: 报表的题目是否是正确的报表名称 如报表中有嵌入的数据(会追随用户的抉择而变动的).须要检查数据是否正确,如XX企业9月份财务报表,这个9月就是用户抉择的;或者XX公司2006-9-27~2007-9-27的网站访问量,这个时间段也是用户抉择的. 测试项目:报表的页首与页尾 测试要点: 是否采纳了统一的规定. 测试项目:分页 测试要点: 当输入的内容多时,分页是否正确. 翻页性能是否正确 ...

April 30, 2021 · 1 min · jiezi

关于测试工具:Cypress-修复测试时Chromium会自动Crash的问题

报错日志在 Jenkins CI,全量运行Cypress全量测试用例,可能会呈现以下报错。 We detected that the Chromium Renderer process just crashed.This is the equivalent to seeing the 'sad face' when Chrome dies.This can happen for a number of different reasons:- You wrote an endless loop and you must fix your own code- There is a memory leak in Cypress (unlikely but possible)- You are running Docker (there is an easy fix for this: see link below)- You are running lots of tests on a memory intense application- You are running in a memory starved VM environment- There are problems with your GPU / GPU drivers- There are browser bugs in ChromiumYou can learn more including how to fix Docker here:https://on.cypress.io/renderer-process-crashedCypress的报错信息很具体,曾经剖析出该谬误的大略的几个起因。 ...

March 16, 2021 · 1 min · jiezi

关于测试工具:JMeter-简介及安装说明

最近须要进行一组性能测试,用到了 JMeter 这个测试工具,简略记录下对它的理解以及装置过程。JMeter 简介 全名为 Apache JMeter JMeter 是一个软件,使负载测试或业绩为导向的业务(性能)测试不同的协定或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最后开发的。它次要对 Apache JServ(当初称为如 Apache Tomcat 我的项目)的性能进行测试。Apache 起初从新设计 JMeter 加强的图形用户界面和增加功能测试能力。 JMeter 的作用Apache JMeter 是100%纯 JAVA 桌面应用程序,被设计为用于测试客户端/服务端构造的软件(例如 web 应用程序)。JMeter 能够用来测试动态和动静资源的性能,例如:动态文件,Java Servlet,CGI Scripts,Java Object,数据库和 FTP 服务器等等。JMeter 可用于模仿大量负载来测试一台服务器,网络或者对象的健壮性或者剖析不同负载下的整体性能。 同时,JMeter 能够帮忙你对你的应用程序进行回归测试。通过你创立的测试脚本和 assertions 来验证你的程序返回了所期待的值。为了更高的适应性,JMeter 容许调用二次开发的 jar 包来丰盛你的测试场景;JMeter 容许你应用正则表达式来创立这些 assertions. JMeter 的应用范畴JMeter 是一个具备图形界面,应用 Swing 图形 API 的 Java 桌面应用程序,因而能够运行在任何环境/工作站承受一个 Java 虚拟机,例如:在 Windows,Linux,MAC等。 JMeter 反对的协定web —— HTTP,HTTPS 站点的 Web1.0的Web 2.0 (ajax, flex and flex-ws-amf)Web Services: —— SOAP / XML-RPC通过 JDBC 驱动程序的数据库目录: —— LDAP通过 JMS 面向音讯的服务Service: —— POP3, IMAP, SMTPFTP 服务JMeter 的特点以下是一些 JMeter 的特点: ...

February 26, 2021 · 2 min · jiezi

关于测试工具:Web测试和App测试区别

一、测试的流程WEB测试和app利用测试从流程上来说,没有区别。都须要经验测试计划计划,用例设计,测试执行,缺点治理,测试报告等相干流动。从技术上来说,WEB测试和APP测试其测试类型也根本类似,都须要进行功能测试,性能测试,安全性测试,GUI测试等测试类型。 二、web测试和app测试具体区别1、兼容性测试的区别 在WEB端是兼容浏览器,在利用端兼容的是手机设施而且绝对应的兼容性测试工具也不雷同,WEB因为是测试兼容浏览器,所以须要应用不同的浏览器进行兼容性测试(常见的是兼容IE6,IE8,铬,火狐)如果是手机端,那么就须要兼容不同品牌,不同分辨率,不同的Android版本甚至不同操作系统的兼容。 2、app还须要手机设施的专项测试 如穿插事件测试,操作类型测试,网络测试(弱网测试,网络切换) 穿插事件测试:就是在操作某个软件的时候,来电话,来短信,电量有余提醒等内部事件。 操作类型测试:如横屏测试,测试手势 网络测试:。蕴含弱网和网络切换测试须要测试弱网所造成的用户体验,重点要思考回退和刷新是否会造成二次提交弱网络的模仿,据说能够用360wifi实现设置 3、系统结构层面的不同 WEB测试只有更新了服务器端,客户端就会同步会更新。而且客户端是能够保障每一个用户的客户端完全一致的。然而APP端是不可能保障完全一致的,除非用户更新客户端如果是APP下批改了服务器端,意味着客户端用户所应用的外围版本都须要进行回归测试一遍。 还有降级测试:降级测试的揭示机制,降级勾销是否会影响原有性能的应用,降级后用户数据是否被革除了 三、web接口测试和app接口测试的区别web接口测试和app接口测试的次要区别点在于header的不同 web接口测试header头部user-agent发送的是浏览器的申请信息 app接口测试header头部user-agent发送的事手机的申请信息,Android和ios的user-agent发送的还不一样,如图: Android的user-agent请格局为:Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) Chrome/57.0.2987.132 Mobile Safari/537.36 iOS的user-agent申请格局为:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 接口测试工具:apipost 下载地址:https://www.apipost.cn

December 18, 2020 · 1 min · jiezi

关于测试工具:app测试和app接口测试要点详解

一、app测试要点1.装置、卸载:测试app是否失常装置或者卸载 2.app降级:本地降级,在线降级,原数据是否失常 3.功能性 不同平台一致性 4稳定性 零碎交互,低电量,蓝牙耳机 5.权限 6.失常场景 基本功能 7.异样场景 无电,无网 8.性能 CPU不能超过10% 9.易用性 10.设施性 11.电量,流量 12.Monkey 压力测试 13.安全性 二、app接口测试要点1.业务功能测试:失常场景、异样场景 2.边界值测试:a业务规定边界剖析、b输入输出参数边界值剖析 3.参数组合测试 4.异常情况测试 5.性能测试 6.平安测试 三、测试工具1.接口测试和接口文档生成工具:apipost 工具下载地址:https://www.apipost.cn 2.接口测试和接口性能测试工具:jmeter 3.抓包工具:fiddler

December 16, 2020 · 1 min · jiezi

关于测试工具:接口测试的目的和用例编写

一、为什么要做接口测试因为现在的零碎复杂度一直回升,传统的测试方法老本急剧减少且测试效率大幅降落,所以就要做接口测试。同时,接口测试绝对容易实现自动化继续集成,且绝对UI自动化也比较稳定,能够缩小人工回归测试人力老本与工夫,缩短测试周期,反对后端疾速发版需要。接口继续集成是为什么能低成本高收益的本源。当初很多零碎前后端架构是拆散的,从平安层面来说,只依赖前端进行限度曾经齐全不能满足零碎的平安要求(绕过后面切实太容易), 须要后端同样进行管制,在这种状况下就须要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是须要验证的,特地是波及到用户的隐衷信息,如身份证,银行卡等。 接口测试的目标是测试接口,尤其是那些与零碎相关联的内部接口,测试的重点是要检查数据的替换,传递和管制治理过程,还包含解决的次数。内部接口测试个别是作为零碎测试来对待的。 二、如何做接口测试能够通过接口测试工具来对接口进行测试 接口测试工具有:apipost、jmeter等 在开始做接口测试之前,有必要理解一下接口的分类。这里的分类,次要是HTTP申请办法分类。上面有很多种分类,咱们最常见的有GET/POST/PUT/DELETE四种办法,工作中接口最多是GET和POST办法。 三、接口测试的意义1. 更早的发现问题 随着麻利测试的流行,咱们都晓得测试工作要尽早的染指到我的项目开发周期中,因为越早的发现 bug,修复的老本就越低。 然而功能测试个别都要等到零碎提供可测试的 UI 界面后能力进行,单元测试又要求较高的专业性和人力老本,所以抉择接口测试来更早的染指测试。 接口测试能够在性能界面未开发进去之前对系统的接口进行测试,从而更早的发现总是并以更低的老本修复问题。 2. 缩短产品周期 接口测试更早的染指,能够更早的发现并解决 bug,从而使得留到前期功能测试阶段的 bug 数量缩小,最终缩短整个我的项目的上线工夫,有助于实现麻利测试。 3. 发现更底层的问题 零碎中的有些 bug 如果想通过 UI 层功能测试会比拟艰难,或者结构测试数据和测试条件非常复杂,而通过接口测试能够更简略、更全面的笼罩到底层的代码逻辑,从而发现一些暗藏 bug。 尤其是一些异样的、极其的状况,能够用接口测试很容易的验证。 四、接口测试用例设计首先,明确出发点。和所有的测试一样,接口测试出发点是你要证实所测的程序是谬误的。以这个出发点为导向,你的设计行为就会尽量朝这个方向倒退,更易发现问题,不会呈现大方向的偏差。 其次,抉择好测试对象。对于一个零碎做接口测试抉择好的测试对象是接口测试要害。一个零碎有有数的接口,每个接口如果别离测试,那将是很苦楚的一件事件,不光繁琐节约,而且任何一个外部接口的变动,都将导致咱们用例的不可用。这里举荐把整个零碎作为一个整体,抉择整个零碎提供给内部应用、交互的最外层接口作为你的测试对象,以此为测试对象的用例将有很好的健壮性,并且更高效。另外,依据数据的流向,又可将这些最外层的接口分为两类:一类是数据进入零碎的接口;一类是数据流出零碎的接口。进入零碎的接口理论是咱们用例的执行调用的接口。可通过变动参数对这些接口进行调用,模仿内部的应用;而流出的接口则是咱们用例真正该验证的点。数据从哪里流出,流出时的状态如何,此时零碎又是什么状态都是咱们所应该验证的。 而后,确认残缺的测试对象的性能:确认内部接口提供给应用这些接口的内部用户什么样的性能,内部用户真正须要什么样的性能。此两个性能肯定要精确具体,用例的设计要严格依照测试对象功能设计才是正确的用例。 最初当出发点、对象、性能都确定了,就能够真正设计用例了。上面具体介绍下如何去设计一个构造好、可读性高、渗透性强的接口测试用例。 接口测试用例设计和其余测试用例设计一样,都应该本着尽可能的发现bug的指标。用例设计的内容应该包含:次要测试性能点、测试环境、测试数据、执行操作以及预期后果。 1)接口测试环境分为两种:一种是程序外部的环境;一种是程序的所调用内部接口的环境。用例在设计环境上有一个准则即:设计实在而危险的环境,不漠视偶发环境。实在,即你的用例在测试某种性能时,应该去思考这种状况产生时外部、外部环境是什么,通过各种伎俩将最精确的环境模拟进去。危险,即在这种环境下零碎出问题的概率会很大。在设计用例环境时,如果两种环境都能达到你本用例的要求,更举荐抉择更危险的环境。所谓偶发,即这种环境呈现的概率很小。不要因为这种环境很少呈现就忽视它,开发很可能也是这种想法,此处很有可能暗藏着问题。 2)接口测试测试数据分为接口参数数据和用例执行所需零碎数据。数据的设计学识大,不要在设计、筹备测试用例的数据上偷懒。要通过好的测试数据应用例查错的性能充分发挥。接口参数数据需对每个参数依据测试接口的理论的性能进行剖析,在合乎业务逻辑的状况下进行逻辑组合排列,不要脱漏了某些边界值和谬误点的数据。每个用例执行所需零碎数据和接口参数数据尽可能的采纳不一样的数据,应用例更容易发现问题。 3)测试性能点,如果一个接口性能简单时举荐对接口用例进行构造划分,这样子用例具备更好的可读性和维护性。接口划分准则为以接口提供的性能点的不同进行适合粒度的划分。同一性能点的用例又可依据测试环境的不同、数据的不同进行用例的填充。 4)接口测试用例执行操作非常简单,就是所测接口的调用。 5)预期后果验证,这也是接口用例设计的很要害的一步,应该细而不冗余。所谓细,用例中应具体列出应该验证的点。每个用例均需验证,不要因为前几个用例有验证就认为全副是正确的。防止一个用例中反复做雷同的验证,进步测试用例的效率。

December 9, 2020 · 1 min · jiezi

关于测试工具:JavaMock简化单元测试

单元测试目标维基百科对单元测试的定义:单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性测验的测试工作。程序单元是利用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是办法,包含基类(超类)、抽象类、或者派生类(子类)中的办法。单元测试的指标是隔离程序部件并证实这些单个部件是正确的。画外音:单元测试是比拟细粒度的测试,是对接口、办法、函数的测试,目标是保障代码依照正确的形式去执行,进步代码品质。单元测试施行准则Mock脱离数据库 + 不启动Spring + 优化测试速度 + 不引入我的项目组件 单元测试不应该依赖数据,依赖内部服务或组件等,会对其余数据产生影响的状况。启动Spring容器,个别比较慢,可能会启动音讯监听生产音讯,定时工作的执行等,对数据产生影响。 Mock测试就是在测试过程中,对那些以后测试不关怀的,不容易构建的对象,用一个虚构对象来代替测试的情景。 说白了:就是解耦(虚拟化)要测试的指标办法中调用的其它办法,例如:Service的办法调用Mapper类的办法,这时候就要把Mapper类Mock掉(产生一个虚构对象),这样咱们能够自在的管制这个Mapper类中的办法,让它们返回想要的后果、抛出指定异样、验证办法的调用次数等等。 缩小单元测试对外部的依赖和副作用,进步单元测试效率 不应用 @Autowired,@Resource, 须要启动 Spring 容器,测试速度慢,会产生副作用;不应用 @SpringBootTest,@SpringBootTest(classes = Application.class), 这会启动整个 SpringBoot 服务不应调用数据库,除非是做数据库操作相干的测试,尽管可配置事务回滚,但大多数状况下还是会产生脏数据等问题应用Assert断言,用于判断某个特定条件下某个办法的行为,为了证实某段代码的执行后果和冀望的统一画外音:单元测试应小而轻,提交测试效率,较少对外部的依赖,比方数据库、Spring容器、网络服务等,而只关怀咱们本人的代码,通过Mock来解决对外部的依赖Mockito的应用根本应用应用静态方法 mock()应用注解 @Mock 标注如果应用@Mock注解, 必须去触发所标注对象的创立. 能够应用 MockitoRule来实现. 它调用了静态方法MockitoAnnotations.initMocks(this) 去初始化这个被注解标注的字段.或者也能够应用@RunWith(MockitoJUnitRunner.class). “when thenReturn”和”when thenThrow”模仿对象能够依据传入办法中的参数来返回不同的值, when(….).thenReturn(….)办法是用来依据特定的参数来返回特定的值. 咱们也能够应用像 anyString 或者 anyInt anyLong any 这样的办法来定义某个依赖数据类型的办法返回特定的值. “doReturn when” 和 “doThrow when”doReturn(…).when(…)的办法调用和when(….).thenReturn(….)相似.对于调用过程中抛出的异样十分有用.而doThrow则也是它的一个变体. 罕用注解@Mock:对函数的调用均执行mock(即虚伪函数),不执行真正局部。 @Spy:对函数的调用均执行真正局部。 @InjectMocks:创立一个实例,简略的说是这个Mock能够调用实在代码的办法,应用@Mock(或@Spy)注解创立的mock将被注入到用该实例中。 Mockito中的Mock和Spy都可用于拦挡那些尚未实现或不冀望被实在调用的对象和办法,并为其设置自定义行为。二者的区别在于Mock不实在调用,Spy会实在调用。 @MockBean: 性能同 @Mock, 只是会将实例放入 Spring 容器治理 @SpyBean: 性能同 @Spy, 只是会将实例放入 Spring 容器治理 Spy 和 Mock 生成的对象不受 Spring 治理Spy 调用实在办法时,其它 bean 是无奈注入的,要应用注入,要应用 SpyBeanSpyBean 和 MockBean 生成的对象受 Spring 治理,相当于主动替换对应类型 bean 的注入,比方 @Autowired、@Resource 等注入最佳实际// 不应用 @SpringBootTest(classes = Application.class)@RunWith(SpringRunner.class)public class ExamAnswerComponentTest { // 创立一个实例,会注入Mock变量 @InjectMocks private ExamAnswerComponent examAnswerComponent = new ExamAnswerComponentImpl(); // 相干操作会被Mock掉 @Mock private ExamAnswerCacheObjectiveDAO examAnswerCacheObjectiveDAO; @Before public void setUp() { // 初始化Mock MockitoAnnotations.initMocks(this); // given...willReturn 指定办法参数,模仿返回值 given(examAnswerCacheObjectiveDAO.selectByBizIdAndPaperAndQuestion(any(), any(), any())) .willReturn(new ExamAnswerCacheObjectivePO()); given(examAnswerCacheObjectiveDAO.insert(any())).willReturn(1); given(examAnswerCacheObjectiveDAO.updateUserAnswerById(any(), any())).willReturn(1); } @Test public void saveOrUpdateAnswerCacheObjective() { ExamAnswerCacheObjectivePO po = new ExamAnswerCacheObjectivePO(); po.setBizId(100000015L); po.setBizType(9); po.setUserAnswer("A"); po.setGroupPaperId(1000320L); po.setQuestionId(1000042L); po.setQuestionType(1); int affect = examAnswerComponent.saveOrUpdateAnswerCacheObjective(po); System.out.println("affect = " + affect); Assert.assertTrue(affect > 0); }}参考https://www.codenong.com/cs10... ...

November 28, 2020 · 1 min · jiezi

关于测试工具:接口测试如何在post请求中传递文件

在做接口测试的时候往往会遇到文件上传的接口,明天教大家如何应用apipost进行文档上传操作。1.关上apipost,新建一个对于文件上传的接口 2.找到body这个选项,输出文件对应的参数名,在而后把参数名前面的text抉择为file。 3.批改实现之后,前面参数值的框曾经显示为请抉择文件上传,点击,抉择须要上传的文件 4.抉择实现之后点击保留接口点击申请发送。 这就是apipost如何实现文件上传的操作了。 工具下载地址: https://www.apipost.cn

November 9, 2020 · 1 min · jiezi

关于测试工具:微信小程序接口测试时appid为空如何解决

一、web接口测试和app/微信小程序接口测试的区别web接口个别是通过浏览器拜访,app接口是通过手机端拜访的,所以他们header头部申请是不一样的,一样的就是User Agent这个参数。 web申请的header申请中的User Agent以谷歌为例: MAC:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 Windows:Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 app申请的header申请中的User Agent: Android:Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) Chrome/57.0.2987.132 Mobile Safari/537.36 ios:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 二、如何进行app接口测试 下面说了app和web的header申请是有区别的所以咱们在进行app接口测试的时候填写User Agent这个参数。这里的两个选项别离代表苹果和安卓。 模仿一下手机拜访百度的申请。 三、微信小程序接口测试的时候参数外面没有appid,为什么申请的时候须要appid,appid是什么?appid是微信或支付宝利用自带的参数,好比小程序的身份证号码,ID号,不便辨认身份。 我这里微信接口测试的时候就遇到appid为空的状况 而后这款小程序appid申请是放在header外面的,填写之后就不为空了。 ...

November 4, 2020 · 1 min · jiezi

关于测试工具:接口测试人员需要掌握的知识技能

一、首先明确接口是什么软件接口是指程序中具体负责在不同模块之间传输或承受数据的并做解决的类或者函数。(而不是指传输的数据!!) 二、什么是接口测试接口测试就是通过向接口传递数据来测试这个接口是否正确。比方:一个QQ登录性能接口,就须要咱们传递QQ号和明码去验证这个登录接口是否正确,是否应用。 三、进行接口测试须要把握哪些常识1、理解零碎及外部各个组件之间的业务逻辑交互; 2、理解接口的I/O(input/output:输入输出); 3、理解协定的根本内容,包含:通信原理、三次握手、罕用的协定类型、报文形成、数据传输方式、常见的状态码、URL形成等; 4、罕用的接口测试工具,比方:apipost、jmeter、loadrunner、soapUI等; 5、数据库根底操作命令(检查数据入库、提取测试数据等); 6、常见的字符类型,比方:char、varchar、text、int、float、datatime、string等; 四、如何学这些技能?1、零碎间业务交互逻辑:通过需要文档、流程图、思维导图、沟通等很多渠道和形式; 2、协定:举荐《图解http》这本书,内容活泼,绝对算是入门级的书籍,其余的还有《图解tcp、IP》等; 3、接口测试工具:百度这些工具,而后你会发现,好多的教学博客、相干问题解决方案、以及一些基于工具的书籍,当然,抉择适合的书很重要; 4、数据库操作命令:学习网站(W3C、菜鸟教程)、教学博客,以及一些数据库相干书籍,入门级举荐:《mysql必知必会》、《oracle PL/SQL必知必会》等 5、知乎,百度和csdn等各大技术论坛都是你学习的好帮手 五、接口测试分为两大类1.手工通过工具进行测试 个别应用的工具有apipost、jmeter、postman等,博主应用的是国产的接口测试工具apipsot。 手工测试方法:通过抓包或其余办法(比方看文档)筹备好输出数据包,而后用发包的工具把数据发给服务端的接口,之后校验其返回值。 2.自动化接口测试 以上,大家曾经理解了手工做接口测试的流程。 那么下一步就是把一些接口测试编写成脚本,放在本地(本人电脑上),人工触发去批量得执行这些测试,并主动校验返回后果。这里举荐一下应用的工具。如果你是零根底的,举荐你用apipost或jmeter,两者都不须要你具备任何代码功底就能用。 我个别应用的是apipost的流程测试性能,把写好的接口,抉择进行点击开始,就能够进行接口自动化测试了。 如果你有编程根底,能够思考应用python+requests+pytest/robotframework来做接口测试。如果用了python+requests,那么性能测试方面能够用python+locust。也能够不必locust,只有你把握了后面提过的数据驱动的思维,配合一些自动化框架开发根底,也一样能够把接口测试做到能在其余性能测试工具里重用,当然这个就简单了,当前再说吧。 接口测试工具apipost下载地址:https://www.apipost.cn/?dt=20201101

November 2, 2020 · 1 min · jiezi

关于测试工具:接口工具使用对比apipostjmeterpostmanswagger等

一、接口都有哪些类型? 接口个别分为两种:1.程序外部的接口 2.零碎对外的接口 零碎对外的接口:比方你要从别的网站或服务器上获取资源或信息,他人必定不会把 数据库共享给你,他只能给你提供一个他们写好的办法来获取数据,你援用他提供的接口就能应用他写好的办法,从而达到数据共享的目标。 程序外部的接口:办法与办法之间,模块与模块之间的交互,程序外部抛出的接口,比方bbs零碎,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供外部零碎进行调用。 接口的分类:1.webservice接口 2.http api接口 webService接口是走soap协定通过http传输,申请报文和返回报文都是xml格局的,咱们在测试的时候都用通过工具能力进行调用,测试。 http api接口是走http协定,通过门路来辨别调用的办法,申请报文都是key-value模式的,返回报文个别都是json串,有get和post等办法,这也是最罕用的两种申请形式。 json是一种通用的数据类型,所有的语言都意识它。(json的实质是字符串,他与其余语言无关,只是能够通过稍稍加工能够转换成其余语言的数据类型,比方能够转换成 Python中的字典,key-value的模式,能够转换成JavaScript中的原生对象,能够转换成 java中的类对象等。) 二.接口–前端、后端和测试 前端对接口进行应用:通过后端人员给的接口文档,来进行Ajax的设计,通过接口向服务发送申请,获取响应的数据,而后通过返回的数据进行下一步的页面跳转和显示。 后端生成接口:通过编写接口,为前端提供与服务器和数据申请交互的通道。编写对应的接口,须要传递的参数,参数类型等等。而后生成接口文档,分享给前端,让其依照接口文档编写对应的Ajax。 测试验证接口:能够通过接口文档,进行接口验证,查看后端开发的接口和前端所写的Ajax是否对应,有没有出错的接口,还可通过接口流程测试,晓得整个零碎之间的接口是否是绝对应的,有没有接口是不对的,或者没有失常运行。 三.前端、后端和测试应用的接口工具 前端:个别应用postman、apipost或者jmeter进行接口验证和查看响应值 后端:多用swagger、apipost、postman等接口文档生成工具和测试工具 测试:jmeter、apipost和postman等能够对接口进行验证测试。 四.jmeter、postman、apipost、swagger工具介绍 jmeter能够进行接口测试和性能测试,然而对于做单纯的接口测试jmeter操作起来没有postman、apipost应用起来不便。jmeter重点在于压力测试,稳定性测试和负载测试。针对于接口和程序的稳定性设计的一块以软件性能为主接口测试为辅的接口测试工具。postman是Google开发的一款接口测试的插件,也有客户端。国内禁用Google之后,postman的插件就不好下载和应用了。postman这款接口测试工具,是一款很轻便的接口验证工具,能够通过输出申请办法、url、参数间接进行接口申请拜访,验证接口是否开明,还能够查看返回的响应值查看接口开发是否失常。不过因为是Google开发的所以只反对英文版。对于英文不好的人应用起来特地好受。apipost这款接口测试工具,次要针对于接口验证和接口文档生成。apipost这款接口测试工具,是一款很轻便的接口验证工具,能够通过输出申请办法、url、参数间接进行接口申请拜访,验证接口是否开明,还能够查看返回的响应值查看接口开发是否失常。依据这些接口验证信息,间接能够生成在线文档和离线版的word文档。是一款很棒的接口测试和接口文档生成工具,又不像swagger生成的接口文档都是英文的浏览起来也不太不便。apipost还具备协同工作,能够很无效的实现前端的接口联调。swagger是一款通过针对与后端开发人员的一款接口文档生成工具。次要通过在代码中的正文生成接口文档的工具,不过生成的接口文档是英文的。工具下载地址: jmeter:https://jmeter.apache.org/apipost:https://www.apipost.cn/?dt=20201030swagger:https://swagger.io/

October 30, 2020 · 1 min · jiezi

关于测试工具:接口对前后端和测试的意义

1.什么是接口? 接口测试次要用于内部零碎与零碎之间以及外部各个子系统之间的交互点,定义特定的交互点,而后通过这些交互点来,通过一些非凡的规定也就是协定,来进行数据之间的交互。 2.接口都有哪些类型? 接口个别分为两种:1.程序外部的接口 2.零碎对外的接口 零碎对外的接口:比方你要从别的网站或服务器上获取资源或信息,他人必定不会把 数据库共享给你,他只能给你提供一个他们写好的办法来获取数据,你援用他提供的接口就能应用他写好的办法,从而达到数据共享的目标。 程序外部的接口:办法与办法之间,模块与模块之间的交互,程序外部抛出的接口,比方bbs零碎,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供外部零碎进行调用。 接口的分类:1.webservice接口 2.http api接口 webService接口是走soap协定通过http传输,申请报文和返回报文都是xml格局的,咱们在测试的时候都用通过工具能力进行调用,测试。 http api接口是走http协定,通过门路来辨别调用的办法,申请报文都是key-value模式的,返回报文个别都是json串,有get和post等办法,这也是最罕用的两种申请形式。 json是一种通用的数据类型,所有的语言都意识它。(json的实质是字符串,他与其余语言无关,只是能够通过稍稍加工能够转换成其余语言的数据类型,比方能够转换成 Python中的字典,key-value的模式,能够转换成JavaScript中的原生对象,能够转换成 java中的类对象等。) 3.前后端和测试对应的接口应用 因为当初一款程序的开发实现的前后端拆散,前端和后端间接的数据传输和交互都是通过接口来进行操作的。 前端:通过后端人员给的接口文档,来进行Ajax的设计,通过接口向服务发送申请,获取响应的数据,而后通过返回的数据进行下一步的页面跳转和显示。 后端:通过编写接口,为前端提供与服务器和数据申请交互的通道。编写对应的接口,须要传递的参数,参数类型等等。而后生成接口文档,分享给前端,让其依照接口文档编写对应的Ajax。 测试:能够通过接口文档,进行接口验证,查看后端开发的接口和前端所写的Ajax是否对应,有没有出错的接口,还可通过接口流程测试,晓得整个零碎之间的接口是否是绝对应的,有没有接口是不对的,或者没有失常运行。 4.接口测试和接口文档生成的工具 接口测试工具:jmeter、apipost、postman jmeter:针对于接口测试和性能测试。它的性能次要是性能测试方面弱小。 apipost和postman:针对于接口测试,性能都差不多,惟一不必的是apipost是中文版的还能够生成各种类型的接口文档。postman英语版的接口文档生成也是英文的。 接口文档生成工具:swagger、apipost swagger是一款通过接口正文生成接口文档的工具,不过生成的接口文档也全是英文的。 apipost是通过对开发好的接口进行测试生成的接口文档,文档能够生成在线的html、markdown和word格局的。 工具下载地址: ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn Apache JMeter - Apache JMeter™jmeter.apache.org[](https://link.zhihu.com/?targe... API Documentation & Design Tools for Teams | Swaggerswagger.io

October 26, 2020 · 1 min · jiezi

关于测试工具:接口测试流程测试点和测试工具

一、什么状况下发展接口测试? 1.我的项目处于开发阶段,前后端联调接口是否申请的通? 2.有接口需要文档,开发已实现联调(能够转测),功能测试开展之前 3.版本上线前,进行整体回归测试,查看接口是否有异样(如404等)。对筹备上线的版本进行抓包,查看服务器地址是都正确 4.版本性能稳固后,接口自动化 5.还能够利用在平安测试,性能测试畛域等。。 二、如何进行接口测试 发送http申请来进行测试,首先咱们要看申请的办法是什么get、post或者其余申请、之后输出URL地址,比方get申请申请百度。 post申请申请登录,post申请个别须要传递参数,所以咱们要在body增加登录名和明码 返回后果: 参数名称 类型 形容返回形容 String 发送胜利返回0,如果发送不胜利,则返回“ERROR&&对应的错误信息” 三、接口测试用例设计 接口测试是无界面的功能测试,设计用例思路跟功能测试一样(只是一个重视的是测前端页面,一个重视的是测后端接口) 1.输出参数测试: 针对输出的参数进行测试,也能够说是假设接口参数的不正确性进行的测试,确保接口对任意类型的输出都做了相应的解决:输出参数非法,输出参数不非法,输出参数为空,输出参数为null,输出参数超长; 2.功能测试:接口是否满足了所提供的性能,相当于是失常状况测试 3.异样场景,如:申请超时、疾速间断点击、申请失败状况(工作型的,失败后是否能够从新下发工作) 四、接口测试工具 我个别应用的是国产的接口文档测试工具apipost,还有压测工具jmeter 下面get申请和post申请就是用apipost做的感兴趣的能够下载了应用一下 ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn 公布于 7 小时前

October 22, 2020 · 1 min · jiezi

关于测试工具:接口测试工具总结

现在,接口测试工具这个市场,品种十分多,十分繁冗。 国外接口测试工具巨头:postman、jmeter和loadrunner等 国内的接口测试工具就更多了:apipost、doclever、itest等 明天我就给大家剖析剖析,这些软件的优缺点。 首先先剖析两大巨头:postman和jmeter 1.postman Postman是由Postdot Technologies公司打造的一款功能强大的调试HTTP接口的工具,它最早是Chrome中最受欢迎的插件之一,现已扩大到Mac,Windows和Linux客户端。软件性能十分弱小,界面简洁清晰、操作方便快捷,设计得很人性化。Postman分免费版和免费版本。然而postman是国外的软件只有英文版,对于英语不好的人用着十分吃力。 2.jmeter Apeche Jmeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最后被设计用于web利用测试,但起初扩大到其余测试畛域。jmeter因为是用java写的,所以装置的时候,须要配置对应的java环境和jmeter本身的环境。 3.loadrunner loadrunner是HP(Mercury)公司出品的一个性能测试工具,LoadRunner是一种实用于许多软件体系架构的主动负载测试工具,从用户关注的响应工夫、吞吐量,并发用户和性能计数器等方面来掂量零碎的性能体现,辅助用户进行零碎性能的优化。然而loadrunner一款免费软件,而且不轻量,安装包较大。应用老本高。 4.apipost 国产的一款接口测试和接口文档生成的工具。次要针对的是接口测试和接口文档生成。这款软件也不反对离线应用,官方消息往年十一月会出离线版的。现版本还是要注册和建设我的项目能力进行接口测试。而后接口文档反对在线的,html,markdown和word版本的文档。还是一款很不错的软件。期待apipost官网的优化更新。 5.doclever 国产的一款接口测试工具,有Windows和ios两个版本。不反对离线状态的接口测试,进行流程测试的步骤比拟繁琐,须要建设我的项目,在具体实现接口测试的话,还须要增加很多步骤能力实现接口测试,流程化的思维是好的,然而不够简便。 6.itest 国产的功能测试和接口测试汇合工具。思维是对整个我的项目的品质治理,功能测试和接口测试的整合软件,然而这款软件并没有很好的把性能和性能区别开。操作比拟负责,还不如独自用bug管理工具和接口测试工具。

October 10, 2020 · 1 min · jiezi

关于测试工具:shell

shell介绍shell变量规定Shell 和python都是弱语言 定义变量规定 : 变量名=值 shell定义变量的规定: 等号两边不能有空格2.定义非凡的变量须要用单引号或者双引号联合这样看 单引号 和 双引号 没有区别然而从这张图咱们能够看出区别 name1也能够变成name2只须要在特殊字符前增加 就能够和name2一样了定义linux命令须要用反单引号Shell取值 应用:echo $变量名 $变量名,能够获取变量名外面的值 Shell脚本的规定``#!/bin/bashcd /etc# 查问以后文件夹 所有文件和文件夹的个数dir=`ls |wc -l`echo $dir`` * 1* 2* 3* 4* 51:脚本名称应用.sh结尾 2:第一行必须写# !/bin/bash 3:输出语句用read 4:输入语句用:echo 5: 调用的时候./脚本名.sh(权限的问题) sh 脚本名.sh 留神点:read能够传递多个数据 read –p”name and passwoed”name password `超过的局部都填充在最初一个变量上` * 1 `向.sh文件中传递数据 格局: sh 脚本名.sh 参数 $1:接管第一个参数~~$n $n:文件名称 $@:所有参数 $#参数个数` * 1* 2* 3* 4* 5* 6* 7* 8 比拟运算符 `#!/bin/bashread -p"math:" mathif [ "$math" -gt "0" ]thenecho "-1"else if [ "$math" -lt "0:" ]echo "+1"fi` * 1* 2* 3* 4* 5* 6* 7* 8* 9 ...

September 25, 2020 · 3 min · jiezi

关于测试工具:转载新版apipost如何使用mock测试

多图预警!!!1.Mock 是什么 有一个接口,通过参数id的不同返回的数据不同,当初数据库有多条数据,作为测试人员你如果用手输出查看这个接口的返回后果就很麻烦费劲。 咱们就能够调用apipost外面内置mock字段变量 apipost内置的mock字段变量能够随机生成你须要的变量值。这里咱们须要随机生成一个姓名 咱们调用apipost外面内置的mock变量参数@cname()。因为apipost是国人本人的产品所以前面的解释也是中文的,对那些英文不好的人员就很友善。 而后间接把@cname()复制到参数值外面就能够调用了。 咱们须要多个申请就能够在流程测试中屡次运行

September 16, 2020 · 1 min · jiezi

关于测试工具:讲解如何使用apipost进行接口自动化测试

接口测试工具apipost3.0版本对于流程测试和援用参数变量本期解说一下如何应用apipost进行接口自动化测试 apipost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境能够很好的辨别,只须要把正式环境和测试环境不同的url创立成不同的环境变量应用的时候调用他们就能够明确的分辨了。 首先是创立环境变量 点击新建环境,输出环境名,这里能够用正式环境和测试环境来命名或者项目名称,咱们这边用的是测试环境的名称,而后是编写变量名和变量初始值,变量名依据本人喜好和爱好定义,变量初始值个别是测试的首页url,或者是你在测试多个接口的时候url中雷同的字段,如:http://47.95.15.38:8000/login http://47.95.15.38:8000/get/user,他们的url雷同字段是http://47.95.15.38:8000变量初始值就能够填写为http://47.95.15.38:8000 环境变量配置好之后就是对环境变量的援用,apipost援用环境变量是在申请的url中{{}}加环境变量名,如:{{ceshi_url}}/login {{ceshi_url}}/get/user. 这里咱们实现一个登录和登录之后查问的流程操作. 首先咱们登录之后会获取一个token,然而token这个值每次登录之后在申请都会扭转,这就是一个参数变量.怎么调用这个变量那,apipost用一个预执行脚本和后执行脚本. 咱们在登录之后能够在响应外面查看这个token 之后点击后执行脚本,在右侧抉择设置一个环境变量 而后编写变量名,和定位token这个变量在响应文本中的地位,apipost固定定位申请文本的格局response.json.token或者token的下级.token 如:apt.variables.set(“token_a”, response.json.result.token); 这个就是response中的json中的result的token等于token_a 之后咱们进行登录之后的查问操作,因为后面咱们曾经定义了登录之后的token值等于token_a,所以间接在body援用token_a,援用格局为{{token_a}},这样咱们在每次登录申请之后,就不必频繁的去更改token了 而后进行流程测试,把曾经写好的接口脚本抉择进去点击运行就能够进行流程测试了

September 10, 2020 · 1 min · jiezi

关于测试工具:Unixbench控制脚本分析

Unixbench是一款用于linux零碎的零碎性能测试工具。本文次要剖析了Unixbench运行的入口脚本Run。 一、执行调用关系 二、单测试项后果剖析(后果解决为Run中的combinePassResults函数)指定单测试项运行遍数(run pass num),通过变量testParams中的repeat参数指定: 命名次数阐明short3默认long10最大single1最小先依据每一遍的后果进行排序,去掉最差的1/3的后果,可通过log文件查看:dump score为舍去的后果,Count score为参加算分的后果。每一项原始后果,形如:COUNT|x|y|z 其中x为分数,y为工夫单位,若y为0则x代表比率,z为标签符号。当y为工夫单位时的计算公式: $$\LARGE{score=e^{(\sum\limits_{i=1}^{iterations}\log(\frac {count\cdot timebase}{time}))/iterations}}$$ score: 单项分数iterations:残余无效后果的个数count:每个无效后果的值timebase:工夫根本单位time:运行的总工夫当y为0时的计算公式: $$ \LARGE{score=e^{(\sum\limits_{i=1}^{iterations}\log(count))/iterations}} $$ 三、总分后果剖析(后果解决为Run中的indexResults函数)index值计算公式: $$\LARGE index=\frac{score * 10}{baseline}$$ score:算出的单项分数baseline:记录在pgms/index.base中的基准值总分计算公式: $$\Large SUM\_SCORE=e^{(\sum\limits_{i=1}^{tests\_num}log(\frac{score}{baseline}))/test\_num}*10$$ test_num:一个类型中的测试项的个数,可见Run中的testCats变量。

August 28, 2020 · 1 min · jiezi

关于测试工具:想要做自动化测试八款高-Star-开源测试工具分享

作为研发流程中的一环,测试环节的重要性不亚于产品研发,那么明天 Gitee 举荐的就是有测试需要的开发者们,上面八款开源我的项目中蕴含了自动化测试平台、热数据探测框架、接口响应模拟系统以及 API 接口调试工具等,心愿对在寻找测试工具的你有所帮忙。 1.LuckyFrameWeb我的项目作者: seagull 开源许可协定: AGPL-3.0 我的项目地址:https://gitee.com/seagull1985/LuckyFrameWeb LuckyFrame测试平台是一款收费开源的测试平台,最大的特点是全纬度笼罩了接口自动化、WEB UI自动化、APP自动化,并且反对分布式测试,测试关键字驱动也很大水平上解决了测试同学代码根底弱的问题。同时也集成了品质治理相干的一些性能,解决QA的日常工作中,我的项目过程数据的收集问题,并能展现一些简略品质报表。 2.hotkey我的项目作者: 京东-平台业务核心 开源许可协定: Apache-2.0 我的项目地址:https://gitee.com/jd-platform-opensource/hotkey 京东APP后盾热数据探测框架,历经屡次低压压测和2020年京东618大促考验。在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕捉了大量爬虫、刷子用户,另精确探测大量热门商品并毫秒级推送到各个服务端内存,大幅升高了热数据对数据层的查问压力,晋升了利用性能。 3.Taisite-Platform我的项目作者: 泰斯特 开源许可协定: AGPL-3.0 我的项目地址:https://gitee.com/amazingTest/Taisite-Platform 泰斯特测试平台,是一款开源的接口自动化测试平台、平台致力于将人工智能技术与接口自动化测试无效联合,让接口测试平台在保障 QA 测试精确性要求的同时更具智能化、泛化能力, 同时尽可能最优化接口自动化测试平台应用体验。 4.易巨匠接口自动化测试平台我的项目作者: 凤凰院大白 开源许可协定: GPL-2.0 我的项目地址:https://gitee.com/xuwangcheng/masteryi-automated-testing 专一于接口自动化测试的治理平台。 5.v-mock我的项目作者: vtDev 开源许可协定: MIT 我的项目地址:https://gitee.com/vtDev/v-mock V-Mock是一个玲珑的接口响应模拟系统,装置实现后,录入你要模仿的接口URL,及该URL返回的JSON,XML或者其余格局的返回数据,即可开始调用。 6.stressTestSystem我的项目作者: smooth 开源许可协定: Apache-2.0 我的项目地址:https://gitee.com/smooth00/stressTestSystem 本我的项目基于renren-fast Java开发平台开发,内核基于Jmeter-Api和Jmeter脚本实现在线性能压测。是在zyanycall/stressTestPlatform的开源我的项目根底上做了大量的革新,后续还会持续追加新性能。 7.rabbit 自动化测试平台服务端我的项目作者: 兔子快跑 开源许可协定: AGPL-3.0 我的项目地址:https://gitee.com/tuzikuaipao/rabbit_test_platform_server Rabbit 是一个开源的自动化测试平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),目前版本已反对UI自动化和接口自动化测试。平台采纳关键字驱动,测试人员无需任何代码根底,即可轻松实现简单的自动化测试工作。 8.Tester我的项目作者: Hamm 开源许可协定: GPL-3.0 ...

August 6, 2020 · 1 min · jiezi

性能测试神器-wrk-使用教程

原文连贯:https://blog.fengjx.com/wrk/ wrk 是一个相似 ab(apache bench)、jmeter 的压力测试工具,底层基于 epoll 和 kqueue 实现,能充分利用服务器 cpu 资源,升高测试工具自身性能开销对测试后果准确性的影响。反对应用 lua 脚本自定义测试逻辑,应用上非常简单,但性能足够弱小。 没有理解过 lua 的同学,能够看下 lua 扼要教程 https://coolshell.cn/articles...装置linux https://github.com/wg/wrk/wik...macOS https://github.com/wg/wrk/wik...windows( Windows Subsystem for Linux ) https://github.com/wg/wrk/wik...用法$ wrk -hwrk: invalid option -- hUsage: wrk <options> <url> Options: -c, --connections <N> Connections to keep open -d, --duration <T> Duration of test -t, --threads <N> Number of threads to use -s, --script <S> Load Lua script file -H, --header <H> Add header to request --latency Print latency statistics --timeout <T> Socket/request timeout -v, --version Print version details参数阐明-c与服务器放弃的 http 连接数-d压测工夫-t应用线程数-s自定义 lua 脚本门路-H自定义 http header 申请头,例如:"User-Agent: benchmark-wrk"--latency打印提早统计数据--timeouthttp 超时工夫--version打印版本信息eg: wrk -t2 -c5 -d10s https://httpbin.org/get ...

July 13, 2020 · 4 min · jiezi

模拟http-code-返回

访问 https://httpstat.us/HTTP_CODE 即可得到相应服务器响应例如:https://httpstat.us/200 200响应https://httpstat.us/400 400响应

July 5, 2020 · 1 min · jiezi

cypress学习笔记一安装

一、环境准备: node环境已经执行npm init已有node_modules目录或者package.json文件二、安装cypress的安装官网提供了几种方式: 1、通过npm安装 $ npm install cypress --save-devnpm安装是将cypress作为项目的一个依赖包引入,安装前需要进入到项目目录中。此安装方式比较便捷,也是官网优先推荐的。但是在安装时会遇到下载cypress失败、下载cypress较慢的问题,主要原因是下载时走国外镜像,大概率会失败。 在网上查了很多相关文章并没有找到合理的解决方案,其中有一个方案是推荐搭建自己的私有仓库,将镜像放在私有仓库中,后续下载、打包都会比较快。如果公司需要用cypress做自动化框架,这个方式是必须的,大部分公司都有自己的私有仓库。但是对于测试者来说,自己体验或者学习,搭建一个私有仓库的方法太重了。最终的解决方案来自于官方文档: 简单翻译下:cypress需要配置网络代理,如果不设置代理将会放生一下情况: 本地调试时cypress将不可用如果你的baseUrl不可用时,cypress将不会告警cypress在登录或者测试时将无法连接Dashboard Service使用npm install cypress方式安装时将会失败Linux或者MAC解决方案:export HTTP_PROXY=http://my-company-proxy.comexport NO_PROXY=localhost,google.com,apple.com 笔者使用的是第二个且配置的淘宝镜像,export NO_PROXY=http://npm.taobao.org Window解决方案: 笔者用的Linux,windows没有尝试,可以参考官网步骤:https://docs.cypress.io/guide... 2、通过yarn安装 yarn add cypress --dev配置和npm安装一致,只是命令不同,凭喜好选择。 ps:使用npm、yarn方式安装时,请确保 3、直接下载安装包 这个安装方式适用于快速体验cypress,不支持录制用例功能。如果要使用录制功能,需要使用npm或者yarn的方式下载。安装包下载地址:https://download.cypress.io/d... 本文主要目的是解决cypress通过npm或者yarn下载慢的问题,细节安装请移步官网

June 25, 2020 · 1 min · jiezi

robot-framework-小试

原文链接 优势支持不同开发语言平台,java/python可是用于测试api,同时也可以用于测试ui界面使用伪代码进行编写case,简单易懂,学习成本低可以在伪代码中执行Python代码可是使用python定义伪代码关键字接口丰富,可自定义程度高劣势有一定的学习成本安装安装 robot framework pip install robotframework安装http请求扩展包 robotframework-requests pip install robotframework-requests定义公有关键字http请求中,会有一部分公有的内容,比如 header 在 config 文件夹中新建 variables.robot 设置常用的参数*** Settings ***Documentation variables *** Variables ***${Host} http://www.domian.com/ # 服务器主机${User-Agent} Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0 # 浏览器代理${Accept} text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8${Content-Type} application/x-www-form-urlencoded${Content-Type-Json} application/json${Accept-Language} en-US,en;q=0.5${Accept-Encoding} gzip, deflate${Cookie} 9${Connection} keep-alive${Cache-Control} max-age=0${Upgrade-Insecure-Requests} 1创建 defined.robot 设置不同类型的header*** Settings ***Resource variables.robot # 引入资源文件*** Keywords *** # 自定义关键字headers # web header ${dict_headers} Create Dictionary Host=${Host} User-Agent=${User-Agent} Accept=${Accept} Accept-Language=${Accept-Language} Accept-Encoding=${Accept-Encoding} ... Connection=${Connection} Cache-Control=${Cache-Control} Return From Keyword ${dict_headers}api_headers # api header ${api_headers} create dictionary Content-Type=application/x-www-form-urlencoded Return From Keyword ${api_headers}编写自定义函数创建py文件 functions.py ,编写自定义函数,用来解决一些自定义的场景。例如,获取json数据,获取加密数据等 ...

October 16, 2019 · 2 min · jiezi

电信物联网平台NBIoT使用Postman模拟测试接口

主要用于测试部分接口以及和官方对接时候官方要求用postman发送测试数据。欢迎一起交流,提供咨询服务。 使用postman测试关键点是 配置证书证书从平台下载,后面有详细介绍 不校验服务端证书这个一定要勾选 获取token先使用login接口获取,用于后面操作接口的鉴权 使用token操作接口都需要配置~~~~ 1 配置证书点击Postman右上角设置按钮,选择Settings 图2-5 Settings界面选择General,将SSL certificate verification 关闭(平台需要双向认证,将此处关闭表示postman不去校验平台的证书)图2-6 General界面选择Certificates –>点击 add Certificate图2-7 Certificates界面(1)上传2.1中下载的证书和密钥,host处填入应用服务器访问平台的IP地址和端口,CRT file:传入server.crt文件,KEY file:传入server.key文件,证书自己从电信平台下载。 图2-8 Certificates界面(2) 2 Postman测试北向接口2.1 鉴权(获取token)第三方应用首次访问IoT平台的开放API时,需调用此接口完成接入认证;第三方应用在IoT平台的认证过期后,需调用此接口重新进行认证,才能继续访问IoT平台的开放API。参照2.1中下载的接口文档,在Postman中填入对应的请求方法,URL,请求头Headers,请求体Body。 请求方法 POST请求地址 https://server:port/iocm/app/sec/v1.1.0/login传输协议 HTTPS配置http方法、URL和头域:URL中要填入对应的IP地址与端口号(如测试平台180.101.147.89:8743),请求头中Content-Type为编码方式,需要按接口文档中填写。 配置Body:Body中的appId与secret在创建应用的时候可以获得,分别为应用Id与应用密钥。 返回的消息:点击Send按钮,就能在下方看到返回码及消息内容。 2.2 订阅配置http方法、URL和头域: 配置Body: 返回的消息:点击Send按钮,就能在下方看到返回码及消息内容。

October 16, 2019 · 1 min · jiezi

Jmeter数据库批量新增

这里使用Jmeter5.1.1版本,需要对Jmeter会继续基础操作。 如果需要进行体验,导入 jmx文件 到Jmeter中。 使用到的 mysql-connector-java-5.1.48.jar、jmeter-function-plugins。 一、适用情况1、直接对数据表进行重复性操作2、数据有严格的创建函数或存储过程限制,不能通过编写数据库存储过程实现3、需要一些生成随机数据二、Jmeter数据库操作计划1、创建线程组 2、创建JDBC连接配置1、创建JDBC连接配置2、设置数据库连接池名称,后面使用3、设置JDBC连接参数,包括url、驱动类名、用户、密码 3、创建数据库操作请求1、创建JDBC请求2、指定JDBC请求使用到的数据连接池名称,上一步已经定义的。3、编写数据库操作SQL,字段值可以是常量,也可以是变量。变量写法符合Jmeter变量写法,使用${}包括起来。 4、创建字段随机值1、创建用户变量2、如果需要每次获取用户变量值时,需要进行重新计算,请勾选“每次迭代更细一次”3、定义变量名和变量的取值。如果需要使用到Jmeter函数,可以使用Jemter函数助手进行帮助。 5、执行计划三、Jmeter函数Jmeter函数返回的都是字符串类型的数据,如果需要时间格式,可能需要额外的转时间处理 Jmeter函数助手目的是为了快速写出正确的Jmeter函数表达式 这里使用到自定义Jmeter函数,需要复制 jmeter-function-plugins-1.0-SNAPSHOT.jar 到 %JMETER_HOME%/lib/ext下,并重启Jmeter 1、Jmeter函数助手入口 2、Jmeter函数助手使用 3、函数说明这里只列举例子中使用到的一些函数,更多函数使用参考Jmeter官网函数说明 函数名使用例子解释说明__RandomString${__RandomString(6,0123456789abcdefghijklmnopgrstuvwxyz,)}从“0123456789abcdefghijklmnopgrstuvwxyz”中生成随机的6个字符串,可重复__time${__time(yyyy-MM-dd HH:mm:sss,)}按指定时间格式,生成随机时间字符串__UUID${__UUID}生成UUID,包含“-”__Random${__Random(10,99,)}生成10到99的范围的一个数字,包含10和99__RandomChineseName${__RandomChineseName}生成随机中国姓名(非内置函数)__RandomMobile${__RandomMobile}生成随机手机号码(非内置函数)__RandomIdCardNo${__RandomIdCardNo}生成随机身份证件号(非内置函数)__RandomEmail${__RandomEmail}生成随机电子邮箱(非内置函数)__RandomIP${__RandomIP}生成随机IPv4地址(非内置函数)四、自定义Jmeter函数上一步使用到的Jmeter自定义函数,需要进行Java编码。参考项目 jmeter-function-plugins

October 5, 2019 · 1 min · jiezi

Postman的简单使用

一、Postman的简单介绍熟悉HTTP协议,能容易的配置一个简单的http请求,这里就不介绍了。下面是Postman的主要功能: 1、支持定义http请求分组2、支持配置不同环境变量3、支持路径参数、请求头参数、请求实体参数的录入4、支持编写脚本预处理请求(Pre-request Script)5、支持编写脚本断言响应结果及其他测试(Tests) 二、Postman的变量1、作用Postman用于注入请求地址、请求参数、请求实体、请求头中占位符{{}}中的值。 2、分类postman的变量配置,变量类型分为一下3种。每一个变量包含key值,初始化值,当前值三个可编辑项。 变量类型作用范围占位符取值优先级脚本编辑导入导出普通变量当前单个请求最高支持不支持环境变量启用下的所有请求中支持支持全局变量所有请求最低支持支持3、设置入口3.1、可视化设置 3.2、编码设置见变量操作语法 三、Postman的脚本执行1、脚本设置入口1.1、分类以请求为导线,分为Pre-request Script和Tests。以请求组合分类为导线,分为collection级别、folder级别和request级别。以上两种分类的组合共有6个脚本设置入口。 1.2、设置入口1.2.1、collection级别 1.2.1、folder级别 1.2.1、request级别 1.3、执行时间1、Pre-request Script在请求前执行2、Tests在响应后执行3、collection级别在folder级别前执行,folder级别在request级别前执行时间线(上先下后顺序)l类别请求接口前Pre-request Script(collection级别)请求接口前Pre-request Script(folder级别)请求接口前Pre-request Script(request级别)请求接口 请求返回后Tests(collection级别)请求返回后Tests(folder级别)请求返回后Tests(request级别)四、Postman脚本常用语法1、变量操作<div id="变量操作语法"></div> 变量类型set值语法get值语法清除语法普通变量pm.variables.set("key", "value")pm.variables.get("key")pm.variables.unset("variable_key")环境变量pm.environment.set("key", "value")pm.environment.get("key")pm.environment.unset("variable_key")全局变量pm.globals.set("key", "value")pm.globals.get("key")pm.globals.unset("variable_key")2、异步发送非当前请求异步发送Get请求https://postman-echo.com/get pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(response.json());});3、响应断言3.1、请求结果断言根据HTTP状态码断言 pm.test("Status code is 200", function () { pm.response.to.have.status(200);});pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]);});根据响应状态描述文字断言 pm.test("Status code name has string", function () { pm.response.to.have.status("Created");});3.2、文本响应实体断言断言文本响应结果包含某个字符串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search");});断言文本响应实体匹配字符串 pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string");});3.3、JSON响应实体断言pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100);});3.4、响应头断言pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type");});3.5、响应耗时断言pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200);});4、响应实体由XML转JSONvar jsonObject = xml2Json(responseBody);5、自定义JSON校验规则var schema = { "items": { "type": "boolean" }};var data1 = [true, false];var data2 = [true, 123];pm.test('Schema is valid', function() { pm.expect(tv4.validate(data1, schema)).to.be.true; pm.expect(tv4.validate(data2, schema)).to.be.true;});6、参考文档Postman Sandbox API reference ...

October 5, 2019 · 1 min · jiezi

报表网红是Tableau提测网红是MadPecker

近期Tableau着实刷屏了,身边的朋友纷纷“墙裂”推荐,其强大的数据处理及可视化分析号称比传统excel等现有解决方案提高10-100倍,堪称是【报表网红】。同样的,我们MadPecker在提测领域也可以帮助测试人员、开发人员提升10-100倍的工作效率,【提测网红】实至名归。 对于大多数团队而言,提测应该都是比较”糟心“的事情,测试用例的录制,测试计划的编排,测试过程中产生的bug的跟踪和修复,都将直接影响项目的上线质量。今天小啄给大家分享一下如何让每个团队的测试变得更有效率。 高效使用测试框架 测试人员在接到一份新项目的测试任务的时候,肯定是需要先理清楚测试思路的。为此,我们搭建了一套完整的测试框架,从用例录制到BUG提交形成规范的测试机制,即使是测试新手也几乎不用学习成本就可以完成测试任务。关于一些用户提出的在测试过程中遇到的问题: 1.测试用例写不全,总是感觉还有缺漏 2.测试用例深度不够,只能发现一些表面的问题,扎根深处的问题没法发现 3.测试过程中总是这点点那点点,没有根据场景进行项目测试,也不知道实际用户的使用习惯 针对类似的问题,我们根据长期积累下来的经验统一了测试用例的编写规范,目的在于提高测试用例的可读性、可执行性和合理性。因为编写测试用例相当于整个测试流程的地基,没有把地基打好,测试结果就不言而喻了。所以测试人员在编写测试用例时,需要以最小功能模块来划分用例,这样才能保证用例覆盖足够广,也使得后续问题的出现大大减小。那么如何高效地使用测试框架呢?我们建议先测主线再测支线。主线指的是真实用户完成一套正常流程所走的路线,支线指的是围绕主线的功能模块及其功能细节,这两条路线在系统中都可以使用同一套框架。 为保证测试流程更加接近真实用户的使用情况,我们构建了可复用的测试用例和测试场景,方便大家使用场景法进行测试。场景法是通过运用场景对系统的功能点或业务流程的描述来提高测试效果的。可复用的用例、场景也帮助测试人员大大地提高了工作效率。 同样的,测试执行也是测试框架中的一部分,测试执行将所有测试用例量化,然后整合起来指定给执行的负责人,并保证测试计划的有效性,确立每个测试阶段测试完成以及测试成功的标准和要实现的目标。通过执行中的通过率和完成度两项指标,测试人员或者项目的负责人都可以很清楚地了解到本轮测试的完成情况并对项目进行风险评估。在测试过程中,我们设定了BUG反馈机制,执行中产生的BUG直接反馈给开发人员,使得整个测试流程形成闭环。 打造测试界的网红产品 在MadPecker测试管理功能上线的短短几个月内,大量团队争相涌进,并将MadPecker作为团队的首要测试管理工具,使得我们的产品在业内积攒了一定的知名度。在此,小啄代表团队所有人感谢大家的信任。同时,我们也欢迎越来越多的团队加入进来,让每个团队的提测变得更有效率!

June 13, 2019 · 1 min · jiezi

写了一个chrome插件:拦截ajax请求并修改返回结果

这个插件可以拦截页面上的 ajax 请求,并把返回结果替换成任意文本。它对 mock 数据、排查一些线上问题等会有很大帮助。(当然 chales 等抓包软件也可以做到,然而使用起来比较繁琐,做成 chrome 插件的形式会方便许多)使用示例(视频)weibo.com/tv/v/HlVZD8cR9?fid=1034:4352275389595232Chrome 商店地址地址:https://chrome.google.com/web…你也可以直接搜索 Ajax Interceptor 进行安装注意建议第一次安装完重启浏览器,或者刷新你需要使用的页面。当你不需要使用该插件时,建议把开关关上(插件icon变为灰色),以免对页面正常浏览造成影响。该插件只会在JS层面上对返回结果进行修改,即只会修改全局的XMLHTTPRequest对象和fetch方法里的返回值,进而影响页面展现。而你在chrome的devtools的network里看到的请求返回结果不会有任何变化。githubhttps://github.com/YGYOOO/aja…

April 16, 2019 · 1 min · jiezi

契约测试的必要性

由于工作的原因,最近一直在研究API接口测试问题,因为前后端开发经常遇到进度不一致、信息不对称的情况,最近正在找寻能完美解决这个问题的方案。尝试寻找了一下,发现这其实是一个契约测试问题,在找到之前的一些文章,看完觉得对我理解契约测试有很大帮助,转过来记录一下。现在我已经有一些思路了,后续会专门写一篇文章来记录这部分的内容。测试金字塔模型测试是软件流程中非常重要,不可或缺的一个环节。一般的测试分为单元测试,集成测试,端到端的手工测试,这也是构成测试金字塔的三个层级。我们今天将要讨论的话题是契约测试,它是处于单元测试和集成测试中间的一个环节。这三个层级分别测试的场景如下:单元测试:测试单个service集成测试:测试由多个services组成的系统端到端测试:测试从用户到各个外部系统的整个场景什么是契约测试?契约测试最开始的概念由Martin Fowler 提出,请参见这篇文章, 它又被称之为:消费者驱动的契约测试(Consumer Driven Contracts)。这里的契约是指软件系统中各个服务间交互的数据标准格式,更多的指消费端(client)和提供端(server)之间交互的数据接口的格式。为什么要存在契约测试?系统工程中存在这样的理论:线性系统(即复杂性随规模线性增长的系统)的可靠性等于组成它的各个组件的可靠性之乘积。这容易理解,因为整个系统正常工作的条件是必须每个组件都同时正常工作。如上图所述,三个组件共同支撑的系统,如果每个组件的可靠性是90%,那么整个系统的可靠性就是 90%×90%×90%=72.9%,我们可以看到系统整体的可靠度是低于任一组件的可靠性的。如果一个系统由100个组件组成,每个组件即使能达到99%的可靠性,那么整个系统的可靠性也会降到36.6%左右。我们常说复杂性是软件工程的最重要的特性,一个完善的软件系统必然是靠很多的子系统,组件共同撑起来的。根据上面的理论,如果是一个复杂的软件系统那么每一个组件的可靠性都对系统整体的可靠性有着非常重要的影响,排除组件本身的可靠性的因素,各个组件之间的相互依赖和调用关系也将会对系统的稳定性有着决定性的影响。随着业务的复杂度越来越高,整个系统也变得越来越庞大和错综复杂,在今天的软件工程开发中微服务已经不是一个新名词,在微服务的架构下通常一个client会与多个service相互交互,可以想象一下如果某一个服务的接口发生变化将会影响整个系统的运行。如下图展示的传统的大服务与微服务的区别。那么在微服务模式下如果保证各个服务端与消费端之间以及服务与服务之间能够可靠的交互呢?这就回到了到我们要聊的契约测试的话题。如下图,在服务端接口发生变化的情况下通过契约测试可以很容易的测试出契约不匹配,可以在集成测试之前就能发现问题,尽早解决。契约测试和单元测试,集成测试,端到端测试区别是什么?单元测试:通常是测试单个类,方法的可靠性它的价值在于快速的反馈某一个很小的功能点是否能准确的工作通过单元测试能够更明确的剖析你的实现逻辑如果用TDD的开发模式,能够做代码重构以及改善代码整洁度集成测试:关注的是各个服务之间交互测试接口连通性和流程的可用性端到端测试:从用户的角度验证整个功能的准确性和可用性测试的是端到端的流程,会加入用户数据验证功能是否可用不会关注在某一细小的功能点的实现关注的是整个业务流程,产生的业务价值大契约测试:测试接口和接口之间的正确性验证服务层提供的数据是否是消费端所需要的将本来需要在集成测试中体现的问题前移,更早的发现问题更快速的验证消费端和提供端之间交互的基本正确性契约测试解决能解决什么问题?可以使得消费端和提供端之间测试解耦,不再需要客户端和服务端联调才能发现问题完全由消费者驱动的方式,消费者需要什么数据,服务端就给什么样的数据,数据契约也是由消费者来定的测试前移,越早的发现问题,保证后续测试的完整性通过契约测试,团队能以一种离线的方式(不需要消费者、提供者同时在线),通过契约作为中间的标准,验证提供者提供的内容是否满足消费者的期望。一般契约测试是在单元测试之后,集成测试之前要进行的,首先在保证各自功能正确的前提下测试消费者和提供者的契约是否相匹配,然后再进一步的测试功能的完备性和整个业务流的正确性。写在最后本文主要浅显的介绍了契约测试是什么以及它的重要性,后续将会继续介绍契约测试的框架以及相关实践。

April 1, 2019 · 1 min · jiezi

深耕品质,腾讯WeTest《2018中国移动游戏质量白皮书》正式发布

本文由云+社区发表作者:腾讯WeTest原文链接:https://wetest.qq.com/lab/view/437.html对于游戏行业的不少人来说,2018年是一个多事之秋。放眼大局,游戏玩家中,70%用户已有3年以上的互联网经验,玩家们对游戏审美迅速提高。而相较2017年,游戏工委&伽马数据《2018年中国游戏产业报告显示》,中国游戏市场实际收入同比增长率,从23%下降至5.3%,这说明国内游戏行业增量已经转为了深耕存量的阶段。正如腾讯WeTest总经理方亮所言,游戏厂商依靠上游用户圈地的运动已经走到了尽头。但在险象环生的同时,2018年也更是充满变化与机遇的一年。2019年1月7日,腾讯WeTest《2018中国移动游戏质量白皮书》(以下简称“白皮书”)正式发布,现已于腾讯WeTest官方网站开放下载。通过腾讯大数据及其他第三方平台数据,白皮书着重从市场硬件、兼容、客户端性能、服务器性能、安全、玩家口碑、小游戏等玩家体验最敏感的质量视角进行数据采集与深入分析,客观地反应出了2018年中国移动游戏研发市场的现状与变化。图1.png【图1】《2018中国移动游戏质量白皮书》正式发布风险与机遇并存,风起云涌的2018从游戏品类出发观察,2018年间,已有不少产品在精品化与多元化上深挖起来。角色扮演类、动作类、策略类游戏仍占苹果应用商店的60%的份额。其中,角色扮演类游戏与动作类游戏的比重持续下降,但策略类游戏则依旧占比17%,风华正盛。这些头部游戏品类已进入以品质为导向的存量阶段,一并呈现出精品化、细分化、多元化的态势。图2.png【图2】App Store 游戏畅销榜Top1000游戏类型分布同时,移动游戏市场上也呈现出更为丰富的多元化特征,“战术竞技类”等涵盖多元化玩法的游戏开始登上主流舞台。而更为垂直的细分领域已衍生至14种,其中模拟游戏、家庭游戏、桌面游戏开始初露头角。另一方面,玩法轻便、即点即玩的小游戏也开始展露更多的能量。与此同时,2018年间,移动硬件设备的迭代更加速了。图3.png【图3】Android TOP100硬件配置占比统计屏幕方面,虽然16:9的设备仍是主流。此外,“刘海屏”“全面屏”等异形屏设备的覆盖人群更占据市场7%左右。这些来自用户需求与技术发展的变化,同样也为游戏开发者在游戏兼容性、客户端、服务器、安全性等一系列适配上提出了更高的要求。市场需求发展加上外部硬件的变化为游戏开发者们带来新的机遇,而想要在资源有限的情况下,于项目立项的阶段取胜,就要准确把握用户瞬息万变的审美需求。唯有掌握了曾在2018年发生的问题,拥抱变化,才能在2019年扭转乾坤。TOP 100 机型游戏综合性能数据公布,客户端问题玩家最为敏感腾讯WeTest企鹅风讯平台对抽样游戏在2018年产生的舆情调查显示,登录、卡顿、掉线问题最受玩家关注。从游戏分布来看,登录问题主要集中于动作类、策略类游戏;而卡顿问题则是动作类、角色扮演类游戏的高发问题。图4.png【图4】玩家舆情报警数量分布(客户端问题包括:登录、闪退、更新、下载、安装、启动、硬件和兼容问题)因此,针对腾讯大数据统计出的TOP 100 Android机型以及 TOP iOS机型,腾讯WeTest甄选了战术竞技、体育竞技、ARPG等游戏,一并综合生成性能评分,方便开发者在研发期间,选择性能调优阶段的参考机型。图5.png图6.png【图5】【图6】Android、iOS两大阵营主流设备性能表现首度公开腾讯手游性能大数据,战术竞技游戏服务器痛点同步揭露在2018年,根据苹果应用商店游戏畅销榜可知,多头寡头效应依然明显。而对于这些极具竞争力的产品标杆,开发者们无法详细掌握相关数据,因此更无法找到优化方向。为了助推手游行业标准建立,协助行业性能优化提升,腾讯WeTest首次公开腾讯游戏真实性能数据,战术竞技、MMORPG、体育竞技等主流品类游戏均囊括其中。图7.png【图7】腾讯Android手游性能大数据图8.png【图8】腾讯iOS手游性能大数据同时,由于站在2018年风口上的战术竞技游戏,通常采用UE4引擎机制,战斗服会承担大量同步、物理、逻辑等计算,因此对游戏的服务器性能带来众多挑战。白皮书中,全面剖析了来自服务器的技术性难点,值得开发者重点关注。图9.jpg【图9】战术竞技游戏服务器的痛点兼容性问题不容忽视,显示异常问题需要关注基于腾讯WeTest平台测试对Android产品大数据统计,平均每次测试能够发现游戏产品拥有10.1个兼容性问题,其中,显示异常、Crash问题占比超过70%。此外,功能问题亦占比14%。图10.png【图10】Android游戏兼容性问题类型分布随着Android机型内存升高,相较2017年,APK crash、安装失败等致命问题显著降低。但高配机型中异形屏的出现,导致UI异常问题频发。图11.png【图11】不同Android内存、系统机型兼容性问题分布情况同时,2018年中,Android 9 Pie面向全球发布,新的流量池正在被挖掘与重视。随着系统版本的升高与开发者的逐渐适应,Crash问题正逐步减少,但Android 8 的显示异常问题比重仍最高,需要重点关注。另一方面, iOS系统平均每次测试能够发现3-4个问题。其中,显示异常占比高达56%,需要开发者重点关注。而从iOS 10开始,安装失败与无响应问题迅速减少,基本为零。图12.png【图12】iOS游戏兼容性问题类型分布安全问题间不容发,强交互手游需重点关注外挂漏洞在移动APP中,游戏一直是安全漏洞的重灾区。腾讯WeTest对产品研发期与运营期手游安全情况进行比较,发现了最新问题:其一,强交互游戏依然是外挂漏洞的“温床”;其二,研发期游戏漏洞如果没有解决,会在运营期衍生多个外挂变种,严重影响手游平衡性;其三,动作射击类游戏由于其“强交互”特质,成为了外网外挂的“宠儿”。图13.png【图13】手游研发期与运营期间,平均单款手游安全问题占比而数据显示,最为致命的外挂问题下,“刷道具”为手游研发期最多的安全漏洞,定制外挂与通用修改器,则是手游运营期外网常见作弊方式。此外,在手游研发期存在的致命安全漏洞问题,将由于高收益在运营期会明显扩张,占比从研发期的34%上升至运营期的50%,因此开发者在手游研发期就要防微杜渐、未雨绸缪。图14.png【图14】手游研发期间,具体外挂安全问题占比全面分析小游戏测试难点,功能与适配是主流问题2018年,是小游戏爆发的元年,亦是小游戏精品化、重度化的一年。从小游戏的上线产品的比例来看,角色扮演类占据26%,休闲益智类占据24%,而在2018年下半年开始,一些策略战棋类的重度游戏类型开始出现在小游戏中,重度游戏在小游戏市场中,并非没有机会。而从产品本身观察,小游戏目前正在向精品化轻度化发展。图15.png【图15】2018年小游戏类型分布情况而相较手游通用测试模块,小游戏有着相对独立的测试内容。依托于腾讯旗下小游戏研发经验以及案例,白皮书显示,功能问题与适配问题占据小游戏测试问题主流,同时性能问题亦占据16%不容忽视。图16.png【图16】小游戏测试问题分布情况针对小游戏性能情况统计,有6%-7%的用户因游戏加载时间过长从而流失,小游戏用户流失情况与加载时长形成正比。因此,针对小游戏的加载时间,腾讯游戏根据不同机型档次,设立了加载时间上线标准。图17.png【图17】小游戏加载时间上线标准而在小游戏所面临的适配问题中,67%的问题来自显示异常,异形屏带来的UI适配问题非常明显,亟需开发者关注。 图18.png【图18】小游戏适配问题类型分布展望未来,腾讯WeTest与您同行在未来的2019年里,无论是游戏产品,亦或是互联网下的其他行业产品,统一、批量生产的简单模式定会被逐步迭代。正如WeTest总经理方亮先生所言,取胜关键必然是品质与创意,因此开发者更要做好严格的品质把控,务必珍惜来之不易的流量。在此之下,奔跑的不仅是开发者们,腾讯WeTest作为第三方平台也将与时俱进,超越品质,点亮游戏。作为一站式品质开放平台,腾讯WeTest一直致力于推动优质内容顺利产出,帮助开发者解决难题,在测试效率与质量上产生1+1>2的效果。在过去的一年间,腾讯WeTest对旗下兼容、性能、安全、舆情等服务进行了全方位品质升级,并持续输出云游戏、AI自动化测试、基于AI的同步控制系统、性能大数据分析、舆情大数据分析、舆情预警等前沿技术。而在未来,腾讯WeTest将从游戏出发,逐步将前沿的技术和服务辐射向金融、电商、视频等更多行业,助力更多精品的诞生。此文已由腾讯云+社区在各渠道发布获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号

February 14, 2019 · 1 min · jiezi