关于测试:好的测试数据管理到底要怎么做

你的组织是否施行了测试数据治理?如果你的组织解决要害或敏感的业务数据,测试数据治理必定会让组织受害。与测试数据相干的问题占所有软件缺陷的 15%,这一事实强调了测试数据的重要性。 本文将精确探讨测试数据经理职责、测试数据经理须要什么技能、以及雇佣测试数据经理的益处。 什么是测试数据治理?让咱们首先深刻理解测试数据治理 (TDM)的定义,治理满足自动化测试要求所需的数据的过程称为测试数据治理。测试数据经理能够应用测试数据治理解决方案来依据测试的须要创立测试数据。 测试数据治理解决方案必须确保它只提供高质量的数据。品质差的数据比齐全没有数据更糟,低质量的数据可能会产生不可信的谬误后果。保真度是测试数据的另一个重要要求:测试数据必须尽可能靠近实在生产数据。 测试数据经理的工作职责测试数据经理的主要职责之一是制订和执行组织的企业测试数据治理长期策略。此外,测试数据经理负责测试相干工作的估算、测试需要的剖析、反对工具的设计和开发、测试以及TDM流程和解决方案的施行。测试数据经理创立的流程既统一又可反复,以反对多种性能。这些性能能够包含针对不同利用的测试数据的反复辨认和屏蔽,以及依据须要频繁刷新和更新测试数据。 测试数据经理的另一个十分重要的职责是确保恪守 IT 平安指南和数据合规性法规。 测试数据经理还负责为 QA 测试、用户验收测试和性能测试提供数据。 测试数据经理须要哪些技能?必须确保测试数据经理具备解决该职位所有职责所需的技能。例如,他们应该晓得如何应用 TDM 工具来创立和开掘测试数据、可能主动疾速生成数据。这对组织来说是一个很大的益处,因为这样能够十分疾速地测试许多场景。 才华横溢的测试数据经理会发现测试数据中的低效率并对其进行优化以改良测试过程。比方,咱们须要不断的手动保留文件以笼罩原有旧文件。测试数据经理认为此过程迟缓且容易出错。在这种状况下,他们可能决定创立一个简略的脚本来验证文件版本工夫并一直主动保留。 合格的候选人应该可能了解和解决来自测试数据分析师和其余请求者的测试数据申请。他们应该可能与所有类型的分析师和工程师一起工作。因而,测试数据经理必须具备宽泛的工程技能。例如,Java(Hive、Apache、Hadoop)和 Scala(Apache Spark、Kafka)等技能是无益的。 测试数据经理还应该有应用 Excel 宏、QTP 和相似工具进行自动化的教训。此外,对大数据、Hadoop、Teradata、SQL Server 或 DB2 等数据库技术有很好的理解将有助于候选人治理数据存储工作。 最初,利用数据屏蔽技术的能力对于测试数据经理的职位来说是一项不容商讨的技能。屏蔽数据对于通过防止无害的数据泄露来爱护您公司的名誉和用户数据是必要的。 测试数据治理的益处1. 为自动化测试提供高质量数据延聘测试数据经理的最重要起因是确保将高质量数据提供给自动化测试算法。 如果提供给测试的数据品质很差,那么测试很可能会失败。如果应用低质量的数据,再多的策略也无法挽救这次测试。因而,如果没有高质量的数据,请不要破费大量工夫来创立具体的测试策略。 2. 使数据可用于测试测试数据经理的次要角色是测试数据的生成和测试自身。测试数据管理器可确保在须要时始终提供高质量的测试数据,这会使得测试过程顺利。 在测试须要时提供高质量的测试数据至关重要,这正是测试数据经理所做的。例如,假如开发团队正在期待无关新创建版本的测试反馈。但因为测试数据仍未创立,开发团队的速度变慢了。现实状况下,测试数据经理决定在开发新性能时须要创立哪些测试数据。这样,测试数据的可用性与新版本相一致,并且能够立刻对版本进行测试。这样就为开发团队节俭了贵重的工夫。 3. 帮忙创立记录在案的 TDM 流程测试数据经理能够记录 TDM 过程,这相当重要。领有文档化的 TDM 流程有助于其余团队成员理解测试数据经理如何生成测试数据并解决利用场景的测试。 如果您的测试数据经理销假或到职,组织依然能够依附测试数据经理记录的流程,团队将可能疾速了解和执行与 TDM 相干的工作。 4. 帮忙尽早发现错误测试数据管理器可确保您的 TDM 流程顺利运行。这会减少更快发现错误的机会。修复谬误的老本将随着检测它们所需的总工夫而减少。 对测试数据管理人员日益增长的需要因为产生的数据量急剧减少,对测试数据经理的需要也日益增长。现在生成的数据量微小,每天生成 2.5 千亿字节的数据。仅在过来两年中,咱们就生成了这个世界上有史以来生成的所有数据的 90%。 须要测试数据管理器的另一个起因是避免测试数据泄露。每次数据泄露的老本可能高达 400 万美元。然而,许多组织还没有看到测试数据治理的价值,目前只有 24%的组织覆盖了他们的数据。 填补测试数据经理的职位并不容易,该职位须要许多不同畛域的技能,如编程、工程、数据屏蔽和项目管理。公司之间在招聘具备正确技能组合的测试数据经理方面存在着强烈的竞争。 但实际上,一款适合的软件就能够满足如上大部分需要,为企业节约人力老本和工夫老本。 ZenData通用数据生成器,通过YAML文件,定义了一种简略的数据类型形容语法。使用者通过定义简略的字段取值列表、前缀后缀等配置,即可实现测试数据保护的目标。简洁、高效、灵便,是做单元测试、接口测试、性能自动化测试、性能测试、压力测试、打桩mock的无力帮手。ZenData次要两大性能是数据生成和数据解析。通过一个配置文件,能够应用ZenData生成所须要的各种数据。同样也能够对某一个数据文件,指定其数据类型定义的配置文件,实现到结构化数据的解析。ZenData能够用于手工测试场景上面测试数据的筹备,也能够用于自动化测试脚本外面的数据生成和解析。还能够一键生成海量数据用于性能和压力测试。

April 22, 2022 · 1 min · jiezi

关于测试:怎样写测试用例

测试用例是什么?一个测试用例就是为了验证软件性能,而设计的一系列操作。一个测试用例应该包含测试的步骤,测试数据,前置条件,后置条件,非凡的测试场景。可能还须要站在用户的角度来思考软件是否可能满足用户的应用。 怎么写测试用例?这篇文章将介绍如何写规范的测试用例,按上面的步骤进行: 创立测试场景(Test Scenario)Let’s create a Test Case for the scenario: Check Login Functionality为用户登录的场景创立测试用例: Step 1) A simple test case to explain the scenario would be(一个测试用例形容的测试场景) Test CaseTest Case Description1Check response when valid email and password is enteredStep 2) Test the Data.In order to execute the test case, you would need Test Data. Adding it below(筹备测试数据) Test CaseTest Case DescriptionTest Data1Check response when valid email and password is enteredEmail: guru99@email.com Password: lNf9^Oti7^2hStep 3) Perform actions.In order to execute a test case, a tester needs to perform a specific set of actions on the AUT. This is documented as below:(测试步骤) ...

April 10, 2022 · 2 min · jiezi

关于测试:声网的混沌工程实践

──混沌工程的落地不仅仅是工具办法的落地也是一种文化和设计的落地 本文旨在通过根本介绍和分享声网的局部教训,帮忙大家理解混沌工程,进步业务服务可靠性。 00 前言“什么是混沌工程?听起来很牛的样子。”“混沌工程与咱们故障演练有什么区别?”“是不是咱们通过了混沌测试就不会出问题?”“这个场景咱们不太会遇到,因为客户没有这么操作的。” 下面的话是在咱们推动混沌工程的工作时,大家会说到的几个广泛问题。所以在探讨混沌工程(Chaos Engineering)之前,咱们须要晓得什么是“混沌工程”,要解决什么样的问题,如何保障服务的稳定性。 近些年来,咱们软件系统的规模及复杂度始终一直的增长,传统的大单体模式曾经无奈适应当初的迭代及部署,所以当初的软件系统更加偏向于倒退分布式的零碎。分布式系统解决了咱们单体架构期间迭代速度慢、技术债高、部署麻烦等问题,但同时也带来了新的挑战。依据 Google 2021 的 Devops 调研报告[1] ,咱们能够看到越来越多的团队进行了上云的实际,而且也愈发重视软件交付经营的体验(software delivery and operational performance) 。如何在分布式系统的疾速迭代下,保障系统的稳固高可用,曾经是近年来的热点与难点。 如上图,咱们能够看到一个典型的微服务零碎,一个具备服务边界、松耦合的服务构造。传统的测试方法的确能够在肯定水平上确保服务间的可用性。例如契约测试能够尽早发现更多的问题,在频繁迭代的零碎下保障服务间的可用性,但这实质上也是服务调用方与提供方的一致性校验,只是在业务逻辑上做了更好的测试保障。对于微服务零碎的个性,例如高可用、服务依赖、分布式一致性等还是不足笼罩。现有的测试伎俩很难去辨认服务间的强弱依赖,也很难去验证高可用策略的齐备性,而混沌工程的呈现,给了咱们解决问题的思路以及办法。 01 概述那什么是混沌工程呢?混沌工程是在分布式系统上进行试验的学科,目标是建设对系统抵挡生产环境中失控条件的能力以及信念。混沌工程不是一项测试,有着明确的输入输出、是一个实践性的学科,用来察看零碎的薄弱点以进行改良。 咱们为什么须要混沌工程呢?在事实世界中,故障无处不在。咱们在外部也对一部分应用服务进行了回顾与统计,发现后果与混沌工程实验室《2021年中国混沌工程调查报告》[5]类似,这里援用混沌工程实验室的后果: 从中能够看到,变更类故障是引发重大事故的次要起因,线上机器也永远不会是 Stable 的状态。依据海恩法令,咱们能够得悉:每起严重事故背地,必然有 29 起轻微事变、300 起得逞征兆和 1000 个隐患。正当使用混沌工程可能很好的弱化以上问题,下图即为声网落地实际的后果。 混沌工程与咱们故障演练有什么区别?故障演练能够看做混沌工程的一种具体实际。故障演练是通过向指标零碎注入实在可能产生的故障来观测零碎的稳定性,但注入的场景绝对是固定、已知的。混沌工程除了在其根底上提供了一些理论指导以外,还是一个发现新问题的实际过程,例如对某个区域进行服务重启等。 02 如何施行在开始进行混沌工程之前,咱们要先确定咱们的零碎曾经有了一些高可用的个性,能够在局部异样的状况下持续失常工作。咱们能够依据混沌工程准则[2]中的根本实际准则进行如下试验: 1.首先,用零碎在失常行为下的一些可测量的输入来定义“稳固状态”。 2.其次,假如这个稳固状态在控制组和实验组都会持续保持稳定状态。 3.而后,在实验组中引入反映真实世界事件的变量,如服务器解体、硬盘故障、网络连接断开等。 4.最初,通过控制组和实验组之间的状态差别来反驳稳固状态的假说。 如果混沌工程施行下来发现两者状态统一,则根本认为是能够通过此故障的;如果状态不一,那咱们就找到了一个薄弱点,能够针对性地进步零碎的稳定性。 这其中蕴含两个关键点: 1.如何产生故障 2.如何观测故障 在混沌工程实际的相干文章中,议论最多的可能就是如何产生故障,市面上比拟风行的有 ChaosBlade[3]、Chaos Mesh[4] 等工具,工具的抉择是和理论业务状况密不可分的。依据 Google 的调研[1],当初抉择混沌云计划进行部署的公司也越来越多,上述的繁多工具也肯定无奈满足所有的需要,所以如何满足本身业务需要可能会是局部团队比拟头痛的问题。就声网的教训来说,自研是不可避免的,从易用性上来说也须要提供一个平台去提供全能力的反对。做比空想更重要,先实现并验证场景,而后在业务中进行试验,后续再进行优化可能是更好的一条路。 很多文章比拟少提及的点就是如何观测理论故障的产生,这反而是我认为最为重要的一个点。现如今,各公司根本都会有监控报警平台,但还是有很多状况在咱们的监控报警未响应时被用户所发现,即监控零碎未报警但用户先报障了。这才是咱们进行混沌工程最大的阻力——不能无效地发现问题。去解决此问题,在声网的实际过程中,咱们总结了几个可供参考的点: 1.补足所有根底资源监控,并在试验过程察看所有根底资源是否会受影响。咱们已经就遇到过内核异样导致 slab memory 泄露的状况,这个问题就须要根底资源的监控来进行发现。 2.欠缺业务 SLI(Service Level Indicator)指标。依据本身业务的特点以及客户关怀的点定义 SLI 指标来进行观测,例如 Netflix 就采纳 SPS(播放按钮的点击率)进行观测。指标的要求不肯定是恒定,能够有着某种变动的法则,但指标肯定要容易测量以及统计周期短。测量的难度越高,阐明描述业务状态的伎俩越少,须要进行思考及改良;统计周期越长,越有可能会略掉两头问题的点。 03 演进及评估规范上一章节次要介绍了混沌工程的一些办法以及思路,那咱们做了当前如何去评估,如何继续后退呢。从成熟度来看,咱们认为落地大略会分为几个阶段: 1.单体试验阶段:本阶段次要是在单节点上进行故障的场景开发、验证以及在单节点的故障试验。 2.故障施行工具化:本阶段会针对业务进行故障施行的开发以及在业务上进行试验,并初步进行自动化、工具化及集成进 CI/CD。 ...

April 7, 2022 · 1 min · jiezi

关于测试:接口测试二三事

本文次要介绍测试小团队在接口测试实际过程中遇到的一些事,如有雷同纯属巧合。 从 0 到 0.1——引入 HttpRunner对于一个简直是从零开始做接口测试的人来说,最简略的办法当然是要站在伟人的肩膀上了。于是我找了测试童鞋常常拜访的网站 TesterHome,在为数不多的我的项目里看到了点赞数最多的 HttpRunner,大抵浏览过后决定开干。 HttpRunner 我的项目构造简洁明了,对于初学者来说非常敌对。 ├── .env├── .gitignore├── debugtalk.py├── data├── reports└── testcases ├── demo_testcase1.yml └── demo_testcase2.yml大抵装置应用步骤如下: 执行 pip 装置命令 pip3 install httprunner;查看 HttpRunner 版本:hrun -V;应用脚手架疾速创立我的项目:httprunner startproject PROJECT_NAME;依据本人的我的项目批改疾速创立的 demo;执行 hrun 命令,查看报告。下图粘贴的是咱们我的项目的结构图和之前运行过的报告。 这里附上 官网文档 ,大家的疑难简直都能查阅官网文档解决。 装置好工具,搭好我的项目框架,就得着手本身我的项目了。大部分接口咱们都能够通过抓包工具取得,参数也很好解决,然而对一些有时效性的、须要加密、解密的参数来说,就须要咱们和开发童鞋多沟通学习了。等理解分明参数含意、参数作用域以及如何获得等问题后,咱们就能够好好利用 HttpRunner 的 hook 机制来解决咱们须要的参数: setup_hooks: 在整个用例开始执行前触发 hook 函数,次要用于筹备工作,如参数加密;teardown_hooks: 在整个用例完结执行后触发 hook 函数,次要用于测试后的清理工作,如 token 保留。上面截取的是咱们我的项目中登录接口的一条用例,在 setup_hooks 中调用了 set_signatures 函数进行参数加密、验签解决;在 teardown_hooks 中调用了 save_token 函数进行登录之后的 token 保留,这样在之后的接口中能够间接应用,不必反复调用登录接口。 - name: /xxxx/xxx/v1/codeLogin --验证码登录 request: headers: signature: ?????? aaaaaaaaa: ?????? bbbbbbbbb: ?????? json: CCCCCCCCC: ?????? DDDDDDDDD: ?????? phone: $phone method: POST url: xxxx/xxx/v1/codeLogin setup_hooks: - ${set_signatures($request)} teardown_hooks: - ${save_token($response)}至此,咱们的接口测试算是开始了。 ...

March 28, 2022 · 1 min · jiezi

关于测试:阿里云-VPC-内网性能测试最佳实践

简介:本文介绍了在阿里云 VPC 内网执行性能测试的办法。相较于传统的公网性能测试,VPC 内网性能测试齐全在客户 VPC 环境进行,无需裸露服务到公网,安全性更高,灵活性更强。 作者:风起 背景随着互联网的疾速倒退,互联网衍生进去的多种工具、服务早已融入咱们工作、生存的每个角落,因而互联网服务的稳定性也更加重要,如网络挂号问诊、网上政务办理、网络生产娱乐等更是与大家的生存非亲非故。而性能测试作为验证服务稳定性的重要伎俩也日益受到互联网服务提供商的器重。 目前业界支流的性能测试工具均是从公共网络收回性能测试申请,模仿公网流量,这无疑可能尽可能模仿用户应用互联网服务时的实在流量,然而这种形式也存在一些问题,如: 带来额定的性能测试费用,公网流量从客户端到服务端的过程中,经由多个运营商网络,会产生额定的流量带宽费用,对于大规模性能测试,流量费用更是会远超性能测试过程中的机器老本 无奈测试对安全性要求较高的服务,如金融、保险、数据存储等业务若凋谢公网拜访,可能会带来数据泄露等平安问题,因而无奈从公网发动性能测试 带来部署、革新老本的回升,当服务依然在开发过程中时,服务在开发过程中可能须要频繁地性能测试并依据性能测试后果来调整服务,该状况不适宜凋谢公网拜访,因而无奈从公网发动性能测试 针对以上问题,本文介绍了在阿里云 VPC 内网执行性能测试的办法。相较于传统的公网性能测试,VPC 内网性能测试齐全在客户 VPC 环境进行,无需裸露服务到公网,安全性更高,且用户可通过 VPC 自定义路由表,买通本地数据中心造成混合云架构,具备更强的灵活性,此外更是能够在微服务开发阶段,针对 VPC 内网的每个微服务执行性能测试,能够大幅晋升性能测试的效率,节俭性能测试老本。 什么是阿里云 VPC 专有网络首先,介绍下什么是阿里云 VPC 专有网络(也称 VPC 内网)。VPC 专有网络是您专有的云上公有网络。您能够齐全掌控本人的专有网络,例如抉择 IP 地址范畴、配置路由表和网关等,您能够在本人定义的专有网络中应用阿里云资源,如云服务器、云数据库 RDS 和负载平衡等。 如下图所示,每个专有网络都由至多一个私网网段、一个路由器和至多一个交换机组成。 性能比照及特点相较于经典网络在不同客户间是物理联通的,专有网络 VPC 具备安全可靠、灵便可控、灵便可用以及较强的可扩展性。 每个 VPC 网络对应一个虚拟化网络,VPC 间相互隔离能够通过平安组规定、访问控制白名单等形式灵便地管制拜访 VPC 内云资源的出入流量能够在 VPC 内创立不同子网,同时也能够和本地数据中心或其余 VPC 相连,扩大网络架构总的来说,VPC 内网是阿里云的根底网络设施,为客户部署在云上的服务提供了平安、联通的劣势。 公网与 VPC 内网性能测试的区别在理解 VPC 内网的根本特点后,介绍下公网性能测试与 VPC 内网性能测试的区别,从被测试服务的视角来看,两者的区别次要在于流量源头不同。 公网性能测试:流量源自公共网络,网络路由的过程中可能波及到多个运营商网络设备VPC 内网性能测试:流量源自 VPC 内网,网络路由的过程中仅波及 VPC 内网交换机,对外部网络不可见 因为两者的流量源头不同,因而两者的流量路由不同。公网性能测试流量会经由公共网络,而 VPC 内网性能测试流量只会在 VPC 内网流转。 VPC 内网性能测试实用场景理解公网性能测试与 VPC 内网性能测试的区别后,什么状况下咱们须要应用 VPC 内网性能测试呢?次要有以下几种场合: ...

March 25, 2022 · 2 min · jiezi

关于测试:干货|一次完整的性能测试测试人员需要做什么

作者介绍邓宝菊(Kiki Deng),10年软件测试教训,4年团队治理教训,以后任职研发部架构品质工程部,整体负责研发部测试团队的效力、工具流程建设和人才培养。 前言一、 标准性能测试施行流程的意义 标准的性能测试施行流程可能增强测试工作流程管制,明确性能测试各阶段应实现的工作,领导测试人员正确、有序的发展性能测试工作,进步各角色在性能能测试中的工作效率。本次分享的性能测试施行流程是性能测试发展的”指导方针”,心愿帮忙您能够早日成为性能测试”达人”。 二、 性能测试施行流程 性能测试流程分为五个阶段,别离是【需要调研阶段】→【测试筹备阶段】→【测试执行阶段】→【测试报告阶段】→【测试总结阶段】。 每个阶段做什么事件?重点关注什么? 1.需要调研阶段 注释 1.1. 阶段概述调研阶段的次要工作为:组建工作小组、我的项目创立、需要剖析、模型构建、定制性能测试具体施行打算。 重点关注:需要调研、须要剖析、模型构建 1.2. 关键点形容需要调研分为两个步骤进行:需要调研、需要剖析。 该工作是性能测试必须的工作环节。工作产出文件为《XX我的项目性能测试需要表》,如:《云智慧\_XXX零碎\_XXX模块性能测试需要表》。 此阶段模型构建次要是业务模型构建。 1.2.1需要调研Ø 需要调研工作由性能测试施行人员牵头负责,产品经理、开发工程师、运维工程师配合实现; Ø 需要调研的次要内容为: n 零碎线上环境的性能需求,例如性能需求、可靠性需要、可维护性需要等; n 与零碎性能需求相干的其它信息,包含零碎信息(如线上环境硬件、参数配置、零碎架构与部署形式、关联系统部署等)、业务信息(要害业务逻辑与解决流程、交易列表、交易量信息、业务散布法则等)、生产问题、文档资料等方面,并对收集到的信息进行汇总整顿,实现看待测系统业务与技术的整体理解; Ø 开发项目组、需要部门、运维部门等测试工作提出方应填写《云智慧\_XXX零碎\_XXX模块性能测试需要表》中的“工作信息”和“测试背景”等信息,提出的测试需要,简略文字不能阐明的,可附加文件; Ø 性能测试小组的施行人员将调研获取的其它内容填入《云智慧\_XXX零碎\_XXX模块性能测试需要表》; Ø 对于新立项零碎或零碎新开发版本,《云智慧\_XXX零碎\_XXX模块性能测试需要表》应与《需要规格说明书》中的性能需求相一致。 1.2.2需要剖析Ø 需要剖析的根本流程是: n 首先,由性能测试工程师依据需要调研所获取的信息进行剖析,将《云智慧\_XXX零碎\_XXX模块性能测试需要表》中的性能需求转换为具体的性能需要指标值; n 其次,依据测试环境与线上环境的差别剖析,由性能测试工程师将线上环境条件下的性能需求指标值转换为本次测试环境条件下的性能需要指标值; 例如:TPS(Transaction per Second):零碎每秒解决交易数,推导过程如下, 当火线上APP1.0试用零碎次要为查问类交易,交易占比40%,零碎生产交易量统计为1个月约20W笔,假如APP2.0零碎上线后业务量激增到每日查问类20W,则每日总交易量T达到: T = 20W/40%=500000笔/日 零碎解决能力TPS推导:APP2.0上线后交易量最大500000笔/日,零碎晚间简直无交易量,按2:8准则推算,则(500000*80%)/(8*20%*3600)=69.4笔/秒,取整为70笔/秒,每年按业务量增长50%计算,则一年后零碎解决能力指标约等于70+70*50%=105笔/秒。 稳定性交易量推导: 取零碎解决能力的60%_时长=105笔/秒*60%*8_3600=1814400笔。 通过剖析后汇总成测试指标值 Ø 需要剖析其次要内容和规范性要求如下: n 性能测试需要:应精确形容性能测试指标项及需要指标值。 n 零碎范畴:应精确形容性能测试需要指标值所依靠的测试范畴信息,如应形容测试范畴的关联系统逻辑示意图,及各关联系统的信息;在对系统部分环节进行测试时,也需说明具体测试范畴,详细描述被测系统的相干子系统。 n 环境差别剖析:应精确形容性能测试需要指标值所依靠的测试环境信息,如须形容测试环境的总体网络拓扑结构图、测试环境机器配置表(数量、型号、资源、操作系统)、以及相应的软件配置、重要参数配置等。同时应精确形容线上环境的上述信息,并进行具体的环境差异性剖析。 以上剖析内容将作为性能测试计划的重要组成部分。 1.2.3模型构建例如:业务模型依据200X年XX月XX日~200X年XX月XX日期间的业务顶峰日200X年XX月XX日的业务量统计,通过稍微调整得出以下业务模型,要求业务模型交易至多占线上交易量的90%以上: 2.测试筹备阶段 2.1阶段概述测试筹备阶段是性能测试工作中重要阶段。在筹备阶段,须要实现业务模型到测试模型的构建、性能测试实施方案编写、测试环境的筹备、性能测试案例设计、性能测试监控方案设计、性能测试脚本,及相干测试数据的筹备,并在上述相干筹备流动完结后依照测试计划进行准入查看。 重点关注:测试模型构建、方案设计、案例设计、数据筹备等 2.2关键点形容2.2.1测试模型构建测试模型构建工作由性能测试施行人员实现; 在需要剖析的根底上,对调研收集到的相干材料与信息进行剖析梳理,重点剖析跨零碎的交易门路、交易关联关系、数据的解决与流转、业务量、交易比例、典型交易,以及零碎的解决能力等性能测试点,针对性地确定多个业务场景,并为每个场景抉择一套具体的业务交易集,依照业务量比例构建相应的测试模型。 本阶段的产出物为,各个测试场景,以及场景中典型交易及所占比率。 ...

March 15, 2022 · 1 min · jiezi

关于测试:软件测试缺陷

一、缺点介绍1.1 缺点的定义软件在应用过程中存在的各种问题叫做缺点(bug)1.2 缺点的断定规范软件未实现需求说明书明确要求的性能----少性能软件呈现了需要说明书中指明不应该呈现的谬误----性能谬误软件实现的性能超出需要说明书没有要求的性能----多功能软件未实现需求说明书中未明确但应该实现的性能----隐形性能缺失 页面有跳转,应用到该数据的中央同步更新用户体验差,运行迟缓,不易应用、软件难以了解----不易应用1.3 缺点的产生起因目标:通过缺点起因分类,可能验证公司职能部门素质,提交bug时能够对bug分类,不便后续总结需要阶段:需要形容不易了解,有歧义,谬误等设计阶段:设计文档存在谬误或者缺点编码阶段:代码呈现谬误运行零碎:软硬件零碎自身故障导致软件缺陷1.4 缺点的生命周期 1.5 缺点的核心内容如何编写测试报告 1.6 缺点提交因素缺点的编号:示意缺点唯一性缺点的重大级:示意缺点的重大水平(S1 S2.....)缺点的优先级:示意缺点修复的紧急水平 (P0 P1 ...)缺点的类型:性能、性能、界面(UI)、兼容、平安....缺点的状态:new closed (reopen) 1.7 用例执行执行用例模板 减少一列理论后果(示意曾经执行的用例)执行的后果 通过(pass)失败(failed)阻塞(block):示意用例某个步骤执行不上来了,找开发解决该问题不实用(N/A):示意曾经编写的用例作废了执行的前提 开发的零碎曾经实现冒烟测试通过二、编写缺点报告2.1 缺点的跟踪流程目标:搞清楚工作中如何和开发协同解决Bug,直到bug革除(敞开) 本人叙述:测试进行提交缺点,领导调配Bug,开发来验证该bug 是否反复,如果反复,则敞开缺点;如果不反复,则验证该缺点是否是真正的bug,如果不是,则敞开缺点;如果是,则依据该bug的优先级来评测该缺点是否推延解决,若优先级较低,则能够在后续版本中进行修复;若优先级较高,须要尽快解决该缺点,开发缺点修复实现后,测试要再次依据测试用例来进行回归测试,若验证通过,则敞开缺点,若不通过,则从新关上缺点。注:语言组织可能不好,仅供参考,多多指教2.2 缺点报告注意事项可重现----缺点要可重现唯一性----一个缺点上报一个问题规范性----合乎公司或者我的项目要求2.3 缺点编写标准精确、具体简洁易懂、秩序清晰 2.4 缺点报告模板 注:依据本人公司的模板来,能够不必这个

March 6, 2022 · 1 min · jiezi

关于测试:测试用例方法

一、 解决穷举场景重点:应用等价类划分法1.1 等价类划分法 重点:无效等价和单个有效等价各取1个即可。步骤:1、明确需要2、确定无效和有效等价3、依据无效和有效造数据编写用例1.2 案例(qq非法验证)需要:验证6~10自然数的qq非法自然数:自然数由0开始,一个接一个,组成一个无穷的个体 1.3 案例(城市电话验证)需要:1. 区号:空或者是三位数字2. 前缀码:非“0”且非“1”结尾的三位数字3. 后缀码:四位数字 1.4 总结(利用场景)针对:须要有大量数据测试输出,然而没法穷举测试的中央。输入框下拉列表单选复选框典型代表:页面的输入框类测试。情谊提醒:残缺的用例应该是等价类和边界值一块写 二、解决边界限度问题阐明:应用边界值解决边界位数限度问题。2.1 边界值阐明 提醒:1、无关范畴限度,最多7条用例(临时未优化)2、边界值能解决位数限度问题,然而不能解决类型问题(要联合等价类)2.2 步骤1、明确需要2、确定无效和有效等价3、确定边界范畴4、提取数据编写用例2.3 案例1(题目长度大于0,小于等于30个字符) 2.4 案例2(6-10位qq号的合法性) 2.5 优化(7点优化5点)重点:开内闭外(开区间选蕴含的点,闭区选不蕴含的点)开区间:不蕴含边界上的点(没有等号)。如:a<10闭区间:蕴含边界上的点(有等号)。 如:a<=10 注:下面红色标记局部是优化后数据不须要的用例 2.6 总结强调:单个输入框,罕用的形式 边界+等价类在等价类的根底上针对有边界范畴的测试数据输出的中央(重点关注边界)常见词语形容:大小、尺寸、分量、最大、最小、至少、至多等润饰词语典型代表:有边界范畴的输入框类测试三、解决多条件有依赖关系测试 重点:应用断定表3.1 介绍 3.2 步骤1、明确需要2、画出断定表1)、列出条件桩和动作桩2)、填写条件项,对条件进行全组合3)、依据条件项的组合确定动作项4)、简化、合并类似规定(有雷同的动作)3、依据规定编写测试用例3.3 案例(订单) 3.4 练习(文件批改) 3.5 断定表总结提醒:1、多条件之间有依赖关系,应用断定表来进行测试笼罩。2、断定表个别适宜4个以内条件依赖关系3、如果条件超过4个,就不适宜笼罩所有条件,应采纳(正交法)来解决。四、业务测试笼罩重点: 1、笼罩业务测试,须要应用流程图法 2、先测试业务,在测试单功能、单模块、单页面4.1 流程图 提醒:业务用例是依据流程图来梳理的,须要先理解流程图 作用:梳理业务用例4.2 案例(ATM)

March 6, 2022 · 1 min · jiezi

关于测试:软件测试用例设计方法

1、等价类法:等价类依照理论场景的无效和有效分为无效等价类和有效等价类: 对于取学生问题在60到80之间的场景筛选: X<=60 60<x<80 x=>80 x<60 和 x >80就是有效等价类 而 60<x<80则是无效等价类 也就是设计用例的时候,这些就是用例数据的验证范畴。 对于等价类我的了解,字母,数字,字符,这些都属于大的等价类,都是再设计用例时须要思考到的点。 2、边界值法:边界值法,则拿下面等价类的区间就能够进行清晰,对于60<x<80来说 60 80就是其边界值,对于边界值左近的值都能够逐个验证。 边界值次要思考的是非凡场景如0,null,None,""等。 3、因果图及断定表:这两个通常能够一起应用,也就是把因果关系理顺后,能够通过断定表进行关系的明晰化 因果图次要思考的场景(这几个场景根本够平时应用) 恒等 起因A呈现 ---> 后果B呈现,起因A不呈现 ---> 后果B不呈现 非 起因A不呈现 ---> 后果B呈现,起因A呈现 ---> 后果B不呈现 与 起因A和起因B同时呈现 ---> 后果C呈现 或 起因A和起因B任意呈现 ---> 后果C呈现 当然还有 互斥(起因A呈现,B不能呈现)--> 后果C呈现,(起因B呈现,A不能呈现)--> 后果C呈现 蕴含 感觉和或很像 惟一 是所有起因中只能有一个成立,则后果成立 要求 有起因A则B必须呈现,才有后果C 屏蔽 A为1 B为0 A为0 B为任意 后果呈现C 4、场景法测试过程先确定根本流程,有一个根本流 再根本流的根底上进行减少场景,通过扭转流程中的不同阶段,确认新的场景; 5、谬误倒推法假设谬误场景,而后去倒退可能产生的起因,进而进行验证(如果后面用例笼罩较全面,此处用例应该已被蕴含)

January 27, 2022 · 1 min · jiezi

关于测试:软件测试简单分享

一般测试:1、先确立规范,也就是在测试前先明确产品需要,规范建设后能力进行验证 (产品文档中标注名称限度、输入框长度限度、特殊字符限度等); 2、测试计划 测试环境+人员分工 测试重点模块把控,对模块进行可能呈现的问题提前预测,给出测试策略。 接口+性能的工夫调配 性能测试是否须要,须要确定性能测试的规范(服务器性能、接口性能) 3、测试用例 失常全流程笼罩+异样场景(必须得思考)+边界+性能(大数据状况) 4、数据的整体流转把控,理解整个数据的运作,可能通过日志迅速定位某些问题,这外面有个细节,也就是能够通过定位问题的形式来理解整个数据流转,也就是发现一个问题,本人尝试定位,先本人过一遍,而后把走不通的中央去找开发帮助,放慢对流程的了解; 5、数据库sql语句的验证(性能+是否有慢sql) 整体的思路要验证笼罩到的点,我总结就是增删改查+进行,重点个别都在查上,也就是各种数据的展现,及数据准确性的验证,申请+响应流程的笼罩(前端F12查看接口+间接验证后端接口),进行中的场景进行操作,同时思考并发的状况。 6、测试有工夫的话,能够理一下开发的代码,看下代码中对哪些场景进行笼罩,哪些没有笼罩到,写入数据库的数据是否失常合乎产品预期等; 7、对于开发应用的框架以及是否分库、是否减少缓存等,做到成竹在胸。 罕用到的工具: postman:一般单个接口验证(能够设置变量并应用,使某些数据变成专用数据) jmeter:压力测试+多批量数据验证(同一套代码利用于好多商家,笼罩是否这些商家都有数据) fiddler:抓包(次要作用就是验证前后端数据交互,以及某些平安层面的验证); 自动化测试:1、个别smoke验证,须要重复性比拟多的验证,都能够通过自动化来进行,接口层面验证根本合乎罕用要求,除非界面很稳固用selenium进行UI自动化验证也是能够; 2、写代码时倡议多细分,把一些看似简单的逻辑肯定要多拆分; 3、发现代码问题时最次要的是可能尽快定位和出现问题,出现不是复现,也就是要有日志或者断言等,要让代码在哪出问题,变得很明确 4、写自动化或者其余代码时,倡议肯定要写上正文,把每一个重点步骤或者逻辑要干的事件写上正文,不便本人和其他人当前查看就间接过逻辑,以及之后问题的定位。 测试我感觉就是仔细+全面+深度, 要有测试策略(重点),对工夫调配要清晰,测试过程那些是须要关怀的重点关怀,哪些是须要去推动开发解决的就尽快抛出问题,也就是不捂问题;下来就是对软件测试过程中整体数据流转肯定要清晰。 心愿对大家有帮忙!

January 25, 2022 · 1 min · jiezi

关于测试:推荐八个高效测试工具

1.Fiddler:网络抓包工具 Fiddler在测试中个别用于篡改接口申请或接口返回数据以测试前后端业务场景或对异样性能的兼容.它能监控进出设施的http协定申请,并且反对从新编辑申请与返回,从而测试前端页面对不同后果的反馈。 官网下载地址:https://www.telerik.com/fiddler2.Apifox:接口测试工具 Apifox作为外乡软件,在接口测试方面体现不亚于postman,它提供了欠缺的 API 场景测试(流程测试)性能,保障接口数据的正确性。另外具备可视化的断言、提取变量、数据库(SQL)操作等性能。除此之外还反对自定义前置/后置脚本,主动校验数据正确性。同时,也能进行测试用例治理,执行自动化测试用例并输入测试报告。 官网下载地址:https://www.apifox.cn/#3.Selenium:自动化测试工具 偏web端 Selenium框架底层应用JavaScript模仿实在用户对浏览器进行操作。测试脚本执行时,浏览器主动依照脚本代码做出点击,输出,关上,验证等操作,就像实在用户所做的一样,从终端用户的角度测试应用程序。可应用Java,Python等多种语言编写用例脚本。 官网下载地址:http://www.selenium.org.cn/4.Appium:自动化测试偏挪动端 Appium 是一个跨平台的开源工具,同样的API可能复用到ios,安卓,Windows等多平台上,做到在多个不同平台之间复用代码。 官网下载地址:http://appium.io/5.Jmeter:性能测试,自动化测试 Apache JMeter是一款基于Java的压力测试工具。它次要被用来对服务器或网络或app模仿微小的负责,测试不同等级的压力级别下,被测对象的体现,从而剖析并优化整体的性能。除此之外,它还能对应用程序做性能/回归测试。罕用在JAVA程序,数据库,ftp服务器,CGI脚本的压测中。 官网下载地址:https://jmeter.apache.org/6.Jira Software:项目管理,bug跟踪 JIRA 是一款问题跟踪治理软件工具,能够对各种类型的问题进行跟踪治理,包含bug、工作、需要、改良等。商用软件,提bug,验bug,测试工作日常简直都离不开它。 官网下载地址:https://www.atlassian.com/sof...7.Testlink:测试用例管理工具 TestLink 是基于web的测试用例管理系统,次要性能是测试用例的创立、治理和执行,并且还提供了一些简略的统计性能。 TestLink非常适合测试团队合作。管理员用户能够治理测试用例分配任务,测试用户和测试后果也可能在团队之间同步。同时它反对测试用例的主动和手动执行。测试人员能够用这个工具在很短的工夫内生成测试计划和测试报告。 官网下载地址:https://www.testlink.org/8.Testin:云测平台 提供云端兼容测试,近程真机测试和自动化测试,平安测试,及针对出海我的项目的海内测试。 企业做兼容测试的老本很高,须要大量购买真机,云测平台容许测试人员同时提测多个机型,笼罩到市面绝大部分机型,能够帮忙用户发现App的装置、闪退、无响应等根底兼容问题。 官网下载地址:https://www.testin.cn/总结 工具把握不在多,而在于可能笼罩到日常工作场景,多快好省地实现测试工作。 以上8个测试工具根本笼罩了功能测试,接口测试,自动化测试,性能测试,项目管理,测试治理,把握好这8个根本可能胜任日常的测试工作了。

January 24, 2022 · 1 min · jiezi

关于测试:分享实录测之以恒代码精进而不觉-IDCF-DevOps案例研究

内容起源:DevOps案例深度钻研第6期——继续测试实际钻研战队(本文只展现局部PPT及研究成果,全程视频请移步文末)转载请注明出处。本案例内容贡献者:唐正美、冯建伟、程琳琳、欧建斌、熊小龙、李静、李国有、薛建 第一篇:倒退历程1.1 软件测试的倒退历程原来软件测试也能寻根究底(不是程序员拍脑袋想进去的),也有其存在的偶然性与合理性。 迄今为止,软件测试的倒退一共经验了5个重要期间: 1957年之前-调试为主(Debugging Oriented)1957–1978-证实为主(Demonstration Oriented)1979–1982-毁坏为主(Destruction Oriented)1983–1987-评估为主(Evaluation Oriented)1988–至今-预防为主(Prevention Oriented) 1)调试为主20世纪50年代,计算机刚诞生不久,只有科学家级别的人才会去编程,需要和程序自身也远远没有当初这么复杂多变,相当于开发人员一人承当需要剖析、设计、开发、测试等所有工作,当然也不会有人去辨别调试和测试。然而谨严的科学家们曾经在开始思考 “怎么晓得程序满足了需要?”这类问题了。 2)证实为主1957年,Charles Baker在他的一本书中对调试和测试进行了辨别: 调试(Debug):确保程序做了程序员想它做的事件。测试(Testing):确保程序解决了它该解决的问题。这是软件测试史上一个重要的里程碑,它标记测试终于自立门户师出有名了。 过后计算机利用的数量、老本和复杂性都大幅度晋升,随之而来的经济危险也大大增加,测试就显得很有必要了,这个期间测试的次要目标就是确认软件是满足需要的,也就是咱们常说的“做了该做的事件”。 3)毁坏为主1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: The process of executing a program with the intent of finding errors.测试是为发现错误而执行程序的过程。这个观点较之前证实为主的思路,是一个很大的提高。咱们不仅要证实软件做了该做的事件,也要保障它没做不该做的事件,这会使测试更加全面,更容易发现问题。 4)评估为主1983年,美国国家标准局(National Bureau of Standards)公布“Guideline for Lifecycle Validation, Verification and Testing of Computer Software”,也就是咱们常说的VV&T。VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation)。 Verification: Are we building the product right?Validation: Are we building the right product?人们提出了在软件生命周期中应用剖析、评审、测试来评估产品的实践。软件测试工程在这个期间失去了疾速的倒退: 呈现测试经理(test manager),测试分析师(test analyst)等职称。发展正式的国际性测试会议和流动。发表大量测试刊物。公布相干国际标准。以上种种都预示着软件测试正作为一门独立的、业余的、具备影响力的工程学倒退起来了。 5)预防为主预防为主是当下软件测试的支流思维之一。STEP(Systematic Test and Evaluation Process)是最早的一个以预防为主的生命周期模型,STEP认为测试与开发是并行的,整个测试的生命周期也是由打算、剖析、设计、开发、执行和保护组成。也就是说,测试不是在编码实现后才开始染指,而是贯通于整个软件生命周期。 咱们都晓得,没有100%完满的软件,零缺点是不可能的,所以咱们要做的是:尽量早地染指,尽量早地发现这些显著的或暗藏的bug,发现得越早,修复起来的老本越低,产生的危险也越小。 ...

January 19, 2022 · 1 min · jiezi

关于测试:Jmeter接口测试csv文件

1、进入jmeter后先在测试计划中建设一个线程组,开始应用的前提: 2、线程数默认是1,能够调整为本人理论须要的次数,jmeter个别的利用场景是给压测应用的,也能够用于一般接口测试: 3、测试http接口相干申请验证场景,间接在线程组里增加HTTP申请组件 http协定这块就填写对应协定,服务器填IP+端口或者间接填对应的域名,申请形式能够抉择get/post,申请参数在音讯体数据外面填写即可: 在应用http组件时肯定要配上http申请头,如果申请头是专用的,能够间接放在线程组外面,失常就是放在对应的request上面:: 场景:须要验证多个商家的数据申请: 能够看到我这外面援用了一个变量,${merchant},这个中央应用变量是减少了csv数据文件设置,能够把这个组件放到线程组上面,整个线程组的申请线程都能够应用此变量了: 增加的文件能够为CSV,txt等格局的,不局限CSV,我通常小场景都是用txt格局,按列来辨别变量,如果有多列,则用,号来进行辨别,在应用txt格局时,txt外面的数据也用,号分隔如图所示,在应用变量时,则保持一致如merchant,name,age,在应用时则用${}援用各自的值即可。{ "merchantNum": ${merchant} } 4、通常应用查看后果数和聚合报告就能满足应用: 在监听器外面: 5、响应断言:失常状况应用蕴含即可满足,但有些场景须要取,非值的状况,也就是数据为空,则为异样,此时能够先把值为空筛选进去,再抉择否,则最终筛选进去的就是该值不为空的状况:

January 12, 2022 · 1 min · jiezi

关于测试:前端测试的反模式-IDCF

一、过于关注实现细节的测试在为前端我的项目编写测试用例的时候,你兴许和我一样,曾遇到过以下困扰: 明明进行了性能正确的改变,测试却挂了。修复测试有时候得认真浏览各种mock的细节,或者去理解很多本没有必要晓得的代码逻辑。最初修测试花的工夫比进行业务改变花的工夫还要长(甚至长很多)。对代码进行提取形象之后,为各个组件或函数增加测试,实际上是用测试工具的API去反复业务代码的外部实现逻辑(有时候还很麻烦!)。任何失常的重构都会导致测试失败,你原本心愿测试能通知你什么样的批改是对的,后果当初测试只能通知你代码的确有被批改。测试写好,覆盖率进步,本应信心十足地认为代码变得强壮了,可是扪心自问,你晓得本人写的这个测试弱点在什么中央,或者说还有多少细节没有涵盖。你精心模仿了一个条件,去触发逻辑流程,并且测试通过,可是在实在的浏览器交互中用户兴许并不能触发这个条件。因而,同样的情理,你在本人的代码通过了别人写的测试之后,也不能确定实在场景下没有问题,只好把后续的重任交给QA。造成下面三个问题的起因不止一个,但测试过于关注实现细节在我看来是最次要的。 第一个问题,明明是正确的改变,可是测试不止是验证业务性能,还对实现细节提出了不该提出的要求,比方要求你的函数承受跟以前一样的参数,返回值必须是字符串而不能是数组等等。可是这个函数只是实现流程中一个小小的环节,兴许在下次重构时就会不复存在。第二个问题很相似,如果测试代码去反复实现细节,不论进行正确还是谬误的重构,你都得把测试改一遍,那原先的测试又能提供什么价值呢?第三个问题有时产生在,测试的实现细节,不能笼罩整个实在交互流程的时候。用户点击的是屏幕上的button按钮,而测试的终点是onClick事件被触发。前面的逻辑被验证胜利,可问题偏偏产生在点击环节,实在的点击兴许因为按钮状态而无奈触发onClick事件。因而,才会有人提出前端的测试应尽量去模仿实在的用户行为,Testing-Library就在其官网的“领导准则”章节,激励使用者尽量仿照利用实在的应用形式去编写测试,并明确提出,你的测试越靠近用户的实在应用形式,它就能给你越多的信念。换句话说,你的测试应该尽量少用函数去手动触发,而要尽量多地利用测试框架给你的API,去模仿Input框的输出,按钮的点击,表单的提交等等。 如此一来,有的函数,你也无需写测试证实它的返回值如你所愿,须要写的,是页面显示了期待的文字,产生了预期的变动,进行了对应的跳转。你会发现,这时的测试就像写在卡里的AC一样。只有测试是通过的,你就有理由置信主体性能没有毁坏,而不只是函数工作失常。 二、没有独立业务含意的测试单元看到下面的计划,你可能会立马会想到一些问题。 首先就是测试流程可能会很长,从用户填完表单,点击提交,到期待的变动呈现,当中可能经验了好几个函数的执行,连带着一系列的副作用。模仿这一系列行为,仿佛是集成测试与E2E测试该干的事件。如果我的项目中大部分逻辑都是由这种测试去笼罩,看起来与测试金字塔所说的由单元测试作为地基是矛盾的。 我认为,当实在遇到的问题碰到了某种教条标准时,后者该适当地退让。 激励多写单元测试的起因在于它们成本低,有针对性。可是在前端我的项目外面,很多模式上的单元并没有独立的业务含意。 拿React我的项目举例,好多函数只是因为它们在模式上能够被抽取进去,就被拎到一个独自的文件里,从而升高主函数的复杂度。如果给它写单元测试,你就不得不手动触发它的参数变动,或者检测它的参数函数是否有被调用。 咱们写的React hook尤其如此。很多时候抽取自定义的hook是出于逻辑上的起因,把相干的逻辑和数据聚合到一起,加重UI组件的累赘,但这些hook往往没有一个能够轻易解释分明的业务含意,而且它们也不会被其它中央应用。 所以这类 “单元”只是长得像单元而已,它们其实只是一个实现环节。这里残缺的UI操作流程,才更像一个有价值的单元,只管它们在模式上可能超过了单个函数的领域。 但我不想矫枉过正,的确有不少状况下,一个util函数,一个hook,一个很小的公共组件,都是有独立存在的价值的,因而,它们也该当被视为真正的单元,的确“有资格”领有本人的专属测试。 testing-library上面有一个独自的库,叫react-hooks-testing-library,让你无需通过UI行为层面,而是间接以hook的形式去测试它们。它的GitHub页面上,明确提出了应用以及不应用它的场景:当你的hook不与组件强相干,领有独立含意时能够应用;当你的hook只被一个组件应用,且和它的定义强相干时,则不倡议应用。 插入一段:只管存在react-hooks-testing-library这样的工具,但像SWR这样优良的三方库,在用testing-library为本人的hook API做测试的时候,仍然抉择在UI层面进行。办法是,把本人的hook置于一个长期的div标签里进行render,把数据的变动映射成html文字的变动,最初对文字内容做断言。其实对于独立性强的函数,集体感觉搁置在UI外面做测试倒没有太大区别,但SWR的例子体现了对“仿照实在应用场景去测试”这一准则的尊重。将下面的法则套用到Angular我的项目中,也是相似的。对于独立性和通用性不强的pipe,directive,reducer,effect,service,都能够认为它们是实现流程的一部分,从UI行为层面写好测试即可。 总之,在构思前端测试的时候,与其死守“单元测试”的字面含意,不如结合实际场景,从新思考什么才是真正有价值的“单元”,就地取材地去写。换种角度表述,与其在意咱们写的测试是不是“单元测试”,不如谋求更外围的货色——咱们的测试有没有以适合的形式去校验逻辑。 另外,当咱们的“单元”过大,一些逻辑可能就会笼罩不上。像sonar这类工具,不仅会查看你的行数覆盖率,还会查看你的各项条件语句是否有被测试执行。当一套测试的行为流程囊括了多个函数,而且每个函数都有好几个if…else语句时,想要在UI操作与mock数据上把所有状况都笼罩到,老本就会变得十分昂扬。 对于此,咱们得抵赖,无论用什么形式组织测试,笼罩所有的条件分支都是不太事实的,而且价值也不大。对于“满足条件A就执行XXX”之类的语句,条件为非A时没有业务上的规定,如果为了刻意笼罩函数的所有条件,就强行测它在非A的状况下返回一个undefined,则没有太多价值。对这类状况,用UI行为测试次要条件即可,如果你切实感觉有重要的逻辑没有被笼罩,无妨回过头来想想,是不是漏掉了某种输出条件,例如特定的用户键入或者非凡的API mock返回值。然而,当有过多的条件分支很难用业务场景去表述和模仿的时候,咱们可能须要从新思考代码的实现逻辑是否正当了。 当然,即便按下面这样做,有时候还是会发现要笼罩的条件组合太多,从行为流程上写测试太简单,这时就不得不做肯定的斗争,为那些没有独立性的局部去独自写测试。如果这类测试不太好写,能够参照方才提到的SWR官网测试用到的技巧,把要测的函数或者是对象搁置在一个长期的UI组件下,以最小的老本做UI行为测试。 最初总结一下下面谈到的几个准则: 从实在用户的行为流程去测试,往往比测函数自身,能给你带来更多的信念。对于没有独立性和通用性的函数或对象,把它们视作实现的一部分,个别没有必要为它们去写独自的测试。不要拘泥于对“单元测试”的字面了解,不要被模式上的法则所解放。不要把测试覆盖率视为太过重要的指标,它的目标还是帮忙晋升代码的稳固。有的代码没有笼罩也没关系,有的代码值得你笼罩好多遍。毕竟,咱们不是为了写测试而写测试。起源:Thoughtworks洞见作者:钟立 申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 IDCF DevOps黑客马拉松,2021年度城市公开赛,11月6-7日,深圳站,企业组队参赛&集体参赛均可,一年等一回,错过等一年,连忙上车~公众号回复“黑马”退出

December 30, 2021 · 1 min · jiezi

关于测试:优麒麟体验官招募啦内测机会福利多多

为了更贴近大家的需要; 为了给大家带来更好的体验; 咱们决定寻找最懂优麒麟的你; 帮忙咱们一起出谋划策! 如果你对优麒麟感兴趣,违心反馈产品的应用体验; 那么欢送你成为 优麒麟体验官 ! 快来扫码报名,领先摸索吧! 体验官须要做什么 负责体验应用新版本/新性能,并产出测评报告或者视频,反馈遇到的 Bug。 你能播种什么 1、后人一步体验到新版本/新性能 2、间接和研发沟通改良需要,新版本的测试有你的一份功绩 3、定期寄送优麒麟定制精美礼品,体现优异者授予优麒麟证书 4、产出合格的测评文章和视频都会失去官网宣传资源的搀扶 5、官网优良体验官展区展现你的信息 咱们心愿你 在每次公布测评流动时,积极参与流动。 如何退出体验官 扫描下方海报二维码进群,并填写体验官信息。

December 22, 2021 · 1 min · jiezi

关于测试:团队对质量负责我可以不负责-IDCF

“麻利测试强调团队为品质负责,那品质变成是团队的事件,可能有团队人员认为集体不那么负责问题不大,毕竟天塌下来有团队在。”一位转型中的测试经理表白了这样的担心。 这跟传统职责明显的做法无关,“我”管“我的”,“你”管“你的”,各自做好本人的本分就能够了。当初,既然说要团队来负责,那么“你”就能够多帮“我”负责一点,“我”少负责一点也没问题。听起来仿佛还挺荒诞不经的。 显然,这种想法是有问题的,把集体跟团队割裂开来了。 良好的团队应该有一种“咱们”的态度,而不是“我”的态度:“我如何帮忙团队解决问题?我能够为他人做些什么?”,而不是“我不晓得这是什么问题,这不是我的问题。” 然而,事实上有后面测试经理提到的这种想法的人应该不是个例。 因而,转型中的团队如何可能真正做到团队为品质负责,如何造就每个人对品质的责任感,是真正须要解决的问题。 一、团队整体对品质负责 麻利测试宣言里提到“团队整体对品质负责”次要是针对传统的品质都由测试人员来把关的做法,强调团队所有角色对品质的责任。 之前从软件品质属性、易被忽视的品质、角色的品质职责分工、以及整体对品质负责的优良团队特质等几个方面有具体分享。 不过,有了这些,也不是那么容易做到真正为品质负责,因为责任感的造就并不是一件简略的事件。 二、责任流程模型为什么责任感这么难以造就呢?Christopher Avery 的“责任流程模型”很好的解释了这个问题。 上图即为责任流程模型,从下到上须要经验几种不同的心理状态:否定、指摘、辩解、惭愧、放弃、任务,而后能力达到最上层的“责任”,能力造就责任感。 指摘(LAY BLAME)当问题产生时,指摘心态的人会间接把责任推到他人身上,“这是他的错”。 比方,在用户故事验收时候,发现某个小性能点的实现跟需要不符,这时候开发人员可能会说“那是因为需要没写分明,是业务剖析人员的问题。” 辩解(JUSTIFY)当发现无奈指摘他人的时候,就会把问题归因于咱们无法控制的外部环境,通过这种形式来为本人辩解:“这就是经济”,“咱们的文化就这样”,“这就是团队的治理现状”。 再比方,在软件开发中当同一个问题被屡次呈现的时候,可能会听到这样的辩解:“咱们的遗留零碎代码太乱了,呈现这样的状况实属失常,很难保障代码每次都能写对。” 指摘和辩解属于从内部去找起因,从而推卸本人的责任。 惭愧(SHAME)当意识到外部环境必须扭转能力使生存变得更美妙的时候,再呈现问题就会归因于本人的错,会感到内疚。常会有这样的想法:“我应该做的更好”,“我怎么又做成这样”,“这是我应得的结果”。 比方,当某个简单性能上线呈现问题时,他们会想“这个点我之前应该想到的,怎么会漏掉没测呢,我真是个白痴”。 感到内疚和惭愧是好的,然而光是这样不会解决问题,下次还是会有同样的问题呈现。 任务(OBLIGATION)任务不是责任,通常是一些承诺过须要做的事件,是本人不得不做但不肯定喜爱做的事件。这种状况下会对本人的承诺感到抓狂,感觉到没有其余抉择了,感觉生存就是一个累赘。是一种十分消极的态度。 比方,在开发进度特地紧急的时候,测试人员会有测试压力微小、基本测不完的状况,但测试人员还是会认为测试就是本人本分该实现的工作,是本人的任务,累的要趴下的时候只会埋怨工作太累了,不会踊跃的想方法解决基本问题。 惭愧和任务开始从本人身上去找起因,然而还达不到责任的高度。 放弃(QUIT)有时候,咱们会在惭愧和任务之间感觉到十分的抓狂和丧气,而后就会想逃离,逃离惭愧带来的苦楚和任务带来的累赘,也就是放弃。有放弃想法的人会感觉“只有不去关怀问题,它们就会自行隐没”,其实问题并不会隐没,而且丧气会一次又一次地袭来,从而十分的焦虑。 比方,某个开发人员开发的代码总是呈现 bug,然而又找不到改良方法的时候,可能就会感觉无能为力,产生放弃的念头。 放弃是十分消极而负面的态度,很不利的。 责任(RESPONSIBILITY)经验后面这几个阶段,并没有放弃,最初就会承当起责任,造就责任感,来到责任流程模型的最高档次。 进入这个阶段,会意识到本人是有能力和力量去解决某个问题。遇到须要解决的问题后,会直面问题自身,剖析根因,想方法解决问题,而不是去应答本人的丧气感觉。 在软件缺陷呈现当前,解决了缺点并且对其根因进行剖析,找出当前避免出现同样问题的改良方法,并实现改良,做到缺点预防。这就是责任,就是为软件品质负责的体现。 否定(DENIAL)还有一个状态是模型右下角的“否定”。否定通常是因为没有意识到有问题,而疏忽问题的存在。这是责任流程模型的最低档次。 比方,测试人员跟开发人员说发现了一个 bug,开发会潜意识的反馈说:“我代码没问题,我本人测过了。” 否定属于负面心态,但这种心态更多的是因为能力或认知无限所致。 三、造就责任感的三把钥匙责任流程模型形象地展现了造就责任感须要经验的几个阶段,咱们能够清晰地看到造就责任感的不易。Christopher Avery 为此也给出了造就责任感的三把钥匙:动机、意识、面对。 动机(INTENTION)首先,当事件呈现问题的时候,须要以负责任的动机去面对,踊跃地想方法解决,而不是漠视、找内外部借口、甚至是逃离问题不予理睬。 比方,当咱们在软件开发中发现缺点的时候,不论是什么起因导致,先要做的是踊跃想方法来解决、剖析并做好后续的预防,以缩小同类缺点再次出现。 做一件事件的动机将会决定后续所采取的口头,这个十分要害。因而,端正动机,踊跃面对问题,是通往责任之路的钥匙之一。 意识(AWARENESS)其次,是对责任的意识。当呈现问题的时候,如果又开始找起因、找借口应答的话,要尽快把本人拉回来,加强本人面对问题的责任意识。 麻利团队强调团队整体为品质负责,咱们作为团队的一员,都须要有对品质负责的意识,每次代码变更都要思考是否引入新的品质问题;当发现缺点的时候要意识到须要一起来想方法解决,作出本人力不从心的奉献。 只有意识到了,才可能采取相应的口头。毫无疑问,意识十分重要,这是通往责任之路的第二把钥匙。 面对(CONFRONT)以踊跃的心态面对真正的问题,尝试去发现其中有哪些是能够学习的、哪些是能够改过的、以及哪些是能够进步的。 出错不可怕,可怕的是出错当前不能从中吸取经验教训,同样的谬误频出。失败是胜利之母,从失败中学习,定会有所成长。 当咱们说要为品质负责,就是不论品质呈现什么样的问题,咱们都能踊跃面对,找到真正的问题所在,采取踊跃的应答措施,继续改良。 踊跃面对问题是一种成长型心态,是一种负责任的心态。踊跃面对是通往责任之路的第三把钥匙。 四、写在最初通往责任之路的三把钥匙说起来都比拟形象,造就责任感纯属集体的自我涵养。对于有志要加强责任心的人,能够从上述三个方面去刻意练习。 另一方面,从团队领导者的角度,能够发明一种免责的文化氛围,激励团队成员的翻新、提倡继续改良,容许犯错,不要对集体追责,从而更好地帮忙团队成员造就责任感。 最初,回顾一下文首的问题:团队对品质负责,集体须要负责吗? 答案当然是必定的。咱们要了解团队的概念,集体属于团队,团队由集体组成,集体和团队是一个整体。 团队对品质负责,就是须要每个人都对品质负责,是品质人人有责。 起源:BY林子作者:林冰玉 申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 玩乐高,学麻利,规模化麻利联合作战沙盘之「乌托邦打算」,2022年3月5-6日登陆深圳,将“多团队麻利协同”基因内化在研发流程中,为规模化晋升研发效力保驾护航!!⛴公众号回复“乌托邦”可加入

December 21, 2021 · 1 min · jiezi

关于测试:Java-on-Visual-Studio-Code的更新-–-2021年11月

大家好,欢送来到 11 月版的 Visual Studio Code Java 更新!咱们将分享一些与Java根底开发相干的最新性能以及与应答编码问题的一些解决策略。 根底开发相干的性能会间接影响开发者的日常工作效率,晋升这方面的用户体验将始终是咱们的重点。在11 月的更新中,咱们在这方面进行了多项改良: 测试 – 在测试与测试对象之间跳转在 11 月的版本中,咱们增加了一项新性能,容许用户在测试和相应的测试对象之间跳转,这个性能将帮忙用户更不便地编写单元测试。 代码操作 – 更不便地生成构造函数和笼罩/实现办法咱们已经在之前的博客中提到过,咱们会始终致力让常见代码的操作更加易于应用。在最新版本中,用户当初能够应用 Java 类旁边的“灯泡图标”来不便地生成构造函数或笼罩/实现办法!以下是一个疾速演示: 与乱码问题“打交道”用户在解决各种语言时遇到某种编码问题是很常见的。咱们在听到此类反馈后做了一些剖析,因而在这篇博客中咱们想分享一下咱们的发现以及倡议。 背景计算机只能了解 0 和 1 等二进制数据,它应用字符集将数据编码/解码为事实世界的字符。两个过程在进行I/O交互时,必须应用兼容的字符集进行编码和解码,否则可能会呈现乱码。MacOS 和 Linux 到处都应用 UTF-8,因而编码对它们来说不是问题。然而,对于 Windows,默认字符集不是 UTF-8 并且是平台相干的,这会导致不同工具之间的编码不统一。 常见问题以下是在 Windows 终端上运行 Java 程序时的典型编码问题。 文件或目录名蕴含Unicode字符,Java启动器找不到对应的类门路或主类。中文目录├── Hello.class└── Hello.javaC:\Test>java -cp 中文目录 HelloError: Could not find or load main class Hello带有 Unicode 字符的字符串文字在打印到终端时会呈现乱码。Exercises├── 练习.class└── 练习.javaC:\Test>java -cp ./Exercises 练习Error: Could not find or load main class ??Caused by: java.lang.ClassNotFoundException: ??Java程序与终端交互I/O时呈现乱码public class Hello { public static void main(String[] args) { System.out.println("你好!"); }}C:\Test>chcp65001C:\Test>java -cp ./Exercises Hello??!C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello你好!程序须要从 stdin 读取 Unicode 字符,并将 Unicode 字符打印到 stdout。import java.util.Scanner;public class Hello { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(scanner.nextLine()); }}C:\Test>chcp65001C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello 你好 ��咱们的发现与应答此类问题的倡议之前,为了缓解编码问题,咱们在 Java Debugger 端增加了一些解决办法去强制在咱们的工具链中应用 UTF-8。例如,增加一个launcher.bat 强制终端的代码页为65001 ,并将默认的“file.encoding”属性设置为“UTF-8”。但事实证明,它们并没有系统地解决编码问题,并且还引入了一些额定的副作用(参见#756, microsoft/vscode-java-debug#622, microsoft/vscode-java-debug#646)。 ...

December 18, 2021 · 1 min · jiezi

关于测试:Source-Generator-单元测试

大家好,我是本期的实验室研究员——李卫涵。明天我将向大家介绍如何基于针对 Source Generator 来进行单元测试。接下来就让咱们一起到实验室中一探到底吧! Source Generator 单元测试IntroSource Generator 是 .NET 5.0 当前引入的一个在编译期间动静生成代码的一个机制,介绍能够参考 C# 弱小的新个性 Source Generator,然而很长时间以来 Source Generator 的测试都是有一些麻烦的,写单元测试来验证会比拟麻烦,前几天参加了一个 Source Generator 相干的我的项目,发现微软当初有提供一套用于简化 Source Generator 单元测试的测试组件,明天咱们就以两个 Source Generator 示例来介绍一下应用。 GetStarted应用起来还算比较简单的,我平时个别用 xunit,所以上面的示例也是应用 xunit 来写单元测试,微软提供的测试组件也有针对 MsTest 和 NUnit 的,能够依据本人须要进行抉择。 https://www.nuget.org/package... 我的我的项目是 xunit , 所以首先须要在测试项目中援用Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.XUnit 这个 NuGet 包,如果不是 xunit 抉择对应的 NuGet 包即可。 如果在还原包的时候有包版本的正告能够显式指定对应包的版本来打消正告。 Sample1首先来看一个最简略的 Source Generator 示例: [Generator]public class HelloGenerator : ISourceGenerator{ public void Initialize(GeneratorInitializationContext context) { // for debugging // if (!Debugger.IsAttached) Debugger.Launch(); } public void Execute(GeneratorExecutionContext context) { var code = @"namespace HelloGenerated{ public class HelloGenerator { public static void Test() => System.Console.WriteLine(""Hello Generator""); }}"; context.AddSource(nameof(HelloGenerator), code); }}这个 Source Generator 就是一个比较简单的生成一个 HelloGenerator 的类,这个类里只有一个 Test 的静态方法,单元测试办法如下: ...

December 15, 2021 · 3 min · jiezi

关于测试:关于测试的三个关键问题-IDCF

最近始终在思考对于测试的三个关键问题应该是什么,目前有了初步的假如和解决思路,权且先写下来,以抛砖引玉,寻求更多反馈和探讨。 问题1:测试是否真实有效?——测试有效性第一个关键问题,我想晓得我的测试是否都真实有效。乍看上去像个伪问题,其实不然。能够扪心自问一下:我能保障软件所有的测试都是无效的测试吗?不见得吧……对这个问题心里有底的测试人员值得好好褒扬一下。基于实在教训和数据不难得出结论,无效测试的比例并不高,甚至在某些场景下,测试人员都没有思考过“大量执行的测试是否真的无效”这个问题。 如何评估测试有效性呢?能够从测试策略、测试反馈、可测性等角度来逐个盘点。 1.1 测试策略 (测试金字塔) 首先评估测试策略的有效性,可依照测试分层模型“测试金字塔”来逐层盘点: 总共分几层:采取哪些测试各层占多大比例:测试重点各层测试指标:不同的测试服务于不同的测试指标各层笼罩要求:不同测试应笼罩哪些问题,覆盖率的要求而后评估测试用例和用例集的有效性: 不论是手工测试用例还是自动化测试用例,每个测试都须要是无效的测试不同的测试用例集能实在的服务于不同的测试指标打消反复的测试或各层之间反复笼罩的测试点,避免浪费测试笼罩绝对齐备:不片面追求覆盖率数值,而强调对业务场景的笼罩水平建设测试下沉机制:在金字塔下层发现缺点,评估是否从上层逃逸,如是应在上层补测试1.2 测试反馈为了使测试能无效的反馈代码品质,适量的测试应在适合的机会进行,且能无效反馈代码品质,并能起到门禁作用,防止低质代码流入上游。解释一下这句话中的要害信息: 适量的测试:不同测试应有不同量级的用例被执行,保障笼罩的状况下越少越好适合的机会:不同的测试可按需周期测、随时测,或放到流水线上时时跑着无效反馈:正当预期,正确断言,确保能实在反馈软件体现门禁作用:当测试不通过时应及时截断,防止低质代码持续流转1.3 可测性软件可测性指被测软件在给定测试环境下,可反对测试的水平。软件可测性有较多参考因素,如:可管制、可观测、隔离性、可读性、自动化水平等。软件可测性是确保测试有效性的必要条件,当可测性较高时,测试有效性才有可能维持较高的程度。 个别当聊到可测性时,可能会依据测试类型的不同做以下辨别: 前端可测性:指软件对前端测试的反对水平,如UI标准、前端代码标准等后端可测性:指软件对后端测试的反对水平,如高内聚低耦合,提供测试接口、执行步骤可控可观测等欠缺的日志零碎:提供可观测、可追踪的日志零碎,便于疾速定位问题 (便于观测的日志零碎) 问题2:测试是否高效执行?——测试效率当确保了测试有效性,就须要关注测试执行的效率如何了。毕竟是测试基于无限工夫窗的流动,所以咱们不光要谋求测试都是无效的,还谋求能高效的执行这些测试。而这又依赖于环境和设施的底层反对,以及继续的关注和改良测试执行效率的具体口头。 2.1 测试环境反对咱们对测试环境的应用过程可大抵分为以下步骤:筹备测试资源 → 测试环境部署 → 测试服务部署 → 环境验证 → 环境应用 → 环境销毁 理论工作场景中,测试环境往往是妨碍测试效率的一大难题。为了达成不同的测试指标,测试所须要的环境、数据、集成状况可能都不一样,咱们冀望测试环境能“专款专用”,无效隔离,防止不同测试品种、不同测试人员、不同实际流动、不同测试数据之间互相掣肘。 (吐槽测试环境) 现实饱满,事实骨感。当测试人员在申请环境资源时,常常遇到各种妨碍,如环境资源的高老本,或者环境申请的长链简单流程。测试人员期待的环境反对应满足以下几个条件:部署和保护成本低、按需扩大、即用即抛,不同测试间的环境和数据隔离,让测试人员可能从各种繁冗的排查环境问题中真正解脱进去,聚焦业务测试。 (想要新环境?不存在的) 2.2 测试基础设施想要取得较高的测试效率,必不可少的关键因素是继续集成。测试效率要想进步,须要绝对现实的测试策略:大量的手动摸索式测试 + 大量的自动化回归测试 + 基于需要的专项测试,这其中大量的自动化回归测试就须要无效集成到继续集成流水线中去。可依照以下检查点来评估: 有大量无效的自动化测试自动化测试增加到继续集成流水线基于每次代码提交的测试,如外围模块的单元测试,或外围业务流程的回归测试,应加到对应服务的pipeline中作为独立step,无效反馈提交代码的品质其余业务回归类的自动化测试,也须要定期频繁执行,要害工夫节点必执行有测试执行的可视化报表或监控机制,确保问题及时被解决除了继续集成,无效的测试也依赖于测试套件的疾速筹备,服务于不同测试指标的数据生成,以及测试工具或平台级的反对。 2.3 测试执行效率不管测试的环境和设施反对是否齐备(毕竟这不只是测试的决策),测试人员都须要继续的继续的关注和改良测试效率: 手工摸索:是否有助于在无限工夫内发现缺点,摸索执行的测试是否须要加到惯例用例中自动化测试:执行周期正当,执行时长绝对稳固,通过率维持肯定程度问题3:测试价值体现在何处?——测试价值3.1 内建品质如果说以前测试的职责是发现软件的缺点,那么当初咱们聊的品质内建,其实是发现和纠正流程的缺点。任何可能升高软件品质的工作形式,也能够是咱们关注和改良的对象。而在品质内建的过程中,测试人员奉献的最大价值就是帮忙全团队建设品质意识,由“测试和品质是QA的事儿”转变为“测试和品质是大家的事儿”。思维的转变是最难的,但也是一旦转变产生了,就会在各个工作点滴中迅速会集成果的基本。 (全程品质内建) 3.2 裸露危险测试的另一个重要职责是充沛裸露危险。这里的危险有三类:品质危险、交付危险和生产环境危险。 通过缺点建模、缺点数据分析、根因剖析和缺点预防等实际,测试人员能够充沛理解品质危险,从而对行将投产的软件进行品质危险上的预测。这种基于历史教训的预判有助于降低生产环境的品质危险。 在以往和测试人员交换的过程中,大家示意对危险的干涉水平可能较低。但其实这里测试人员的价值在于充沛的裸露危险:须要把危险点是什么、测试人员给出的预判、潜在危险可能产生的损失、危险干涉的伎俩和因而产生的老本等等这些信息,全副同步给团队,并在团队进行危险干涉时进行肯定的输出和疏导。 (测试人员的职责:辨认和裸露危险) 3.3 保卫门禁测试人员的话语权体现在对品质门禁的保卫上。人当有所为,有所不为,团队也一样。测试人员肯定要保卫品质门禁,不通过就是不通过,须要明确给出测试论断,尽量避免任何不置可否的品质论断。 一些明确的品质论断示例: “某性能通过充沛的测试和相干回归,测试通过,能够上线。上线后需观测……”“工夫过紧,某性能只通过验收规范的测试,尚未充沛的回归和摸索,不倡议在以后热更上线。能够安顿在下次热更上线,咱们就有充沛的工夫实现测试。”“如不可抗力必须上线,可能面临的品质危险有……倡议采取以下几种措施进行干涉和疾速复原,上线后倡议相干角色继续观测……,确保第一工夫捕获线上问题。”品质门禁须要保卫,如果有起因导致门禁生效,那也是团队独特决策的后果,团队整体需独特承当品质危险,并尽所有人的致力把损失降到最低。 写在最初对于本文内容,我还在继续地思考和迭代。我想晓得何以测试人员广泛不足价值感,可能大部分源于所做的事件并没有意义。怎么给测试这件事件赋予意义呢?冀望实现这个思考过程能帮忙我找到答案。 起源:圆小豆的美梦工场作者:于晓南申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 玩乐高,学麻利,规模化麻利联合作战沙盘之「乌托邦打算」,12月25-26日登陆深圳,将“多团队麻利协同”基因内化在研发流程中,为规模化晋升研发效力保驾护航!!⛴公众号回复“乌托邦”可加入

December 1, 2021 · 1 min · jiezi

关于测试:聊聊-ab-和-jmeter-的并发模型

作者:烧鸡太子爷 起源:恒生LIGHT云社区 简介后面一篇文章里(详见 很好用的压测工具 - Apache Bench工具)有讲到因为我的项目须要,在比照了jmeter和ab当前应用了ab测试工具来测试服务器的性能,明天咱们就来讲讲ab和jmter的并发模型,就是他如何保障可能模仿高并发客户端的场景的。 其实咱们一说到并发,咱们首先想到的就是服务端零碎的并发模型,而为了能测试到这样的服务器零碎的并发能力,性能测试工具也须要反对与之相应的并发包能力。而充沛理解性能测试工具的并发模型,能够更好地帮忙你抉择适宜本人的性能测试工具。其中 JMeter&&ab,Locust 和 Gatling 就抉择了三种不同的发模型,这个应该是和开发者过后的技术背景,业务需要,资源状况等密切相关的。所以没必要去探索过后作者为什么要抉择这个模型,然而能够尝试去了解这些不同模型的特点,从而抉择到适宜本人的模型。明天咱们次要讲的jmeter和ab的模型,其余的咱们前面有工夫在做剖析。 并发模型的相干概念同步、异步、阻塞、非阻塞 要讲并发模型,咱们绕不开以下四个名词: 同步(Synchronous)异步(Asynchronous)阻塞 (Blocking)非阻塞(Nonblocking)目前你能通过百度找到的、能查找到很多对于这些的解释,每个人都会有本人的一些了解。我这边不班门弄斧地来解释这四个词的差异,只是提一些大部分材料中漠视的点: 要辨别同步、异步,必须讲清楚其所处的层,比方框架、用户空间、内核、IO模型同步调用发动后,没有失去后果不返回,那么毫无疑问就是被阻塞了异步调用发动后间接返回,毫无疑问,这个过程没有被阻塞在Operating System Concepts [9th Edition](操作系统概念第9版本)该书中形容对过程间通信进行了一些形容 也就是说,站在过程通信纬度上来看,阻塞、非阻塞与同步、异步是同义词,然而须要辨别发送方、接管方: 阻塞发送非阻塞发送阻塞承受非阻塞承受上述不同类型的发送办法和不同类型的接管办法能够自由组合 另外,咱们还晓得Linux有五种I/O模型: 阻塞式IO(Blocking I/O)非阻塞式IO(Nonblocking I/O)IO复用(I/O multiplexing) selectpollepoll信号驱动式IO(Signal Driver I/O)异步IO(Asynchronous I/O) AIO除了Asynchronous I/O以外,其余4种都是同步IO 多过程/多线程 做开发的兄弟应该都能了解: 多过程:同一时刻执行多个程序。如,你关上电脑运行微信,钉钉,chrome等就是多过程(过程列表里能看到多个程序在运行);多线程:同一时刻执行多个线程。如,用chrome一边看新闻,一边听歌,一边看下载(只启一个浏览器过程,运行多线程工作); 理解下面的概念当前呢,而后咱们再来讲讲ab和jmeter的并发模型 基于多线程并发的ab、jmeterab、JMeter别离是用C、Java开发的、基于多线程并发模型的压测工具,也是目前最风行的开源压测工具,两者的工作原理相似,如下图: 不论ab还是JMeter,其所谓的虚构用户(vuser)就是对应一个线程在单个线程中,每个申请(query)都是同步调用的,下一个申请要期待前一个申请实现能力进行一个申请(query)分成三局部: send - 施压端发送开始,直到承压端接管实现wait - 承压端接管实现开始,直至业务解决完结recv - 承压端返回数据,直至施压端接管实现同一线程中间断的两个申请之间存在等待时间这种概念,即图中的空白处总的来说,多线程模型的优劣势总结有如下 : (1)重度依赖于开发语言和操作系统对多线程的反对 (2)多线程切换的时候资源耗费比拟多,在等同资源的状况下,产生的无效并发数量小; (3)多线程也绝对容易产生谬误,比方死锁,共享数据错乱; (4)能够通过丰盛的界面来缩小二次开发导致下面的一些谬误; (5)通过扩大开发和插件实现分布式来满足并发量的有余; (6)多线程的利用技术比拟成熟,将来相当长时间,还会持续利用于很多性能测试工具。 (7)从利用角度来看,基于多线程的并发模型,往往须要设置最大并发数参数,而如果压测场景须要一直往上加压,那这类工具其实挺难应酬的 参考[操作系统概念第9版]<聊聊ab、wrk、JMeter、Locust这些压测工具的并发模型差异>

November 29, 2021 · 1 min · jiezi

关于测试:很好用的压测工具-Apache-Bench工具

作者:烧鸡太子爷 起源:恒生LIGHT云社区 简介往年公司开发者大会是线上的模式,依照常规,为了服务的保障,须要对整个零碎的性能做一个评估,长期抱佛脚,比拟罕用的工具有jmeter和Apache Bench,最终在两者之间抉择了Apache Bench(简称ab),也就针对ab工具做了一些总结。 AB简介关上官网能够看到上面一段话: ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个行工具,对发动负载的本机要求很低,依据ab 能够创立很多的并发拜访线程,模仿多个访问者同时对某一URL地址进行拜访,因而能够用来测试指标服务器的负载压力。总的来说ab工具玲珑简略,上手学习较快,能够提供须要的根本性能指标,然而没有图形化后果,不能监控。 jmeter和ab的比拟这个网上有很多的介绍,收集找了一位大神的总结(具体的不多说,大家能够自行百度) 1、jmeter是一次残缺的申请和返回, 而AB只是收回去申请,并不对返回做解决,只是申请发送胜利或者失败。 所以从准确性来说,Jmeter更精确,而AB速度更快,能够用起码的机器资源产生更多的拜访申请; 2、Jmeter自身反对断言、可变参数和CSV数据集的输出,能设定更加灵便多变的的测试场景,而AB则不反对(临时没想到); 3、Jmeter能够提供更加具体的统计后果数据,比方接口错误信息、单线程的申请工夫等,而AB则不反对; 4、Jmeter不反对准确工夫的压测,比方压测10分钟,然而AB反对; 5、Jmeter反对分布式的压测集群,且反对函数,AB不反对; 6、软件本身消耗资源:Jmeter因为比拟重,且统计了很多后果数据,比AB耗时消耗资源多,AB属于超轻量级,在开发测试过程中非常适宜做单接口压测。 因为本次只针对单个接口做测试,手上刚好有闲暇的linux机器,综合思考就抉择了AB,废话不多说,上面就进行AB的应用做一些解说。 AB的应用官网针对ab的应用做了很具体的介绍,咱们能够去查看官网地址: https://httpd.apache.org/docs... 上面做了一些节抄,英文比较简单,就不做翻译了。 ab参数ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ][ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path参数阐明-A auth-username:passwordSupply BASIC Authentication credentials to the server. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the server needs it (i.e., has sent an 401 authentication needed).-b windowsizeSize of TCP send/receive buffer, in bytes.-B local-addressAddress to bind to when making outgoing connections.-c concurrencyNumber of multiple requests to perform at a time. Default is one request at a time.-C cookie-name=valueAdd a Cookie: line to the request. The argument is typically in the form of a name=value pair. This field is repeatable.-dDo not display the "percentage served within XX [ms] table". (legacy support).-e csv-fileWrite a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milliseconds) it took to serve that percentage of the requests. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'.-E client-certificate-fileWhen connecting to an SSL website, use the provided client certificate in PEM format to authenticate with the server. The file is expected to contain the client certificate, followed by intermediate certificates, followed by the private key. Available in 2.4.36 and later.-f protocolSpecify SSL/TLS protocol (SSL2, SSL3, TLS1, TLS1.1, TLS1.2, or ALL). TLS1.1 and TLS1.2 support available in 2.4.4 and later.-g gnuplot-fileWrite all measured values out as a 'gnuplot' or TSV (Tab separate values) file. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.-hDisplay usage information.-H custom-headerAppend extra headers to the request. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair (i.e., "Accept-Encoding: zip/zop;8bit").-iDo HEAD requests instead of GET.-kEnable the HTTP KeepAlive feature, i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.-lDo not report errors if the length of the responses is not constant. This can be useful for dynamic pages. Available in 2.4.7 and later.-m HTTP-methodCustom HTTP method for the requests. Available in 2.4.10 and later.-n requestsNumber of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.-p POST-fileFile containing data to POST. Remember to also set -T.-P proxy-auth-username:passwordSupply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the proxy needs it (i.e., has sent an 407 proxy authentication needed).-qWhen processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so. The -q flag will suppress these messages.-rDon't exit on socket receive errors.-s timeoutMaximum number of seconds to wait before the socket times out. Default is 30 seconds. Available in 2.4.4 and later.-SDo not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).-t timelimitMaximum number of seconds to spend for benchmarking. This implies a -n 50000 internally. Use this to benchmark the server within a fixed total amount of time. Per default there is no timelimit.-T content-typeContent-type header to use for POST/PUT data, eg. application/x-www-form-urlencoded. Default is text/plain.-u PUT-fileFile containing data to PUT. Remember to also set -T.-v verbositySet verbosity level - 4 and above prints information on headers, 3 and above prints response codes (404, 200, etc.), 2 and above prints warnings and info.-VDisplay version number and exit.-wPrint out results in HTML tables. Default table is two columns wide, with a white background.-x -attributesString to use as attributes for table. Attributes are inserted table here.-X proxy[:port]Use a proxy server for the requests.-y -attributesString to use as attributes for tr.-z -attributesString to use as attributes for tb-Z ciphersuiteSpecify SSL/TLS cipher suite (See openssl ciphers)参数阐明Server Software ...

November 29, 2021 · 7 min · jiezi

关于测试:阿里巴巴质量创新大会TICA2021给大家送福利啦~

阿里QA导读:TICA2021,即第三届阿里巴巴品质翻新大会,因为疫情影响,往年将以线上的模式与大家见面,那么往年咱们会给大家带来什么福利呢?上面咱们将为大家揭晓。TICA2020完结后,咱们以问卷调查的形式邀请每位参会者参加到咱们TICA2021的策动中来,感激大家给咱们的踊跃反馈。小编把大家的反馈做了下汇总(见下图),对于大家重点关注的方向,往年的大会也做了笼罩和降级。首先,大会举办工夫方面,大家更偏向于周末;其次,主题方面,智能化、高可用、IoT与端智能依然是大家重点关注的议题方向,此外,局部亲们还心愿测试效力晋升能有专门的会场进行探讨。TICA2021就是基于这些宝贵意见进行选题的~TICA2020参会者反馈调研 TICA2021, 将于2021年12月18日(周六),会通过优酷以线上的模式与大家见面。往年,咱们将开设高可用、智能化、IoT与端智能、多媒体与音视频、品质效力5个分会场以及一个主会场,6 大会场,30+议题,35+国内外顶尖测试专家,相对的干货。足不出户,即可领略一场测试干货的盛宴! 亲们可能会问,往年都有哪些嘉宾及议题呢?上面小编先给大家简略介绍几个,后续咱们会给大家放送更多专题介绍哦~还有亲们会问,怎么买票呢? 往年,咱们开设了早鸟票购买通道,从当初开始到2021.12.12之前,大家都能够享受早鸟票的价格,12.12之后,就只能以原价购买了。而且,往年的早鸟票,咱们给大家提供了3种不同的早鸟票组合抉择,包含早鸟票、早鸟票+TICA2020视频材料、早鸟票+TICA2020视频材料+优酷VIP半年大礼包,每一种都超值,上面小编将为大家具体介绍下这三种组合抉择~ 【TICA2021早鸟票+TICA2020视频材料+优酷VIP半年大礼包购买通道】总价88元(原价244元 ),并享受离线下载特权,重点是蕴含优酷半年会员! 思考到局部亲们可能也想理解下TICA2020都有哪些议题,并且心愿视频可能离线观看,为满足大家的需要,咱们专门给大家开设了TICA2021早鸟票+TICA2020视频材料+优酷VIP半年大礼包购买通道,既反对TICA2020视频材料离线下载观看,又蕴含了TICA2021的参会票,此外,还有半年优酷VIP,原价244元,而在2021.12.12之前,只有88元!惊呆了,优酷半年VIP的这个价格太香了,小编都心动了呢。 购买二维码如下,大家能够扫码购买哦~ 有效期:TICA2020视频材料观看及下载权利、TICA2021早鸟票自购买日起半年内无效【TICA2021早鸟票+TICA2020视频打包材料购买通道】总价60元(原价138 元) 可能大家只想理解下TICA2020的议题,并不需要可下载权利,为满足这部分亲们的需要,咱们专门给大家开设了TICA2021早鸟票+TICA2020视频材料的购买通道,蕴含TICA2020的视频材料,以及TICA2021的参会票。原价138元,在2021.12.12之前购买,总价才60元,有没有很心动~~ 购买二维码如下,大家能够扫码购买哦~ 有效期:TICA2020视频材料以及TICA2021早鸟票自购买日起半年内无效【TICA2021早鸟票购买通道】票价28元(原价68 元) 早鸟票,只蕴含TICA2021线上观看的票,在2021.12.12之前,亲们只须要28元就能够购买早鸟票,如果等到12.12之后买票的话,就要领取原价68了,所以,当初买票的话,相对划算。 购买二维码如下,大家能够扫码购买: 有效期:TICA2021早鸟票自购买日起半年内无效【团体票购买通道】 团体票目前不反对扫码购买,有需要的亲们,请增加咱们小助手的微信:tica_assist,咱们会跟大家细聊团体票的购买形式。 最初,重点揭示大家: 1、亲们,以上福利,仅在2021.12.12之前能够享有哦,过期只能原价购买。 2、大会在2021.12.18会在优酷上为大家出现,所以大家要记得下载优酷哦~ 3、大家能够加群理解详情,群二维码如下。若加群失败,能够增加咱们小助手的微信:tica_assist,咱们拉大家入群。 【详情理解请入群】TICA2021官网微信群TICA2021官网钉钉群

November 16, 2021 · 1 min · jiezi

关于测试:测试文章

October 29, 2021 · 0 min · jiezi

关于测试:JMeter-接口测试快速入门

JMeter简介JMeter 的个性: 对于多种协定的功能测试和性能测试 Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)SOAP / REST WebservicesFTPDatabase via JDBCLDAPMessage-oriented middleware (MOM) via JMSMail - SMTP(S), POP3(S) and IMAP(S)Native commands or shell scriptsTCPJava Objects提供了测试录制提供 CLI 模式提供 HTML 报告齐全的可移植性和百分百的纯 Java提供多线程反对,模仿多用户高扩展性 >这一节内容译自 JMeter 首页:https://jmeter.apache.org/index.html 笔者试验环境JMeter是Java语言的实现,也就是纯Java利用,所以JMeter实践上能够运行于任何对应的Java环境可用的环境上。 |类型|值| |:—-|:—-| |Java版本|java version “1.8.0_181” (要求Java8及以上)| |JMeter版本|5.4.1| |操作系统|Ubuntu 20.04(GNOME 3.36.5)| |内核版本|Linux version 5.8.0-43-generic|下载本文次要介绍 JMeter 的疾速入门,故其它环境由读者自行筹备 进入官网页面(https://jmeter.apache.org/download_jmeter.cgi)抉择适合的镜像源,下载二进制散发文件;将压缩文件解压到本地后,JMeter 解压后失去的目录的门路称为 JMETER_HOME;JMeter文件简略介绍文件门路(绝对于 JMETER_HOME 目录)文件形容bin文件夹,外面寄存可执行文件docs帮忙文档目录extras扩大插件目录,目录下的文件提供了对ant的反对libJMeter用到的jar包bin/jmeter在linux和unix零碎中启动JMeter客户端的可执行文件(自身是shell脚本)bin/jmeter-server在linux和unix零碎中启动JMeter服务过程的可执行文件(自身是shell脚本)bin/jmeter.propertiesJMeter的配置文件bin/jmeter.batWindows下启动JMeter客户端的可执行文件bin/jmeter-server.batWindows下启动JMeter服务过程的可执行文件启动JMeter的用户界面进入 JMETER_HOME 目录下的 bin 目录,执行以下命令启动 JMeter 的 GUI 模式: ./jmeter几秒后,界面关上如下: JMeter次要概念简介概念简介测试计划测试计划形容了JMeter须要执行的一系列步骤线程组线程组定义了执行的用户池(以并发形式模仿多个用户)jmx文件对应于一个测试计划的以(.jmx)结尾的文件,文件中是以xml格局组织的JMeter程序特定数据结构采样器(sample)采样器能够对执行的指标进行采样(HTTP,JDBC等类型)前置处理器(pre-processor)对采样器进行前置解决(提供用户参数,期待指定工夫等)后置处理器(post-processor)对采样器进行后置解决(后果提取器等)断言(assertions)对采样器失去的后果进行断言(响应工夫断言,响应数据断言,响应的构造断言等)逻辑控制器(Logic controller)以逻辑的模式管制测试计划的执行步骤(If, While等)监听器(listener)在采样器执行完结后,监听器会被告诉,个别监听器用于处理结果数据(展现后果数据,聚合图表等)配置元素(config element)可能为测试计划进行一些配置(申请头配置,通用申请配置,认证配置,变量配置等)JMeter次要性能元素简介(Http测试相干)JMeter 界面操作大部分是单击鼠标右键会弹出下拉菜单进行元素的增加线程组 右键测试计划增加组件截图: 组件参数阐明: 参数名称取值及含意谬误后的动作持续(继续执行之后的步骤)、启动下一循环、进行线程(仅此线程)、进行测试(等正在执行的采样器执行完结后进行测试)、立刻进行测试线程数要模仿的用户数量Ramp-Up工夫(秒)预热时长。用于在执行的工夫内将所有配置的数量的线程启动结束。例如10s,线程数为10,则每隔1s启动一个线程(第一个线程总是立刻启动的,如果总线程数为1,则无论预热时长取值多少,都等效于0)循环次数永远(循环不进行)、指定数字(指定次数循环之后,进行执行)每次循环同一用户吗?是/否HTTP申请默认值 鼠标右键单击线程组元素,从配置元件(config element)下拉项中增加这个组件用于为作用范畴内的HTTP采样器提供默认值。 组件参数阐明: 参数名称取值及含意协定是http协定还是https协定服务器名称或IP域名或者IP地址端口号服务器的端口号门路URL中的path局部内容编码HTTP申请所应用的字符集编码参数HTTP申请参数音讯体数据默认的申请体的数据用户定义的变量鼠标右键单击线程组元素,从配置元件中抉择增加这个组件用于在线程中定义变量,能够在其它中央应用 ${variableName} 的语法进行援用。 在下列界面点击 增加 按钮增加一行变量名和值即可定义一个变量。 HTTP采样器鼠标右键单击线程组元素,从采样器条目中抉择HTTP采样器能够应用 HTTP 申请的模式对被测系统进行采样(发动申请)。这个组件中很多数据和上文提到的 HTTP申请默认值 组件中的很多属性雷同,如果此采样器在 HTTP申请默认值 组件作用范畴内,则采样器中为空的属性会填入默认值,不为空的属性会笼罩 HTTP申请默认值 组件中雷同的属性(就近)。 组件参数阐明: 参数名称取值及含意协定是http协定还是https协定服务器名称或IP域名或者IP地址端口号服务器的端口号门路URL中的path局部内容编码HTTP申请所应用的字符集编码参数HTTP申请参数(URL中的查问参数)音讯体数据申请体的数据申请办法GET、POST、PUT、DELETE等HTTP办法文件上传用于上传文件主动重定向勾选示意主动重定向。示意上游的HTTP协定处理器会主动的重定向,所以重定向两头的过程对JMeter是不可见的。且只能用于GET和HEAD办法。POST和PUT办法会被回绝。追随重定向勾选后示意追随重定向(仅当主动重定向未勾选时无效)。如果设置,JMeter的采样器会对响应进行解决,且会追踪过程中的每次重定向,并将最初一个未重定向的申请和响应作为最外层的采样数据,其它的申请的数据作为这个采样数据的附加信息。(最大重定向次数为20)应用KeepAlive勾选后,JMeter会设置申请头 Connection: keep-alive 。然而这个选项是否失效还和JMeter的HTTP实现无关响应断言鼠标右键单击采样器,点击【增加-断言-响应断言】选项增加响应断言能够为采样器所得的后果进行断言,以逻辑(等于、蕴含、正则匹配等)对包含响应头、响应码、响应体等在内的内容进行断言,以校验采样器的输入是否合乎测试者的预期。 组件参数阐明: 参数名称取值及含意Name断言的名称Apply to选定断言的作用范畴,个别是用到 Main sample only 选项,Main sample 指的就是这个断言所属的采样器,而 sub samples 指的是由这个采样器产生的子采样器,比方 HTTP 采样器的高级选项 – 获取内置的资源,就会产生子采样器。Field to Test指的是须要进行断言的指标。Text Response 指的是从服务器取得的整个响应作为文本(响应体)。Response Code 是响应码 (例如200)。Response Message 是响应音讯(例如OK)。Response Headers 是响应头。Request Headers 指的是申请头。Request Data指的是申请的所有数据作为文本(申请体)。URL sampled 是采样的 URL。Document 指的是 View Results Tree 组件的 Document 局部一样的以特定规定提取出的文档。Ignore status疏忽响应的状态码。个别 4xx 和 5xx 是默认认为是失败的。如果不设置,总的 sample 的后果是由状态码的成功失败和断言的后果的联合。如果设置了,就会设置状态为胜利,再进行断言(留神:如果设置了这个参数,要把这个断言放在第一个,否则会革除后面的断言的失败后果)Pattern Matching Rules对于给定的模式串,应用怎么的规定。Contains 蕴含模式串 (模式串被看作正则表达式)。Matches 示意正则匹配的 match (模式串被看作正则表达式)。Equals 示意相等(大小写敏感,模式串被看作纯文本)。Substring 示意被测文本蕴含给定的模式串 (模式串被看作纯文本)。两种逻辑符号: Not 和 Or 。Not 示意对后果取反。 Or 示意匹配规定对于给定的一系列模式串成立一个那断言就是 OK 的。Patterns to Test用来测试的模式串列表。能够点击 Add 按钮增加多个模式串。如果是正则表达式则是 Perl5-style 的正则表达式且没有关闭的括号的模式。JSON变量提取右键单击申请,Add – Post Processors – Json Extractor 增加 JSON 提取器元素JSON 提取器能够用于从响应体中的 JSON 构造中提取指定地位的属性为变量。 ...

October 29, 2021 · 2 min · jiezi

关于测试:使用-Spring-Boot-进行单元测试

【注】本文译自: Unit Testing with Spring Boot - Reflectoring 编写好的单元测试能够被认为是一门难以把握的艺术。但好消息是反对它的机制很容易学习。本教程为您提供了这些机制,并具体介绍了编写良好的单元测试所必须的技术细节,重点是 Spring Boot 应用程序。咱们将看看如何以可测试的形式创立 Spring bean,而后探讨 Mockito 和 AssertJ 的用法,这两个库默认蕴含在 Spring Boot 中用于测试。请留神,本文仅探讨单元测试。集成测试、Web 层测试和长久层测试将在本系列的后续文章中探讨。  代码示例本文附有 GitHub 上 的工作代码示例。 依赖关系对于本教程中的单元测试,咱们将应用 JUnit Jupiter (JUnit 5)、Mockito 和 AssertJ。咱们还将包含 Lombok 以缩小一些样板代码: dependencies { compileOnly('org.projectlombok:lombok') testCompile('org.springframework.boot:spring-boot-starter-test') testCompile('org.junit.jupiter:junit-jupiter:5.4.0') testCompile('org.mockito:mockito-junit-jupiter:2.23.0')}Mockito 和 AssertJ 是应用 spring-boot-starter-test 依赖项主动导入的,但咱们必须本人蕴含 Lombok。 不要在单元测试中应用 Spring如果你以前用 Spring 或 Spring Boot 写过测试,你可能会说咱们不须要 Spring 来写单元测试。这是为什么?思考以下测试 RegisterUseCase 类的单个办法的“单元”测试: @ExtendWith(SpringExtension.class)@SpringBootTestclass RegisterUseCaseTest { @Autowired private RegisterUseCase registerUseCase; @Test void savedUserHasRegistrationDate() { User user = new User("zaphod", "zaphod@mail.com"); User savedUser = registerUseCase.registerUser(user); assertThat(savedUser.getRegistrationDate()).isNotNull(); }}这个测试在我电脑上的一个空 Spring 我的项目上运行大概须要 4.5 秒。然而一个好的单元测试只须要几毫秒。否则它会妨碍由测试驱动开发(TDD)思维推动的“测试/代码/测试”流程。但即便咱们不采纳 TDD,期待太长时间的测试也会毁坏咱们的注意力。执行下面的测试方法实际上只须要几毫秒。 剩下的 4.5 秒是因为 @SpringBootRun 通知 Spring Boot 设置整个 Spring Boot 应用程序上下文。所以咱们启动了整个应用程序只是为了将 RegisterUseCase 实例主动拆卸到咱们的测试中。一旦应用程序变大并且 Spring 不得不将越来越多的 bean 加载到应用程序上下文中,它将破费更长的工夫。那么,为什么咱们不应该在单元测试中应用 Spring Boot 呢?诚实说,本教程的大部分内容都是对于在没有 Spring Boot 的状况下编写单元测试。 ...

October 26, 2021 · 3 min · jiezi

关于测试:云效自建测试自动化最佳实践

云效自建测试自动化最佳实际,对于古代软件研发来说,继续、疾速、高质量、低危险地交付需要个性,是业务对研发的次要诉求。而要做到这一点,除了要有良好的架构设计、卓越的工程能力,疾速牢靠的测试反馈也是其十分重要的一环,达到这一点,须要依附测试自动化。 作为面向企业开发者的DevOps平台,云效提供了丰盛的能力,帮忙大家在DevOps流程中落地测试自动化实际。 简略来说,企业自建测试自动化体系,分为三种模式: 模式一:基于开源测试自动化工具 很多企业自建测试自动化,都是从抉择一个开源测试自动化工具开始的。一个开源测试自动化工具,往往蕴含以下几局部(以RobotFramework为例): 1.测试执行工具,如robot 2.测试用例,如.robot文件 3.测试后果和报告,如执行完生成的log.html和report.html 4.测试能力库,用来实现特定的测试,如SeleniumLibrary 对于一个测试自动化体系,往往还须要加上: 1.调度和执行平台 2.后果剖析与统计报表 3.测试后果告诉能力 基于云效,整个的架构是这样的。 1.测试自动化用例存储在云效代码平台的git仓库中 2.用于执行测试自动化的测试步骤,基于云效的自定义step能力创立 3.触发和串联代码、构建和自动化测试的云效流水线、 4.告诉机制(钉钉音讯) 5.针对品质状况的数据报表,能够间接显示在流水线测试后果中,也能够将数据发送给自建的数据报表服务展现 以RobotFramework框架为例,在云效上接入开源测试自动化工具有以下几步。 1.抉择或编写对应开源测试自动化工具的flow step 云效内置了支流开源测试自动化工具的反对(TODO),同时提供flow cli工具,帮忙企业定制化地实现合乎本人要求的测试自动化组件。如何通过flow cli实现并公布一个flow step,请参见参考资料。 这里,仅以RobotFramework为例,对其要害局部做一下阐明。 首先通过flow step init命令初始化一个flow step组件的我的项目。 1.1 执行的环境和命令 在step.yaml文件中,image为测试执行的环境镜像,这里是registry.cn-hangzhou.aliyuncs.com/feiyuw/flow-robotframework:1.0,镜像的内容在Dockerfile外面定义。在items中增加type为shell的输入框,用于设置执行命令,这里默认值为robot-L Trace -d robot_logs .,当前目录“.”即为代码所在目录。 # ...image: registry.cn-hangzhou.aliyuncs.com/feiyuw/flow-robotframework:1.0items: - label: 执行命令 name: STEP_COMMAND type: shell value: | # NOTE: output directory should be robot_logs robot -L Trace -d robot_logs .# ...1.2 红线配置 首先在step.yaml中定义红线配置组件,这些组件会在流水线配置步骤的时候显示给用户。 items: - label: 红线信息 name: CHECK_REDLINES type: addable_group rules: - require: false add_button: type: icon icon: plus text: 减少红线 tip: icon: question-circle description: 红线校验失败步骤标记为失败 template: items: - name: redline label: 红线 position: flat type: custom_redline_dropdown datamap: '[{"key": "PassRate", "type":"GE"}]' rules: -requires: false另外在step.sh的最初增加红线查看局部,如: ...

October 21, 2021 · 2 min · jiezi

关于测试:我测了啊我真测了-IDCF

对测试人员来讲,什么事件比拟难堪?——线上出问题。再难堪一点儿呢?——没测到,线上出问题。最难堪呢?——明明测到了,线上还是出问题。场景1:没测到,生产环境出问题预料之内情理之中,这太失常了。没测到出了问题不该诧异,没出问题才该烧香。此时不应指摘出问题,而应思考没测到的起因是什么。第一反馈是测试人员脱漏了,如同也没更多起因。但当咱们把视角切换到实在研发过程中,就会发现没测到的起因切实太多了! 没思考到,测试漏测了这真是测试的锅,测试人员的确应该全面了解业务,设计高效笼罩的用例集。但在功能设计时如有良好布局,能够缩小没想到造成的漏测。 思考到了,但还是没测个别是工夫紧工作急,来不及测,但又没向团队裸露危险。多半也是测试的尽职。 不可抗力必须上线,来不及测大家分明的晓得危险,但遇到不可抗力,如法律法规等,无奈实现全副测试就必须上线,这种状况咱们且上且察看,独特承担风险,并充沛思考线上事变的紧急预案。 流程问题,未经测试就上线开发本人上线了性能,没通过测试人员测试,也没有充沛自测。这种鬼故事在过来的职业生涯中我至多见过5次。还是不能寄希望于人的专业性,应更多依赖于可控可追溯的流程体系来保障。 大家认同不须要测,间接上比方批改文案,或做简略的图片替换等。越是认为没问题的,往往越出幺蛾子。就好比咱们埋头苦干往往没人看,刚要划水,低头就是老板清静如水的眼光。软件就跟成精了一样,分分钟教你做人,品质工作真是一丝都不能倦怠。 所有人都没想到,就没测之前的一个我的项目上,既有惯例性能的迭代上线,又有非凡性能只迭代不上线,为了好辨别,咱们为不上线的性能做了开关,其实代码都下来了,只是Feature没关上。一次规模稍大的惯例上线部署实现后,依照常规验证生产环境,测试人员诧异地发现本该关着的性能被关上了,不该呈现的性能呈现了。于是连忙把开关关掉,并排查起因,发现是有一个数据库脚本把开关数据导到生产环境了。从此以后,每次上线咱们都会查看所有Feature Toggle的状态。 以上列举了一些起因,可能还有其余更多起因。不论什么起因没测到,究竟还是让缺点逃逸到生产了。但只有咱们找到没测到的起因,有针对性地改良,还是比拟容易防止这类问题的。 场景2:明明测了,生产环境还出问题常在河边走哪有不湿鞋,测了还出事儿,这才是该狐疑人生的场景。这种状况往往问题也不好排查,通常是先连忙排查问题,肯定工夫窗内找不到问题或无奈疾速解决,哪怕先回滚呢,预先咱们再认真复盘。测了还出事儿其实并不少见,起因也同样有很多。 认为测了,其实没测因为测试人员对业务了解不够充沛,或者测试设计能力有余,认为曾经充沛测试了,但其实脱漏了比拟要害的测试用例。这类问题能够间接等同于场景1中的某种状况。 环境差异性因为生产环境和测试环境的差异性导致测试后果的生效。无妨脑洞一下,都有哪些因素造成了环境差别?比方软件配置上的差别:数据库账户、接口配置、服务和端口、第三方插件、集成服务、不同的利用渠道等……或者其余硬件上的差别。这种状况下可能并不是被测软件自身的缺点,但因为环境差异性导致了测试环境通过的用例,在生产环境下失去了不同的后果。 数据差异性因为测试数据的差异性导致的生产环境缺点并不少见。在测试环境,测试人员选取典型的测试数据进行测试,或者是批量生成的有肯定法则的测试数据。这些数据可能用着棘手每次都会被复用,也可能造成了针对特定业务的测试数据集。这是好事儿,但往往就像耐药性一样,这些被测软件用习惯的数据不利于揭示新的或暗藏的缺点。而在生产环境,因为用户量大、操作不标准、实在业务的复杂性等起因,使得生产环境的数据更具备多样性,这就给测试后果的准确性带来更大的挑战。 用户量级/业务量级差异性这其实也是数据差异性的一种,单提出来是因为引发的缺点不同,上一种状况引发的是特定测试用例的后果不精确,或者说是一般的缺点。而因为业务量级不同引发的往往是性能缺点,高并发、大量沉积的业务数据造成服务中断等,这些状况引发的缺点往往业务影响更大,定位、修复和性能调优的难度也更大。哪怕在测试环境进行了充沛的性能测试,也极有可能在生产环境并行大量其余业务的条件下,造成劫难般的性能缺点。 其余集成问题与集成方约定的上线工夫、切换动作、兼容形式、集成验证等,都有可能在测试环境和生产环境有所不同。因而,在上线后与集成方一起验证集成性能的正确性十分必要。毕竟相比于本人的软件缺陷,集成引起的缺点可控性更差,修复周期也更长。应尽早发现这类缺点,免得造成更大的损失。 上线不齐全这就更诡异了,软件性能齐全没问题,各种差异性也已排除或修复,但依然可能因为公布问题死在线上。因为公布自身的复杂性、上线性能较多、服务间性能耦合、或是上线步骤繁琐、手动操作过多等起因,都有可能引起上线不残缺,一部分要害代码没有上线。这类问题好发现好排查,但着实恶心人,本不应产生。 测试到底该解决什么问题?先上论断,相比于发现更多缺点,我认为测试最应该解决的问题是:(每个字都很重要) 排除 用户或客户 对软件的预期 和软件真正的体现 在生产环境上的 差别 具体怎么做呢?可参考以下列表逐渐递进地欠缺实际: 充沛理解被测业务晋升测试设计能力在测试环境,确保软件业务性能没问题充沛思考环境差异性排除数据差异性,用多样化的数据进行测试排除或尽力束缚集成方问题在预生产环境进行残缺的回归测试和公布演练(在公布过程简单或对公布工夫限度较严格时可选)对公布后可能呈现的危险进行预判,确认疾速复原机制采纳自动化流程、公布预演等实际,确保软件齐全公布实现上线后,立刻对生产环境进行容许的测试和测验投产应用后,继续监控服务日志和业务数据本文就进行到这儿了。大家遇到过哪些相似的“血泪故事”呢?欢送分享和探讨。 起源:圆小豆的美梦工场 作者:于晓南申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 IDCF【冬哥有话说】收费直播,关注公众号回复“冬哥”获取地址 10月21日(周四)晚8点,丰志强分享《组织级麻利转型》10月28日(周四)晚8点,钱勇分享《toB SaaS从策略到产品经营的天龙八步》

October 19, 2021 · 1 min · jiezi

关于测试:混沌工程Chaos

混沌工程 定义:混沌工程是传统测试的补充 。测试类型包含:有功能性测试,有性能测试,还有很大一部分是各种混沌测试,模仿各种事实中可能呈现的状况。故障演练、容灾演练在混沌工程领域。业务背景:分布式系统天生有着各种相互依赖,能够出错的中央不可胜数需要: 为了更不便地验证零碎对于各种故障的容忍能力,打造更具弹性(弹性:零碎应答故障、从故障中复原的能力)零碎在一直的同时,建立运行高可用分布式系统的信念。对本身稳定性有个更全面的理解。混沌工程让你有机会把问题提前/通过一直失败防止失败。操作: 用于向基础设施以及业务零碎中注入各类故障类型实际混沌工程示例: 能够简略如在生产环境中运行 kill -9 来模仿一个服务节点的忽然宕机也能够简单到在线上筛选一小部分(但足够代表性)的流量,按肯定规定或频率主动运行一系列试验。更精准的管制(爆炸半径、影响范畴)、反对更多场景的模型通常遵循四个操作步骤首先定义指标(自动化指标剖析)(采纳业务指标比技术指标更易用)创立假如。模仿事实世界中可能产生的事件(故障注入)。证实或反驳你的假如。业内实际 混沌工程(Chaos Engineering) 总结 https://zhuanlan.zhihu.com/p/...https://github.com/dastergon/...先驱,Netflix 的 Chaos Monkey https://pingcap.com/blog-cn/c...最早系统化地提出了混沌工程的概念,并出版了混沌工程畛域内的首部书籍。在本书中提出了混沌工程成熟度模型与利用度模型,并总结了五条高级准则,对于混沌工程的倒退具备指导性意义。准则之一易用性 易于编排试验的谬误注入行为,易于查看**试验的状态和后果准则之一扩展性 基于现有实现,易于扩大新的故障注入品种阿里 ChaosBladePingCap:Chaos MeshGremlin:chaos gameday 红蓝反抗概念

October 9, 2021 · 1 min · jiezi

关于测试:浅谈语音质量保障如何测试-RTC-中的音频质量

日常音视频散会中咱们或多或少会遭逢这些场景:“喂喂喂,能够听到我谈话吗?我听你的声音断断续续的”,“咦,我怎么能够听到回声?”,“太吵啦,我听不分明你在说啥” 等等。这些语音品质问题影响音视频散会体验,如若是重要的会议,那足够让人 “恼羞成怒”。那么如何无效的缩小这些问题产生呢?本系列文章就将为大家分享阿里云视频云在保障 RTC 语音品质方面的测试教训。作者|柯淮审校|泰一 背景介绍音频品质是指失常网络下的听觉品质和音频 3A 算法品质。听觉品质,是在无损网络状况下人耳对语音优劣的主观感触。但在理论生存中,不同人对同一声音可能会有不同的优劣判断,另外还会受到收听环境和收听心理影响。在测试时,咱们能够从声音三要素:响度、音高、音色纬度登程,对一些指标进行量化评估。另外业内规范还会将这些量化指标通过肯定的加权解决以冀望拟合主观感触,比方 POLQA、PESQ 等。 音频 3A 算法是指: AGC: Automatic gain control(自动增益管制) ANS: Adaptive noise suppression(噪声克制) AEC: Acoustic echo cancellation(回声打消) 这部分内容公众号中已有较多文章较具体介绍原理及实现,这里不再赘述。 往期文章详解 WebRTC 高音质低延时的背地 — AGC(自动增益管制) 硬货专栏 |深入浅出 WebRTC AEC(声学回声打消) 本系列文章将从音频品质、适配测试、Qos 品质、自动化计划四个维度去介绍阿里云视频云如何保障 RTC 语音品质,本文先介绍音频品质局部(失常网络下的听觉品质和音频 3A 算法品质)。 RTC 语音测试链路拆解在正式测试前,咱们先理解 RTC 语音传输的整个链路框架图,声音通过麦克风采集,而后上行音频算法进行前解决,编解码传输后通过扬声器播放进去。若想测试上行音频算法可在(1)处输出声音,而后在(2)处拉取输入音频进行剖析。零碎测试时,咱们往往从端到端角度评估,即从(1)处输出声音而后在(4)拉取声音进行剖析,本文后续测试方法均基于端到端。 音频品质测试计划阿里云视频云采纳业内罕用的主观指标+主观评估相结合的办法来保障音频品质,具体指标请参考下图: 主观测试方法无效频宽Line in 输出扫频文件 +48K 采样率的人声音频(音频素材参考如下),Line out 录制输入音频,通过频率剖析读取无效频宽; 端到端提早办法一:应用 VQT 测试,测试后果中输入延迟时间。 办法二:自研。Line in 测试素材,Line out 录制未通过传输及输入音频,计算音频延迟时间。 测试素材:一段间断的单音。指标计算:录制文件中读取未通过传输的音频起始工夫记为 t1,读取通过会议传输的音频起始工夫记为 t2,则 Delay=t2-t1。 ANS考查 ANS 算法在纯噪声和语噪混合场景下的体现,剖析指标蕴含:降噪一致性、信噪比晋升、收敛工夫、消噪前人声音质。 ...

September 27, 2021 · 1 min · jiezi

关于测试:怎么理解黑盒测试村棍

一.黑盒测试的概念: 黑盒测试,软件测试的办法之一。也能够称为功能测试,数据驱动测试或基于规格阐明的测试。 次要内容:测试者不理解程序的外部状况,只晓得程序的输出,输入和零碎的性能,是从用户的角度进行的测试。 次要针对软件界面和软件性能进行测试。 二.黑盒测试试图发现的谬误: 1)性能不正确或脱漏。 2)界面谬误 3)数据库拜访谬误 4)性能谬误 5)初始化和终止谬误 三.黑盒测试用例设计办法: 1)等价划分法:将输出划分为若干子集,每个子集选取多数代表性数据作为测试用例。 2)边界分析法:通过抉择等价类边界的测试用例。 3)谬误揣测法:列举出程序中所有可能有的谬误和容易产生谬误的非凡状况,依据他们抉择测试用例,须要教训和直觉。 4)因果图法:思考输出条件的分割和组合,因果图办法最终生成断定表,适宜于检查程序输出各条件的各种组合状况。 5)正交实验设计办法:用起码的测试用例达到最高的测试覆盖率。 四。黑盒测试应用的工具 winrunner:通过主动捕捉,检测和模仿用户交互操作,辨认出绝大多数软件的游戏性能缺点。 工作流程: 1)辨认应用程序的GUI 2)建设测试脚本 3)对测试脚本出错(debug) 4)在新版应用程序执行测试脚本 5)分析测试后果 6)回报缺点

September 24, 2021 · 1 min · jiezi

关于测试:CANN-AICPU算子耗时分析及优化探索

摘要:本文以GreaterEqual作为测试算子,该算子计算逻辑较为简单(output = input1 >= input2),旨在尽可能升高计算耗时,使得算子耗时尽可能以数据操作和算子调度作为主体。本文分享自华为云社区《CANN AICPU算子耗时剖析及优化摸索》,作者:DavilSu。 1. 剖析目标在理论开发CANN算子的过程中,经常呈现算子性能失常,但性能远低于TensorFlow对标算子的状况。针对这个问题,本文以GreaterEqual作为测试算子,该算子计算逻辑较为简单(output = input1 >= input2),旨在尽可能升高计算耗时,使得算子耗时尽可能以数据操作和算子调度作为主体。 2. 测试代码与平台介绍本次测试平台为OpenLab提供的Ascend服务器,搭载Ascend910A,CANN Toolkit版本号为5.0.2alpha005。 自研测试代码参考cac625f243dfe7b04dbb2a82059cd0e4349f77d1这一commit进行批改,该commit针对播送操作性能进行了优化。自研设置并行阈值:含播送操作计算为8K,不含播送操作计算为32K。 GreaterEqual的TensorFlow对标算子为TensorFlow1.15版本算子,canndev对标算子commit为d660e086717b94b8cfb3f35a8e08046ca0461772,该版本算子尝试利用Eigen库的broadcast操作躲避canndev源码仓Bcast性能有余的问题,但未启用并行计算进行减速。 测试数据我设置了波及播送操作和不波及播送操作的两批数据,波及播送操作的测试数据又分为需播送Tensor的元素个数为1和元素个数不为1两种,测试了int8、int16、int32、int64、uint8、float16、float32、float64共8种TensorFlow对标算子反对的数据类型,每种数据类型别离设置了128B、256B、1K、2K、4K、8K、16K、32K、64K、128K、256K、1M、2M、8M共14个数据规模梯度,具体数据规模与shape对应关系如下: 3. 单线程性能剖析这一部分旨在测试单线程解决数据CANN算子与TensorFlow算子性能差距。为防止播送操作对测试后果产生影响,本次测试数据采纳不波及播送操作的数据批次。 图1 单线程耗时比例 能够看出,对于数据量低于2K的小型数据规模,CANN算子相比于TensorFlow有肯定性能劣势,但随着数据量的减少,CANN算子性能呈现显著性能劣化,尤其是uint8这一数据类型,劣化水平非常重大,性能劣化高达6.57倍。对于非C++规范的float16这一数据类型,二者均采纳Eigen库中的half数据类型进行代替,测试后果性能较为靠近。 图2 计算1K数据耗时 我还测试了CANN和TF单核计算16K-8M数据量时,计算1K数据所耗费的工夫。 能够看出,TensorFlow随着数据类型占用空间的增大,耗时也成比例的相应减少。而奇怪的是,CANN的int8、uint8耗时与int16相近,这一特点同样体现在耗时比例int8和uint8的性能劣化水平远高于其余数据类型,猜想有可能是因为int8和uint8是扩大至16位再进行计算。CANN在float32和float64这两个数据类型的体现也非常奇怪,随着数据量的减少,耗时产生了较大稳定。具体情况在向量化代码与性能剖析局部尝试进行了剖析优化。 4. 自研算子与主仓已实现算子性能比照Canndev主仓GreaterEqual算子,尝试利用Eigen库的broadcast操作躲避canndev源码仓播送性能有余的问题,但未启用并行计算进行减速。自研算子应用canndev仓中的Bcast类进行播送,对是否须要播送的状况进行细化与特殊化,针对不同数据规模设置并行阈值。 本局部别离测试了波及播送操作和不波及播送操作的两批数据,旨在测试canndev提供的办法和Eigen提供的broadcast操作性能优劣,及自研算子的性能劣势。 图3 不含播送操作耗时比例 图4 含播送操作耗时比例 从后果能够看出,当不开启播送操作时,自研算子性能全面优于已有算子,小数据量时因为间接操作指针,并未同已有算子通过Eigen的broadcast办法查看后再进行解决,性能有肯定劣势,大数据量因为开启多线程,性能远优于已有算子。 然而开启播送操作后,因为并行阈值设定在8K,小数据量均同为单线程解决数据,可见目前CANN的Bcast性能劣于Eigen实现的broadcast,数据量大于8K后,因为多线程的并行处理劣势,自研算子性能远超已有算子。 TensorFlow实现的播送操作相比于Eigen实现的broadcast和CANN实现的Bcast均有较大的性能劣势,同为单线程当先Eigen实现的broadcast 8-26倍,当先CANN则更多。 5. 并行阈值比照因为参考算子为播送优化后的Less算子,我设置了一个对照组,阈值与Less算子的阈值雷同(含播送操作计算为2K,不含播送操作计算为7K),以验证其并行阈值是否正当。为防止播送操作对测试后果产生影响,本次测试数据采纳不波及播送操作的数据批次。 测试后果如下: 图5 Less算子阈值和自研算子阈值耗时比例阈值 可见Less算子的并行阈值设置并不合理,在8K数据规模时呈现了一个显著的耗时突增,耗时主体为并行通信耗时而非计算,自研算子绝对平缓,该阈值由二分法循环测试得出,临界点并行减速比靠近1。 6. 向量化代码与性能剖析在进行单线程性能剖析时,我留神到一个很奇怪的景象,int8与int16耗时非常靠近(如图2),这引起了我的留神,处理器在解决数据时,耗时会与解决的数据为定点数还是浮点数、数据的位宽、解决数据调用的指令等等因素相干,在解决雷同数量的int8与int16数据时,理当int16耗时高于int8。察看TensorFlow算子执行工夫,int8和uint8耗时也小于int16耗时。 古代处理器往往反对SIMD(单指令流多数据流),通过将数据打包在一个向量寄存器中,一个运算指令内执行多个数据的计算,从而实现DLP(Data Level Parallelism),达到减速数据密集型运算的成果。而GreaterEqual算子计算过程不蕴含分支抉择构造,计算逻辑简略反复,适宜利用SIMD进行减速。 查阅材料发现Ascend910处理器中的AICPU为16个外围的TaiShan外围,通过零碎查问,反对AArch64指令集,其中也蕴含了NEON指令集。 我尝试在C++实现代码中嵌入汇编代码来实现手动向量化,性能确实大幅晋升。尽管实践上手工向量化可能实现最高水平的向量化,但因为不同处理器提供的SIMD 扩大指令集各不相同,不同应用程序特色也复杂多变,SIMD 向量化代码的可读性较差,可移植水平较低,并难以进行持续优化。思考到将来算子代码可能须要迁徙到x86-64、ARM等不同架构的CPU上,最终抉择编译器主动生成针对指标处理器SIMD 扩大的向量程序。主动向量化程序员无需关怀底层提供的SIMD 扩大部件构造和指令集等问题,只须要把程序中存在的并行性表白分明,很大水平上解决了高性能代码可移植性低的问题。 查问canndev主仓代码内容,向量化优化相干关键词仅在TFPlugin中呈现,查看CmakeLists.txt的编译选项仅进行了O2优化。因为编译AICPU代码的编译器为GCC,通过查阅GCC文档,O2蕴含的编译选项除蕴含了O1的优化选项外,还蕴含了以下选项: 能够看到表3中并未蕴含向量化优化的编译选项,因而咱们通过向CmakeLists.txt中增加-ftree-vectorize(蕴含-ftree-loop-vectorize和-ftree-slp-vectorize)这一编译选项来开启主动向量化,优化后果如下: 图6 单线程向量化计算1K数据耗时 察看图6后果,能够看到单线程进行向量化优化的代码性能大幅晋升。同时咱们还能够察看到,雷同符号类型的定点数或浮点数的计算耗时随着数据位宽的翻倍而成比例的减少,这也对应着SIMD扩大部件的向量寄存器长度是固定的,NEON的向量寄存器长度为128bit,因而咱们设置并行阈值不应该依照元素个数进行设计,而应该依照元素数据总大小来确定。 图7 FP16开拓长期变量与否耗时比例 尝试将Tensor内的half数据转换为float后存入长期开拓的float数组,性能反而劣化,剖析起因为逐元素进行数据类型转换后赋值的开销远大于向量化带来的性能晋升。 图8 单线程向量化与否耗时比例 图9 多线程向量化与否比照耗时比例 由图9可知,通过向量化后,所有C++原生数据类型的性能均已优于TensorFlow算子。 察看图10,进行向量化优化后,算子性能失去无效晋升,但咱们能够看到某些数据类型在数据量为128K时性能反而不如未进行优化,这里是因为向量化优化版代码并行阈值是依照数据大小进行设定的,这里能够针对不同数据类型进行更细粒度的并行阈值设定。 ...

September 18, 2021 · 1 min · jiezi

关于测试:云效测试管理-Testhub测试人员专属的-武器库

云效测试治理 Testhub,测试人员专属的 「武器库」,「测试治理」是针对研发过程中测试用例库治理而提供的利用,反对用例库分组的创立、编辑、批量导入等性能,不便测试人员对用例进行标准化治理和积淀,辞别传统项目管理中测试用例反复撰写、用例信息共享不易的问题,成为测试人员专属的 「武器库」。 立刻体验云效测试治理 云效测试治理 Testhub 用来做什么 「测试治理」蕴含对测试计划与执行用例的创立、编辑、布局与关联等性能,让测试人员能够间接在云效的我的项目中进行测试工作的布局和执行停顿反馈,并将「测试计划」与「需要」和「缺点」一起进行治理。 测试用例 「测试用例」是针对研发过程中测试用例库治理而提供的利用,反对用例库分组的创立、编辑、批量导入等性能,不便测试人员对用例进行标准化治理和积淀,辞别传统项目管理中测试用例反复撰写、用例信息共享不易的问题,成为测试人员专属的 「武器库」。 思维导图,作为传统的头脑风暴和思路梳理的工具,目前曾经被很多测试团队宽泛应用,用来进行测试用例的编写。相比于传统的表格模式,应用思维导图来编写测试用例,更容易针对需要梳理测试门路,也便于测试点疾速定位和和对于性能的查漏补缺;而且思维导图的保护和查看相比表格也更加容易。在测试计划以及测试用例利用中,能够应用思维导图文件导入测试用例。 测试治理利用 「测试治理」是针对研发过程中测试用例库治理而提供的利用,反对用例库分组的创立、编辑、批量导入等性能,不便测试人员对用例进行标准化治理和积淀,辞别传统项目管理中测试用例反复撰写、用例信息共享不易的问题,成为测试人员专属的 「武器库」。 一、创立用例库点击左上角九个点在 Dcok 菜单中,抉择「测试治理」即可进入。 点击 右上角的蓝色「创立用例库」或创立卡片,填写用例库的名称和简介信息(选填),即可胜利创立新的用例库。 测试用例库的性能层级为: 用例库(可创立多个)—用例分组(每个用例库中可创立多个用例分组来进行用例治理)—用例。 二、创立与设置用例分组进入用例库后右边侧栏是用例的分组信息可。 以通过创立分组,将不同的用例进行更进一步的细化和分类。比方:将产品每一个大的性能板块创立为一个用例库,并将性能板块下的每个性能点创立为一个分组,这样就会使产品的测试内容清晰有序。 三、创立用例测试用例反对手动创立和批量导入两种形式。其中批量导入反对 excel 和 思维导图导入两种模式。 1、手动创立用例 在每一个用例分组下,能够点击「创立用例」进入用例的具体设置页,而后对用例的「前置条件」、「操作步骤」、「用例类型」、「用例等级」等信息进行设置。 前置条件:前置条件用于填写用例执行前必须满足的条件和零碎状态,亦能够作为用例的备注应用; 操作步骤:操作步骤和预期后果是用例的核心内容,形容用例执行的具体过程和预期的程序行为; 用例类型:默认有功能测试、自动化测试、性能测试、配置相干、平安部署、平安相干、接口测试、其余等 8 种类型; 用例等级:默认等级为 P0-P5,数字越小,用例执行的优先级越高。 2、批量导入用例 有的测试团队宽泛应用表格或思维导图用来进行测试用例的编写,但容易导致测试用例文件容易损坏和失落,无奈进行积淀和治理,那么能够将测试文件批量导入 Teambition 用例库。咱们反对按表格文件导入,也反对导入思维导图文件 .xmind 格局导入数据,升高创立老本,能够疾速生成测试用例。 点击「批量导入」,依照导入的模板填写信息后上传文件。 四、用例的更多操作场景:当某些性能测试、平安测试等测试用例存在复用性,或者在测试负责人做用例拆分时,能够批量抉择或单个抉择复制挪动到其余用例库中。在用例详情页右上角的用例菜单中能够对该用例进行「复制用例」、「复制挪动」和「删除用例」的操作。 场景:测试负责人在做测试任务分配时,他能够同时抉择多个用例,并指派给对应的测试人员,设置「设置保护人」; 五、布局用例至 「测试计划」测试负责人在我的项目中建设测试计划后,可将用例库中本次测试计划须要执行的用例,布局到测试计划,即可实现用例的复用,缩小用例从新创立的老本。 云效测试治理 Testhub,测试人员专属的 「武器库」,「测试治理」是针对研发过程中测试用例库治理而提供的利用,反对用例库分组的创立、编辑、批量导入等性能,不便测试人员对用例进行标准化治理和积淀,辞别传统项目管理中测试用例反复撰写、用例信息共享不易的问题,成为测试人员专属的 「武器库」。

September 17, 2021 · 1 min · jiezi

关于测试:测试金字塔你在哪一层

摘要:软件品质是掂量一个软件是否胜利的重要规范,在软件的生命周期中,自动化测试金字塔给大家提供了一种测试策略,依据我的项目具体的状况,优化测试流动,最终让软件品质失去晋升。本文分享自华为云社区《测试金字塔,你在哪一层?》,作者:麻利的小智 。 前言软件品质是掂量一个软件是否胜利的重要规范,在软件的生命周期中,如果没有良好的品质管控,很容易造成产品质量不满足客户预期,最终导致我的项目交付艰难。软件品质能够通过规范化的研发流程、零碎的软件测试等形式进行保障,本文咱们就聊点测试相干的内容。 测试金字塔软件测试是随同着软件开发一起诞生的,随着软件规模大型化,构造复杂化,软件测试也从最后的简略“调试”,倒退到当今的自动化测试。原始的“调试”,在这里就不细聊了,那自动化测试是什么呢?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,自动化测试通常会借助某些工具或者框架。尽管不能齐全取代手工测试,但相比手工测试来讲,自动化测试能够缩小人力老本,升高反复工作,从而更疾速、高效的进行测试流动。 测试金字塔是一种自动化测试过程的金字塔形策略构造,用来领导软件开发过程中,各层自动化测试的投入比例,其最早由Mike Cohn在2009年的著述《Scrum麻利软件开发》中提出。Mike Cohn在书中指出:测试金字塔从上到下分为三层,别离是UI测试、服务/接口测试、单元测试,越靠近金字塔底部的测试流动,投入的工作量应该越多,即单元测试投入工作量最多,接口测试次之,UI测试投入起码。 测试金字塔最底层——单元测试单元测试属于代码级别的测试,编写成本低,执行速度快,可能疾速定位问题,极限编程中的TDD测试驱动开发很多时候都是围绕单元测试发展。单元测试能够说是最低级别的测试流动,对于单元测试的内容也很多,在这不做过多介绍。 测试金字塔中间层——接口测试随着微服务架构的宽泛遍及,API也成为大势所趋。因此,对API进行继续测试成为DevOps的关注点之一,如果没有API接口测试,微服务架构的施行对于企业将会成为一场劫难。 接口测试是测试零碎组件间接口的一种测试,次要用于测试零碎与内部其余零碎之间的接口,以及零碎外部各个子模块之间的接口。接口测试既可关注单个接口的参数取值和参数取值组合的合理性,也能够验证产品性能的完整性和正确性。绝对比单元测试,服务/接口测试的覆盖范围要大一些。 接口测试的重点如下: • 查看接口参数传递的正确性;• 接口性能实现的正确性;• 输入后果的正确性;• 对各种异常情况的容错解决的完整性和合理性。 如何进行接口测试Swagger是一种可生成、形容并调用RESTFUL格调API的框架。Swagger官网的样例Demo——petstore(宠物商店)对外提供一系列能够对宠物信息进行增删改查的接口,本文应用这些接口进行接口测试。 1.筹备工作首先,通过华为云DevCloud的云测性能中的“测试用例”,创立接口测试的测试用例。 将petstore我的项目的网址设为默认环境变量,这里给他命名为“pethost”,测试用例可通过“$$petstore”的模式,间接调用该变量。 环境变量也能够不设置,但每次测试都须要输出petstore的域名,很麻烦,设置成环境变量能够缩小工作量,云测中输出“$$”能够间接关联预设的环境变量。 2.创立“增加宠物信息”的接口测试用例petstore我的项目中,“增加宠物信息”是通过post申请实现的,该申请的申请体如下所示 创立“URL申请”,将申请类型设置为“POST”,申请地址为“$${pethost}/v2/pet”,在申请体中输出上图Json字符串,申请局部设置实现。 接下来,咱们设计咱们预期的查看后果,冀望返回值是200,即胜利,如果返回其余响应码则测试失败。 同时,还要对响应体中的某些参数做提取,便于后续业务的测试应用。在这里咱们提取相应体中category.id的值,并将他赋给局部变量“id”。 3.执行用例并查看返回值申请设置实现后,咱们执行用例,能够看到响应码是200,后果是胜利的。如果想看到测试不胜利的场景,能够试试不依照参数列表规定,应用其余参数。 通过“近一次的后果”中“响应”,能够看到这次申请的返回值,返回值中提供的各类参数都能够通过上文提到的“响应提取”性能进行提取,供其余测试应用。 4.创立“查问宠物信息”的接口测试用例宠物信息创立实现后,咱们通过Get申请查问宠物是否真的增加实现。 创立“URL申请”,将申请类型设置为“GET”,申请地址中,通过“$id”间接调用之前接口返回的id(同“$$”,“$”能够间接关联预设的局部变量)。 响应码设置为200,预计测试通过。 5.执行用例查看是否能够查问到宠物信息执行用例后能够看到响应码是200,和预期相符,测试胜利。 通过“id”查问到的宠物信息也和之前创立的宠物信息统一,示意这两个性能是OK的。 6.创立“删除宠物信息”的接口测试用例测试实现后,须要删除测试数据。 创立“URL申请”,将申请类型设置为“DELETE”,同样通过“$id”删除对应的宠物信息。 响应码设置为200,预计测试通过。 7.删除测试用例执行用例后能够看到响应码是200,和预期相符,测试胜利。 通过响应体也能够看出,宠物信息删除实现。 以上就是一个简略的接口测试的例子,体现了接口测试既能够测试单个接口的性能,也能够测试产品多个模块联动的性能。 测试金字塔最高层——UI测试在测试金字塔中,UI测试的覆盖范围广,靠近业务侧,然而编写老本高、执行速度和稳定性都会降落,问题定位也很难。所以在测试设计中,要缩小界面层的测试。如果是上层测试能够笼罩的场景和逻辑,为了进步测试的速度和节俭资源,尽量放到上层去进行。 总结软件想要有一个好的品质,谨严的测试流动必不可少,自动化测试金字塔给大家提供了一种测试策略,咱们要依据我的项目具体的状况,优化测试流动,最终让软件品质失去晋升。 最近华为云与高校联结发动的开学季流动,邀请了华为专家、斩获21offer的优良学长,采纳线上直播+赛道闯关+丰富奖品的模式进行,旨在让同学们理解华为前沿研发理念和先进技术,体验用华为云不同产品进行场景利用的开发,加深高校学生对企业技术利用的理解,让校园学习与企业技术利用接轨,为高校学生的择业待业进行助力赋能。 奖品多多,理解一下:华为云DevCloud&AI&IoT新学期挑战赛 点击关注,第一工夫理解华为云陈腐技术~

September 8, 2021 · 1 min · jiezi

关于测试:0703-pipenvPython虚拟环境工具

简介pipenv是一个python包管理工具,它能同时治理python虚拟环境和python依赖,官网举荐。 应用pipenv 装置:在主环境中装置,全局可用 pip install pipenv创立虚拟环境:在对应的工程文件中创立 pipenv install此时会生成两个文件:Pipfile和Pipfile.lock 批改镜像源: Pipfile[[source]]name = "pypi"url = "https://pypi.doubanio.com/simple/" # 重点verify_ssl = true[dev-packages][packages]flask = "*"flask-login = "*"flask-mail = "*"[requires]python_version = "3.7"激活环境:在 Pipfile和Pipfile.lock 文件所在门路下执行: pipenv shell依据已有的Pipfile或Pipfil.lock创立虚拟环境 pipenv create from pipfile.lockpipenv create from pipfile生成 requirements.txt 文件 pipenv lock -r [--dev] > requirements.txt通过 requirements.txt 文件装置模块 pipenv install -r requirements.txtpycharm 中援用 疾速入门学习材料pipenv疾速入门

September 6, 2021 · 1 min · jiezi

关于测试:0610-Jenkins-配置-allure-报告

环境筹备运行节点设施须要装置 allure report 运行环境Jenkins 须要装置 allure report 插件python 依赖: pip install allure-pytest Jenkins 我的项目配置构建执行命令 增加构建后动作 配置后的款式 报告款式 Allure Report 打包发送至邮箱前提条件: 须要增加邮件插件通过 ssh 命令打包压缩文件 增加邮件发送配置 将打包生成的压缩文件门路配置到 Attachments 中 解压后,在报告文件夹门路下,应用 python 搭建繁难服务器查看报告 python -m http.server 8001# 浏览器进入 localhost:8001 查看报告

September 3, 2021 · 1 min · jiezi

关于测试:0608-Jenkins-自动化测试持续集成

UI 自动化测试-环境筹备节点设施装置 Chrome 浏览器(或者应用无头浏览器)节点设施装置 Chromedriver(留神与浏览器版本的反对对应关系)读取配置文件的模块:configparser https://docs.python.org/3/lib... https://www.cnblogs.com/plf-J... Appium 自动化测试-环境筹备APP 自动化驱动框架:Appium运行前,须要先启动 Appium Server 实体机,或者模拟机接口自动化测试-环境筹备装置 python 库: pip install requests 接口压力自动化测试-环境筹备节点设施须要装置 jmeter相干脚本参考 https://github.com/princeqjzh... 创立 Jenkins 工作新建自在格调我的项目 按集体须要填写形容(非必填) 抉择我的项目运行节点 配置 Git:包含仓库地址,Git 账户等 配置构建命令 指定配置文件为 json 格式文件 jmeter 相干增加 Groovy Postbuild,解除 Jenkins 对 js 渲染的限度System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") 增加测试报告

September 3, 2021 · 1 min · jiezi

关于测试:0607-Jenkins中配置-Git-认证信息

参考链接: https://ceshiren.com/t/topic/... 须要在节点设施上配置好公钥 生成/增加 SSH 公钥 的形式https://gitee.com/help/articl... 在 Git 上设置公钥 https://gitee.com/help/articl... 为指定我的项目设置公钥 配置凭证(应用公钥进行配置)

September 3, 2021 · 1 min · jiezi

关于测试:0606-Jenkins-邮件报警机制

相干参考链接: https://blog.csdn.net/fullbug... 配置 email装置插件:Email Extension,Email Extension Template新版本的 Jenkins 默认装置 到系统配置中配置邮箱 邮件模板配置Jenkins 可依据配置的邮件模板格局发送后果邮件 罕用的参数: $BUILD_STATUS:构建后果$PROJECT_NAME:构建脚本名称$BUILD_NUMBER:构建脚本编号$JOB_DESCRIPTION:构建我的项目形容$CAUSE:脚本启动起因$BUILD_URL:脚本构建详情 URL 地址邮件模板在以下这一块进行配置: 参考模板<!DOCTYPE html><html><head><meta charset="UTF-8"><title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title></head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td>(本邮件是Jenkins程序主动下发的,请勿回复!)</td> </tr> <tr> <td><h2><font color="#0000FF">构建后果 - ${BUILD_STATUS}</font></h2></td> </tr> <tr> <td><br /> <b><font color="#0B610B">构建信息:</font></b><hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>项目名称:${PROJECT_NAME}</li> <li>构建编号:第${BUILD_NUMBER}次构建</li> <!-- <li>SVN 版本: ${SVN_REVISION}</li> --> <li>触发起因:${CAUSE}</li> <li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>构建地址:<a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目录:<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>我的项目地址:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li> <li>变更集:${JELLY_SCRIPT,template="html"}</li> </ul> </td> </tr> <tr> <td><b><font color="#0B610B">Changes Since Last Successful Build:</font></b><hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="%p"} </td> </tr> <tr> <td><b><font color="#0B610B">Failed Test Results:</font></b><hr size="2" width="100%" align="center" /></td> </tr> <tr> <td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">${FAILED_TESTS}</pre> <br /></td> </tr> <!-- <tr> <td><b><font color="#0B610B">构建日志 (最初 100行):</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td>Test Logs (if test has ran): <a href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a> <br /> <br /> </td> </tr> <tr> <td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea> </td> </tr> --> </table></body></html>我的项目配置配置我的项目中的“构建后操作步骤”: ...

September 3, 2021 · 1 min · jiezi

关于测试:0604-Jenkins-权限控制

Jenkins 初始化过程中,会注册一个管理员账户 管理员账户能够创立后续的个别账户,并且为对应用户配置权限 配置容许用户注册注册用户的操作权限管制 必须由管理员来实现配置后,用户可自在注册,或者有管理员自行新建用户启用之后,在 Jenkins 首页能够看到 sign up 入口团队规模小于10人,不倡议启用容许用户注册,缩小用户治理工夫老本 注册权限配置形式如下: 治理用户权限

September 2, 2021 · 1 min · jiezi

关于测试:0603-Jenkins-节点管理Linux

Jenkins 的工作能够散布在不同的节点上运行。 节点上须要配置 Java 运行环境 节点反对 Windows,Linux,Mac Jenkins 运行的主机,在逻辑上是 master 节点 新增节点实操

September 2, 2021 · 1 min · jiezi

关于测试:0602-Jenkins-job-机制

批改系统配置默认 shell:bash默认邮箱:邮箱地址与账户默认地址:服务器域名平安:设置平安机制时区:时区批改插件:设置代理、装置插件、更新插件slave 节点:增加 slave 节点批改时区# 运行容器时批改时区docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai jenkins/jenkins# 获取初始治理明码装置插件 配置代理

September 2, 2021 · 1 min · jiezi

关于测试:0504-docker-搭建-Selenium-Hub

相干参考链接: https://ceshiren.com/t/topic/... https://github.com/SeleniumHQ... 启动 Grid hub# 拉取镜像docker pull selenium/hub# 运行docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium启动 node# 拉取镜像docker pull selenium/node-chrome-debug# 运行docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium能够创立多个 node 须要改 docker run --name=chrome1(改) -p 5903(改):5900  hub 与 node 不在同一台设施上的连贯解决须要通过 -e  指定以下2个环境变量: HUB_PORT_4444_TCP_ADDR=172.17.0.3 HUB_PORT_4444_TCP_PORT=4444 

September 2, 2021 · 1 min · jiezi

关于测试:0503-docker-常用命令

根本命令查看 docker 版本信息: docker version  查看 docker 零碎信息: docker info  镜像治理查看所有镜像: docker images  搜寻镜像: docker search 镜像名  拉取下载: docker pull 镜像名:版本  导出: docker save 镜像名 > 镜像名.tar  导入: docker load < 镜像名.tar  删除: docker rmi 镜像名:版本  如果有容器在占用时,须要先删除容器,再删除镜像 更改镜像名: docker tag 镜像名1:版本1 镜像名2:版本2  查看镜像创立历史: docker history 镜像名  容器治理运行容器: docker run -d --name=xxx 镜像名:版本  查看运行的容器: docker ps  查看容器中运行的过程: docker top 容器名 或者 容器ID  查看资源占用: docker stats 容器名 或者 容器ID  容器的启动/重启/进行/杀掉: docker start/restart/stop/kill 容器名 或者 容器ID  ...

September 2, 2021 · 1 min · jiezi

关于测试:0502-docker-安装与配置CentOS

装置依赖:yum install -y yum-utils device-mapper-persistent-data lvm2 iptables-services增加源yum-config-mapper --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo装置dockeryum -y install docker-ce启动 docker# 启动systemctl start docker# 设置开机启动 dockersystemctl enable docker设置镜像加速器获取加速器信息 创立 daemon.json 文件# 进入docker 目录cd /etc/docker# 新建 daemon.json 文件vim daemon.json# 输出镜像信息{ "registry-mirrors": ["https://s2nni63l.mirror.aliyuncs.com"] # 能够改为本人阿里云的镜像加速器}# 重新启动 dockersystemctl restart docker

September 2, 2021 · 1 min · jiezi

关于测试:0501-docker-介绍

简介起源于 2013 年 是一个开源的利用容器引擎,基于 Go 语言开发 docker 能够让开发者打包利用以及依赖包到一个轻量级、可移植的容器中,再公布到任何风行的零碎 长处疾速交付利用简单环境治理,利用隔离轻量级docker 与虚拟机的区别 docker 的架构 相干概念docker 镜像:docker images 每一个镜像都可能依赖一个或多个上层的镜像组成的另一个镜像,AUFS 文件系统docker 仓库:docker registry 集中寄存镜像的中央docker 容器:docker containers 镜像运行后的过程

September 2, 2021 · 1 min · jiezi

关于测试:0412-常见接口安全问题及解决方案

命令注入破绽指标是通过易受攻击的应用程序在主机操作系统上执行任意命令 SQL注入破绽产生在应用程序与数据库层的安全漏洞 危害及预防危害:破绽能让黑客无限度的应用SQL,造成数据泄露,甚至是近程名利操作预防:应用参数化查问防止数据被混在指令中XSS破绽跨站脚本破绽,是一种网站应用程序的安全漏洞攻打 次要通过利用网页开发时留下的破绽,应用奇妙的办法注入歹意制订代码,导致用户加载并执行攻击者歹意制作的网页程序 危害及预防危害:危害网站上的用户,导致其被动执行非预期网页脚本预防:输入输出过滤、利用浏览器平安机制等检测:可自动化发现CSRF破绽跨站申请伪造 是攻击者通过技术手段,坑骗用户应用浏览器拜访一个本人已经认证过的网站并运行一些操作 危害及预防危害:导致用户执行非本意的网站预防:减少 token 校验,查看 referer

September 2, 2021 · 1 min · jiezi

关于测试:0411-常见接口安全测试工具

OWASP ZAPWVSAppScanBurpSuiteSqlmap平安测试关注维度传输: 敏感信息传递加密链路加密接口: 访问控制参数: 注入:SQL注入、命令注入、文件注入越权:越过更高权限、越过同级权限建设平安测试流程白盒代码剖析:自动化 sonar、findbugs 等黑河扫描机制:自动化 zap、wvs、burpsuite、appscan、SQLmap业务流程平安摸索:人工测试 buipsuite、ZAP

September 2, 2021 · 1 min · jiezi

关于测试:0410-swagger-接口管理体系

前端开发、后端开发、测试的需要 罕用的接口治理计划swagger:接口治理的综合性解决方案YAPI:接口治理平台接口生命周期需要与设计阶段 接口标准研发阶段 stub 服务接口根底测试用例编写设计测试阶段 残缺的接口测试用例继续集成swagger 解决方案https://swagger.io/ 涵盖整个接口治理周期设计阶段:提供设计工具和标准研发阶段:提供 stub 环境联调和客户端 sdk测试阶段:生成测试脚本与联调环境交付阶段:文档与 sdk 交付swagger 开源工具集open api specification:api 形容的配置文件swagger editor:交互式的 api 标准编写与文档界面生成工具swagger ui:交互式的在线文档swagger codegen:代码生成工具,用于生成 client sdk 与 stub serverhttps://ceshiren.com/t/topic/... YAPIhttps://hellosean1025.github....

September 1, 2021 · 1 min · jiezi

关于测试:0407-接口请求构造

get query 申请params_query = {"key1": "value1","key2": "value2"}r = requests.get(url, params=params_query)form 申请params_form = {"key1": "value1","key2": "value2"}r = requests.post(url, data=params_form)文件上传files = {"file": open("file_path", "rb")}r = requests.post(url, files=files)headerheaders = {"user-agent": "agent"}r = requests.get(url, headers=headers)cookiecookies = {"cookies": "value"}r = requests.get(url, cookies=cookies)

September 1, 2021 · 1 min · jiezi

关于测试:0406-sessioncookietoken-区别

cookies 与 session 的区别cookie:浏览器接管服务器的 set-cookie 指令,并把 cookie 保留到电脑上,每个网站保留的 cookie 只能用于本身的网站session:数据存储到服务端,只把关联数据的一个加密串放到 cookie 中标记tokentoken 的利用场景凭借认证信息获取 token,或者通过后盾配置好 token在相干申请中应用 token,少数是以 query 参数的状态提供session 与 token 的区别token:一个用户申请时附带的申请字段,用于验证身份与权限session:能够基于 cookie,也能够基于 query 参数,用于关联用户相干数据跨端利用时,比方 Android 原生零碎不反对 cookie 须要用 token 辨认用户须要用把 sessionid 保留到 http 申请中的 header 或者 query 字段中cookie的解决传递 cookie 的形式通过申请头信息传递通过申请的关键字参数 cookies 传递通过 header 传递 cookieimport requestsdef test_demo(): url = "https://httpbin.testing-studio.com/cookies" header = {"Cookie": "name=leo"} r = requests.get(url=url, headers=header) print(r.request.headers) # 打印后果{'User-Agent': 'python-requests/2.25.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'name=leo'}通过关键字参数传递import requestsdef test_demo(): url = "https://httpbin.testing-studio.com/cookies" header = {"User-Agent": "leo"} cookie = { "name": "leo", "address": "Foshan" } r = requests.get(url=url, headers=header, cookies=cookie) print(r.request.headers) # 打印后果{'User-Agent': 'leo', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'address=Foshan; name=leo'}\ ...

September 1, 2021 · 1 min · jiezi

关于测试:0404-常用代理工具

代理工具: Charlesburpsuitefiddlermitmproxy高性能代理服务器 squiddante反向代理: Nginx流量转发与复制 em-proxygoriptableNginxsocks5 代理 ssh -d 参数代理的工作机制 Charles 应用https://www.jianshu.com/p/d0a... https://ceshiren.com/t/topic/... 配合 Chrome 浏览器 SwitchyOmega 应用 https://www.cnblogs.com/nicol... 罕用性能模仿弱网断点调试rewrite(联合正则匹配应用) 反向代理map localmitmdump

September 1, 2021 · 1 min · jiezi

关于测试:0402-接口协议分析工具

协定剖析工具网络监听: TcpDump + WireShark代理 Proxy 举荐工具:手工测试-Charles(全平台);平安测试 burpsuite(全平台)自动化测试:mitmproxy其余代理:Fiddler(仅 Windows)协定客户端工具:curl,postman

September 1, 2021 · 1 min · jiezi

关于测试:0401-常见接口协议

TCP / UDP区别: TCP:面向连贯、谬误重传、拥塞管制,实用于可靠性高的场景UDP:不须要提前建设连贯,实现简略,实用于实时性高的场景restful 软件架构格调借助于 http 协定的根本申请办法代表资源的状态切换 常见申请形式: post:新增或者更新get:获取资源put:更新资源delete:删除资源RPC 协定以本地代码调用的形式实现近程执行 DubbogGPCThrift

September 1, 2021 · 1 min · jiezi

关于测试:0329-健壮性测试

简介用于测试零碎在呈现故障时,是否可能主动复原,或者疏忽故障持续运行 操作过程对利用进行忙点:应用 monkey,appcrawler网络不佳:Charles数据不通

September 1, 2021 · 1 min · jiezi

关于测试:0328-弱网测试

弱网问题关闭环境,网速升高 丢包数据无奈加载音讯更新不及时弱网速度罕用网速展现: 工具与应用应用 charles 进行弱网测试 https://blog.csdn.net/qq_2437...

September 1, 2021 · 1 min · jiezi

关于测试:0327-耗电量测试

耗电量指标待机时间(重点关注指标)装置与应用battery-historian https://github.com/google/bat... 环境须要装备 Go 语言的环境

September 1, 2021 · 1 min · jiezi

关于测试:AIMA如何通过质量指标提高QA的绩效译-IDCF

QA 在团队的价值总是被质疑,本文利用简略的 AIMA(剖析、影响、度量、演示)四个步骤,介绍如何将 QA 的工作重心放在跟团队/我的项目的质量指标关联的工作上,通过质量指标来进步 QA 的绩效,体现 QA 的价值。 原文为葡萄牙语,模型里的 AIMA 别离来自于四个步骤的葡萄牙语首字母: 剖析 Análise影响 Impacto度量 Metrificação演示 Apresentação随着越来越多的公司应用 KPI 指标来掂量软件品质,品质分析师(QA)迎来了更多的机会。QA 工作有很多的可能性,比方:被安顿在实际定义不明确的团队或组织,或者是 QA 角色职责不清晰的团队。 QA 要发展的流动跟团队具体情况无关,但能够应用一种办法轻松地将改良点可视化,从而疾速为公司和团队减少价值。因而,当 QA 在品质流程没有明确定义的团队中工作时,须要思考以下两个问题: “你将如何为团队减少价值?”“你将要发展什么流动?”答案通常是雷同的:理解上下文并确定改良点。通过这种形式,能够使得口头具备战略性,因为任何不基于事实和数据的申明,既不可能是团队决策,也很可能无奈实现。 一、AIMA 办法为了反对这个改良过程,上面将介绍 AIMA(剖析、影响、度量和演示)办法: 剖析第一步,收集尽可能多的信息并做笔记。通过有目的地察看,能够确定改良点,能够通过与团队的任何互动(例如会议或典礼)找到改良点。 此外,结对是一种很好的交换形式,可能减速对我的项目和公司中应用的技术的了解。 本步骤获取输出,以辨认咱们能够轻松减少价值的点。 影响下一步将是通过解决须要频繁返工的最显著的日常问题来减少价值。要改良的始终是那些重要而难以改良的中央,通常须要投入很多精力和工夫,如果不实现,可能会影响产品或业务。 能够依据以下几点来领导你的口头: 与团队建设信赖关系;基于最终用户的体验来制订决策;探讨选定的 KPI;必要时与我的项目干系人保持一致。通过这些实际,你将有更多空间提出变更和新的解决方案,为交付品质做出重大贡献。 度量“没有被度量的货色是无奈改良的。” 因而,当咱们思考软件品质时,度量影响对于理解咱们是否走在正确的轨道上很重要。如果偏离正轨,咱们能够更改策略以与业务指标保持一致。 要映射的指标取决于要实现的指标,例如代码覆盖率、生产中发现的缺点和圈复杂度。 通过指标,咱们能够展现所发展工作的可靠性和一致性,并将其用作制订战略决策的输出。 演示这是十分要害的一步。通过演示,咱们利用布局开始时列出的指标来展现成功率。此时,咱们必须出现在工夫范畴内执行的指标,显示团队行动计划带来的影响和后果。 除了工作的要点之外,咱们必须牢记咱们从后果中学到的货色,以及在下一个周期中要发展的步骤。 二、AIMA 办法实际背景伊莎贝尔被一家金融行业的公司聘用,将退出一个新成立的团队,负责为其外围零碎开发新性能。该性能须要在一个小时内清理 Boleto 银行单据的付款。 第一步:剖析退出团队后,伊莎贝尔开始察看,记录所有可能相干的内容。在与团队互动时,她询问无关新性能、以后零碎如何工作、更改起因是什么、施行截止日期是什么、以及我的项目架构如何工作等问题。 通过与团队的互动,她得悉团队的工作是进步我的项目品质,第一个指标是实现 30% 的代码覆盖率。在与团队交谈时,伊莎贝尔意识到目前没有在任何应用程序层上执行测试。她认为团队管理层设定的 KPI 与团队实际之间存在偏差。 伊莎贝尔发现,在我的项目开始时,一位名叫费尔南达的开发人员开始写单元测试,但因为我的项目缓和的交付周期和短少团队其余成员的参加而大功告成。 第二步:影响伊莎贝尔与费尔南达进行沟通,并提出了基于 KPI 的测试策略,从一个高风险点开始,即负责在一个小时内清理 Boleto 付款的模块,之前实现这个最多须要 3 天。在费尔南达的反对下,伊莎贝尔与团队探讨了进行测试的重要性,以及如果无奈清理付款会产生什么影响。 这样,团队批准开始为负责清理领取的模块编写单元测试。因而,伊莎贝尔和费尔南达负责在下一个开发周期中启动这个流动。 开始创立第一个测试时,他们就发现之前在夏令时开始和完结之间的时间段内进行测试时,零碎的行为跟预期不符。他们最终发现零碎中存在不统一,代码逻辑仍在思考夏令时。也就是说,他们的测试很快奏效了,发现了问题。 第三步:度量为了掂量测试所达到的代码笼罩程度,伊莎贝尔与费尔南达应用工具生成每个测试笼罩的行百分比报告。这样,除了能够清晰地晓得哪些没有测试笼罩外,团队能够通过辨认测试较少笼罩的点来做策略性调整,并通过危险剖析确定须要优先减少测试笼罩的模块。 第四步:演示在开发周期完结后,伊莎贝尔与费尔南达应用收集到的信息给干系人演示,展现对于既定目标的改良。结果显示覆盖率减少了 8%,下一步将把这些测试集成到流水线上。 通过演示,更多的团队成员意识到测试在我的项目中的重要性,因而,他们估算的时候除了思考开发工夫,还会思考测试。 三、最初咱们能够得出结论,为了使软件品质保障的后果与 KPI 和干系人的冀望保持一致,须要曝光品质保障过程。通过这种形式,可能收到反馈以继续改良过程中的每个流动。 ...

September 1, 2021 · 1 min · jiezi

关于测试:0326-网络流量分析

显示网络流量(倡议应用真机): adb shell dumpsys netstats  对指定利用进行流量剖析adb shell dumpsys package 包名 | grep userId  取得 userId 后: adb shell dumpsys netstats | grep userId

August 31, 2021 · 1 min · jiezi

关于测试:0325-内存统计

指标解析VSS:掂量虚拟内存大小,无太大用处,因为无奈晓得调配的物理内存大小RSS:各过程的 RSS 相加,会超过零碎内存使用量PSS:各过程的 PSS 之和,就是零碎的内存使用量USS:是 PSS 中各自调配的局部,不蕴含任何共享的局部各指标的大小关系: VSS >= RSS >= PSS >= USS 查看 3 小时内的内存应用状况: adb shell dumpsys procstats --hours 3  查看指定过程的内存应用状况: adb shell dumpsys meminfo 利用包名 

August 31, 2021 · 1 min · jiezi

关于测试:0324-CPU-统计

CPU 与 GPU 的关系 中间层保护一个队列CPU 将 display list 放入队列GPU 从队列中获取数据进行绘制图形 API 不容许 CPU 间接与 GPU 通信通过中间层来连贯这两局部GPU 渲染工具Android 开发者工具提供的性能调优工具 Profile GPU rendering 页面阐明: 此工具会绘制每一帧所耗费的工夫不同色彩,代表 UI 绘制的不同阶段在柱状图中,有一条绿色横线代表 16ms 的绘制工夫基准GPU 会统计并显示 APP 最近运行的 128 帧柱形图阐明: 蓝色较高: view 忽然有效onDraw 函数中做了简单的绘制逻辑红色较高: view 过于简单或者反复提交橙色较高: GPU 工作太多,简单的 view 绘制

August 31, 2021 · 1 min · jiezi

关于测试:0323-卡顿分析

卡顿影响因素:内存问题:内存抖动、full GCCPU:计算耗时render:布局简单、overdraw(适度渲染)工具-systraceAndroid SDK 的一个小工具,寄存门路: androidSDK\platform-tools\systrace 环境要求: python 2.7装置 win32con: pip install pypiwin32 装置 six: pip install six 应用启动设施进入工具对应文件的门路下,输出命令及相干参数: python systrace.py -e IP:5555(对应设施的IP、端口,如果只有一台设施,可省略) -l ,进入录制模式在设施上进行操作实现操作后,再次按回车键,生成报告 报告款式: 报告详细信息帧点: 绿色:16.6ms 内黄色、红色:超过16.6ms(重点关注 红色 )工作状态: 灰色:休眠蓝色:可运行绿色:运行中橙色:不响应信号函数调用

August 31, 2021 · 1 min · jiezi

关于测试:0322-H5-性能分析

资源加载指标prompt for unload:拜访一个新页面时,待业面卸载实现的工夫redirect:重定向,用户登记登录时,返回主页面和跳转到其余的网站等app cache:查看缓存,是否关上DNS:DNS 查问的工夫,如果是长链接或者申请文件来自于缓存的本地存储,则返回 fetchStart 工夫点TCP:与服务器建设链接的工夫request:浏览器发动申请的工夫response:拿到第一个响应字节到最初一个响应字节的工夫processing:各种状态的工夫点load:触发 load 事件执行的工夫 应用 selenium 获取工夫性能信息: import jsonfrom selenium import webdriverclass Test: def test01(self): driver = webdriver.Chrome() driver.get("https://www.baidu.com") data = driver.execute_script("return JSON.stringify(window.performance.timing)") data_json = json.dumps(data, ensure_ascii=True, indent=4) print(data_json)

August 31, 2021 · 1 min · jiezi

关于测试:0321-webview-性能分析

次要是应用 Chrome 浏览器 F12 中的网络对接口的响应工夫进行判断 其中: Queuein:队列等待时间Stalled:在队列中,进行申请Waiting:服务器响应工夫Content Download:下载工夫

August 31, 2021 · 1 min · jiezi

关于测试:0320-专项测试APP-启动性能分析

Activity 启动流程 Application OnCreate 加载第三方的 sdkActivity OnCreate 加载本身的逻辑发送近程数据申请渲染界面APP 启动性能指标冷启动:最重要的启动指标,着重优化,倡议工夫 5 秒暖启动:倡议工夫 2 秒热启动:倡议工夫 1.5 秒首屏启动测试的次要流程adb logcat:不够精确录屏 + 视频拆帧:较精确,须要人工操作uiautomator 等自动化工具,进行 200ms 巡检界面变动traceview硬埋点:最精确,而且覆盖度更广adb logcat清理缓存数据: adb shell pm clear package 进行过程: adb shell am force-stop package 启动 APP: adb shell am start -S -W package/activity 获取数据: adb logcat | grep -i displayed 通过 adb logcat 获取后果: startTime:记录刚筹备调用 startActivityAndWait() 的工夫点endTime:记录 startActivityAndWait() 函数调用返回的工夫点waitTime:startActivityAndWait() 调用耗时;waitTime = endTime - startTime 应用 ffmpeg 拆帧革除利用缓存: adb shell am force-stop package 进行 30s 录屏,并存放到手机的指定地址: adb shell screenrecord --bugreport --time-limit 30 录屏文件门路 & 启动APP,跳转到指定界面:adb shell am start -S -W package/activity 把录屏文件从手机拉取到电脑:adb pull 录屏文件门路 寄存门路 将视频转换为 gif 格:ffmpeg -i 录屏文件 拆分格局 将视频拆帧,每秒拆成10份,存储为jpg格局图片:ffmpeg -i 录屏文件 -r 10 frames_%03d.jpg 再通过逐帧剖析图片,找到点击的工夫以及关上指定界面的工夫,从而推算启动工夫

August 31, 2021 · 1 min · jiezi

关于测试:0318-OpenSTF手机设备管理平台

简介OpenSTF 是一个手机设施治理平台 能够对手机进行远程管理、调试、近程手机桌面监控等操作 装置参考文章: https://www.jianshu.com/p/8f8... 倡议应用 docker 装置 拉取镜像docker pull openstf/stf:latestdocker pull sorccu/adb:latest # 不倡议docker pull rethinkdb:latest启动 rethinkdbdocker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090启动 stfdocker run -d --name stf --net host openstf/stf stf local --allow-remote对于 adb不倡议应用 docker 装置,间接将本地的 adb 工具配置到环境变量应用即可 CentOS 装置 adb: https://www.jianshu.com/p/e0d... 留神:先启动 rethinkdb,后启动 stf 近程连贯保障手机与电脑处于同一个网段,先用数据线连贯电脑 开启近程调试端口adb -s 设施名(通过 adb devices 获取) tcpip 5555(端口号)连贯近程设施adb connect ip:prot

August 31, 2021 · 1 min · jiezi

关于测试:混沌工程推动可观测性的最佳实践-IDCF

本文中,咱们应用 DDD 领域建模的办法,设计了一个正当且简单的微服务叫车零碎,并在该零碎之上,利用OpenTelemetry进行了可观测性结构实际,最初采纳“强化混沌工程”的方法论,借助故障注入伎俩,实现了用于验证可观测性价值的最佳实际,并将游戏冲关的玩法融入软件开发的生命周期中,晋升利用的排障能力,以此升高零碎的MTTR。 一、一个类 Uber 叫车试点利用为了达到利用可观测性结构的成果,须要设计一个足够简单的试点利用,这里我抉择了这个类 Uber App 的设计和开发。 1.1 领域建模首先,通过畛域驱动设计DDD的事件风暴,集众人之力实现该试点利用的畛域模型设计: 随后察看畛域中反复呈现的名词,找出限界上下文: 这样,类 Uber 叫车试点利用的畛域模型建模结束。 1.2 微服务架构设计接着,咱们持续设计试点利用微服务化的零碎架构: 类 Uber 叫车试点利用有五个微服务,其中四个是由限界上下文衍生进去的,包含: User 乘客Match 叫车匹配Trip 载客旅程Payment 领取金流另外加开了broker-service,作为Websocket的对立进口。 微服务之间的通信机制,除了最间接的RESTFul API,即上下游调用关系之外,也应用了RabbitMQ作为音讯队列将畛域事件无效播送到各服务去。 到了这边,类 Uber 叫车试点利用的设计也已趋于残缺,接下来就是实现。 1.3 Java Spring Boot 实现应用 Java Spring Boot,遵循 Clean Architecture,最初花了一个月的工夫将后端残缺开发进去,共计大概 7000 行代码。 本文并不会深刻开展 Clean Architecture 的开发过程,有趣味的敌人可参考:https://github.com/Johnny8508... 二、OpenTelemetry 结构可观测性2.1 可观测性概念的回顾平时在开发环境中,遇到Bug的时候为求不便,都会开启调试器,借助中断来确认利用的行为是否合乎预期,然而,一旦利用部署到各环境中,便不能再应用调试器来察看利用的行为了。 所谓的可观测性,指的是利用在被部署到某个线上环境后,其自身还能透过“某种机制”来让开发人员,便捷地观测利用自身在线上“各个工夫点”的行为。 其中,Trace记录着每个性能残缺的执行过程。因为执行过程会充斥着「上下游的调用关系」,联合起来就造成了一棵树。 那么,在技术上到底该如何出现? 手动剖析: Grafana 出现: 2.2 OpenTelemetry 的新尝试OpenTelemetry的创造并非要解决新的问题,而是一个在可观测性三大支柱的需要下,实现繁多规范的框架。咱们决定要尝试OpenTelemetry这一项CNCF近期推出的技术框架。 咱们先来看一下在以前,咱们都是如何做到分布式链路追踪的? OpenTracing + Jaeger ...

August 31, 2021 · 2 min · jiezi

关于测试:0315-截图日志与录屏

截图def screenshot(self, file): """封装截图办法""" self.driver.save_screenshot(file) ### allure 获取截图allure.attach(picture, attachment_type=allure.attachment_type.PNG)日志import logging# 增加日志logging.info("start find : \nargs: " + str(args) + "\nkwargs: " + str(kwargs))联合 pytest.ini 文件应用 [pytest]addopts = -sv --log-cli-level=INFO录屏应用第三方工具 scrcpy,次要思考的是,应用 appium 录屏,无奈获取局部手机的受权 GitHub 地址https://github.com/Genymobile... 应用教程https://blog.csdn.net/was172/... 将录屏的性能封装到 conftest.py 中 import osimport signalimport subprocessimport pytest@pytest.fixture(scope="function", autouse=True)def scrcpy_record(): cmd = "scrcpy --record file.mp4" p = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) print(p) yield os.kill(p.pid, signal.CTRL_C_EVENT)

August 30, 2021 · 1 min · jiezi

关于测试:0314-设备交互-API

复电appium-复电 self.driver.make_gsm_call('5551234567', GsmCallActions.CALL)发短信appium-发短信 self.driver.send_sms('555-123-4567', 'Hey lol')网络设置self.driver.set_network_connection(connection_type) 截图self.driver.get_screenshot_as_file(file_path)

August 30, 2021 · 1 min · jiezi

关于测试:0313-微信小程序自动化测试

小程序的运行环境 筹备工作设置 chromedriver 正确版本 设置 chrome option 传递给 chromedriver 应用 adb proxy 解决 fix chromedriver 的bug 微信小程序自动化测试辅助工具adb proxy微信小程序自动化测试辅助工具adb proxy 根本 capability 设置

August 30, 2021 · 1 min · jiezi

关于测试:0312-Android-混合页面测试

如何判断页面是 webview断网查看看加载条看顶部是否有敞开按钮下拉刷新,页面看是否刷新下拉刷新,是否有网页提醒方用工具查看筹备工作与纯 web 页面测试统一 原生 与 webview 的切换# 第一次切换driver.switch_to.context(driver.contexts[-1])# 从 webview 切换到 原生driver.switch_to.window()常见问题设施Android 6.0 的设施,默认反对 webview 操作其余模拟器和物理机须要关上 webview 调试开关 PC浏览器定位元素Chrome 浏览器:Chrome 62.x 才能够更好地查看 webview 的内部结构,其余版本的都有bug代码switch_to.context(driver.contexts[-1])switch_to.window()

August 30, 2021 · 1 min · jiezi

关于测试:0311-Android-纯-web-页面测试

appium 反对多种架构 APP 自动化测试: 原生利用混合利用纯 web 利用:例如 手机浏览器、微信H5 环境筹备手机端被测浏览器:倡议应用手机自带浏览器,或者 Chrome 浏览器PC 端装置 Chrome 浏览器,并且能拜访 Google下载手机浏览器对应的driver版本获取手机浏览器版本信息 $ adb shell pm list package | grep browserpackage:com.android.browser$ adb shell pm dump com.android.browser | grep version versionCode=25 minSdk=25 targetSdk=25 versionName=7.1.2 $ adb shell pm dump com.android.chrome | grep version versionCode=438909010 minSdk=21 targetSdk=30 versionName=89.0.4389.90客户端代码设置 capabilities caps = dict()caps["browserName"] = "Browser" # 默认为手机自带浏览器caps["chromedriverExecutable"] = "driver寄存地址" # 装置 appium 时默认会自带 chromedriver元素定位不能通过 appium inspector / uiautomatorviewer 进行元素定位 ...

August 30, 2021 · 1 min · jiezi

关于测试:移动端功能测试

测试用例的存在,能对简单需要的性能品质晋升,以及本身测试效率的晋升,起到十分根本的促进作用,因为测试用例自身就是通过对需要点的梳理,找出潜在的测试点,防止测试点的脱漏。而case是否笼罩全、漏测少则显得很重要;对于一名测试,思维谨严、效率高、沟通顺畅、责任心强,这些都要具备,在梳理测试点的过程中,要很分明找出各个测试点之间的各种关系:互斥、前后关联、相互影响等,省去了在执行阶段费神结构设计的工夫。 功能测试次要是测试软件app的性能点、业务逻辑; 关联性(次要是测试客户端和PC的交互,客户端解决完后,保障PC端数据同步且统一),比方当初在测的veleap app,同一账号能够在手机端和网页端登录,这时要留神了,账号里的数据两端是否统一,对一端里的数据扭转,另一端的数据是否相应扭转,而相应的一些关联数据是否产生了正确的变动......这些都是测试时要着重查看的。 对于兼容性测试,手机app须要重点关注,不同操作系统:android、iOS,不同手机厂商:小米、华为等,不同的手机屏幕分辨率,与其余第三方app的兼容。 兼容性影响因素有:用户、硬件、软件、技术、网络,这也是咱们要思考的方面,比方,咱们须要根据本身APP用户群体的特色以及应用习惯,去做相应的兼容。比方用户群体如果大多是老人的话,能够思考大字体的适配。比方针对游览人士,能够思考过程中网络的情况。如果领有大量海内用户,能够思考多币种、多语言、多度量、时区问题;硬件上,设施类型(手机、平板、穿戴式设施)、生产商(安卓手机存在每个厂商的定制化差别)、显示屏(屏幕大小、分辨率)、非凡硬件性能(NFC、蓝牙、相机、定位性能等),最初,哪些会思考到要兼容测试,UI显示、屡次疾速点击、拉起虚构键盘挡住输入区、虚构物理按键收起与显示、多个输入框来回切换、控件焦点热区文体、前后台、多个利用切换、指纹识别和faceid等、框架降级、网络、新老版本兼容、第三方依赖库或者SDK降级、前后端版本兼容 中断或解体测试,中断测试次要是测试app是否会呈现crash状况。复电、短信、闹钟、低电量等网络环境忽然扭转,或者网络中断,例如隧道、电梯(离线反对),切换网络,例如数据连贯切换到wifi。 外部设备,比方充电,插耳机,内存不足,扭转设施方向,扭转手机语言,例如英文,多后台程序切换,长时间开机并且长时间开启app UI测试,包含用户敌对性、人性化、易操作性。

August 30, 2021 · 1 min · jiezi

关于测试:0310-断言

一般断言-assert遇到断言失败,立刻抛出异样,不再往下执行 hamcrest 断言hamcrest / PyHamcrest 介绍能组合成灵便表达式的匹配器类库用于编程断言的框架可进步可读性与开发测试效率可扩展性强反对多种语言装置pip install hancrest应用hamcrest断言 基于Python语言Hamcrest断言的应用

August 29, 2021 · 1 min · jiezi

关于测试:0309-toast-控件识别

toast 介绍繁难的音讯提示框显示工夫无限是一个零碎级别的控件,归属于零碎 settings当 APP 发送音讯时,不是本人造出来的弹框,而是发给零碎,由零碎对立进行弹框此类空间不在 APP 内,须要非凡的控件识别方法toast 定位appium 应用 uiautomator 底层的机制来剖析抓取 toast,并把 toast 放到控件树内,但自身并不属于控件 前置工作:设置 capabilities caps["automationName"] = "uiautomator2" # 默认引擎应用 xpath 查找 //*[@class="android.widget.Toast"]//*[contains(@text, "xxxx")]

August 29, 2021 · 1 min · jiezi

关于测试:0306-APPUI自动化测试等待方式

与 Web 自动化测试相似。 强制期待(不举荐)time.sleep()  隐式期待(全局性)设置一个超时工夫,服务端 appium 会在指定的工夫内,不停的查找,默认的工夫值是 0 在服务端期待 用法: driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)  倡议在 setup() 办法中加上 留神:隐式期待仅对 查找元素 find_element() 办法失效,须要搭配显式期待应用 显式期待(期待指定元素)在客户端期待,能够期待动静加载的 ajax 元素; 页面上元素个别呈现的先后顺序 titledom 树呈现,但 presence 还不残缺css 呈现,示意可见 visibilityjs 呈现,代表相干的 js 响应事件可执行(例如可点击 clickable)HTML 文档时自上而下加载的 js 文件加载会阻塞 HTML 内容的加载,有些须要用到 js 异步加载的形式来实现 js 的加载 样式表下载实现之后,会与之前的样式表一起进行解析,从而对之前的元素从新渲染 相干模块: WebDriverWait()unitil()expected_conditions

August 29, 2021 · 1 min · jiezi

关于测试:0305-APP自动化测试常用定位方式

id 定位dirver.find_element_by_id(resource-id 属性值)driver.find_element_by(MobileBy.ID, resource-id 属性值)accessibility_id 定位driver.find_element_by_accessibility_id(content-desc 属性值)driver.find_element_by(MobileBy.ACCESSIBILITY_ID, content-desc 属性值)xpath 定位driver.find_element_by_xpath(xpath 属性值)当遇到无奈惟一定位的状况,倡议应用 xpath 的组合定位 uiautomator 定位长处: uiautomator 是 Android 的工作引擎,比 xpath 定位速度快毛病: 表达式书写简单,容易写错,IDE 无提醒Uiautomator--Uiselector元素定位 滚动查找元素: from appium.webdriver.common.mobileby import MobileBydef find_by_scroll(self): self.driver.find_element( MobileBy.ANDROID_UIAUTOMATOR, 'new UiScrollable(new UiSelector().' 'scrollable(true).instance(0)).' 'scrollIntoView(new UiSelector().' 'text("想要查到的文本").' # 批改想要查找的文本信息即可 'instance(0));').click()

August 29, 2021 · 1 min · jiezi

关于测试:0304-元素定位工具

uiautomatorviewerAndroid 环境举荐应用:uiautomatorviewer Android sdk 自带工具运行速度快留神:会与 appium server 抵触 应用形式配置环境变量Windows 零碎,uiautomatorviewer.bat 文件所在门路 AndroidSDK\tools\bin  在命令终端输出 uiautomatorviewer 即可 Web-editor(浏览器界面)装置与应用链接源码https://github.com/alibaba/we...

August 29, 2021 · 1 min · jiezi

关于测试:0303-APP-控件定位

Android 基础知识Android 是通过容器的布局属性来治理子控件的地位关系 布局过程就是把界面上的所有控件,依据其间距的大小,摆放在正确地位 Android 的七大布局LineLayout:线性布局RelativeLayout:绝对布局FrameLayout:帧布局AbsoluteLayout:相对布局TableLayout:表格布局GridLayout:网格布局ConstraintLayout:束缚布局Android 四大组件activity:与用户交互的可视化界面service:实现程序后盾运行的解决方案content provider:内容提供者,提供程序所须要的数据broadcast receiver:播送接收器,监听内部事件的到来(例如复电)罕用控件TextView:文本控件EditText:可编辑文本控件Button:按钮ImageButton:图片按钮ToggleButton:开关按钮ImageView:图片控件CheckBox:复选框控件RadioButton:单选框控件布局一种可用于搁置很多控件的容器; 能够依照肯定的法则调整内部空间的地位,从而编写出精美的界面; 布局的外部除了避免空间外,也能够避免布局,通过多层布局的嵌套,可能实现一些比拟不咋的界面 iOS 基础知识布局iOS 去掉了布局的概念,间接用变量间的绝对关系实现地位的计算 开发环境零碎:MacOS X开发工具:Xcode开发语言:ObjectC安装文件:.ipa / .app应用 appium 测试 iOS 利用须要应用 MacOS 零碎 控件基础知识dom:Document Object Model 文档对象模型dom 利用:最早利用于 HTML 与 js 的交互;用于示意界面的空间层级、界面的结构化形容、常见的格局为 HTML、xml;外围元素为节点和属性xpath:xml 门路语言,用于 xml 中的节点定位Android 利用的层级构造与 HTML 不一样,是一个定制的 xml APP source 相似于 dom,用于示意 APP 的层级,代表了界面里所有的空间树的构造 每个空间都有它的属性(resourceID,xpath,aid),然而没有 css 属性 根本属性 clickablecontent-descresource-idtextboundsiOS 与 Android 的区别 dom 属性与节点构造相似名字和属性的命名不同Android:resourceid;iOS:nameAndroid:contest-desc;iOS:accessibility-id

August 29, 2021 · 1 min · jiezi

关于测试:0302-capabilities-设置

测试用例的重要局部导入依赖from appium import webdrivercapabilities 设置初始化 driver webdriver.remote 隐式期待,加强用例的稳定性元素定位与操作断言capabilities 设置官网文档阐明 罕用参数 键形容值noReset在以后 session 下不会重置利用的状态。默认值为 falsetrue, falsefullReset(iOS)删除所有的模拟器文件夹。(Android) 要革除 app 里的数据,请将利用卸载能力达到重置利用的成果。在 Android, 在 session 实现之后也会将利用卸载掉。默认值为 falsetrue, falsedontStopAppOnReset在应用 adb 启动利用之前,不要终止被测利用的过程。如果被测利用是被其余钩子(anchor)利用所创立的,设置该参数为 false 后,就容许钩子(anchor)利用的过程在应用 adb 启动被测利用期间依然存在。换而言之,设置 dontStopAppOnReset为 true后,咱们在 adb shell am start的调用中不须要蕴含 -S标识(flag)。疏忽该 capability 或 设置为 false的话,就须要蕴含 -S标识(flag)。默认值为 falsetrue或falseskipDeviceInitialization跳过装置、权限设置等操作;能晋升调试、运行的效率。默认值为 falsetrue或falseavd被启动 avd 的名字例如 api19newCommandTimeout用于客户端在退出或者完结 session 之前,Appium 期待客户端发送一条新命令所破费的工夫(秒为单位)例如 60udid连贯的实在设施的惟一设施编号 (Unique device identifier)例如 1ae203187fc012gautoGrantPermissions让Appium主动确定您的利用须要哪些权限,并在装置时将其授予利用。默认设置为 falsetrue或false# capabilities 设置 democaps = dict()caps["platformName"] = "Android"caps["deviceName"] = "emulator-5554"caps["appPackage"] = "com.xueqiu.android"caps["appActivity"] = ".view.WelcomeActivityAlias"caps["noReset"] = "true"self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)self.driver.implicitly_wait(5)# 设置页面期待闲暇状态的工夫,防止动静页面刷新影响元素定位caps["settings[waitForIdleTimeout]"] = 0

August 29, 2021 · 1 min · jiezi

关于测试:0301-appium架构介绍与环境安装

appium 介绍挪动端的自动化测试框架可用于测试原生利用、挪动网页利用、混合利用跨平台反对 iOS 与 Android 操作系统跨语言:反对 Java、Python底层多引擎可切换生态丰盛、社区弱小appium 设计理念C/S 设计模式 appium 环境装置相干生态工具adb:Android 的管制工具,用于获取 Android 的各种数据及进行操控appium desktop:内嵌了 appium server 和 inspector 的综合工具appium server:appium 的外围工具,命令行工具appium client:各种语言的客户端封装库,用于连贯 appium serverappcrawler:主动遍历工具环境装置筹备Java 1.8 版本:jdk-Windows安装包:提取码:6666;Linux-Centos 装置 jdkAndroid sdk:Android sdk:提取码:6666nodejs(版本>=10);npm(版本>=6)Python3.xappium-desktop:appium-desktop:提取码:6666在服务器上搭建 appium server 即可npm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm install -g appiumappium python client 装置:pip install appium-python-client检测 appium 的装置环境: # 装置 appium-doctorcnpm install appium-doctor# 检测命令appium-doctorappium desktop次要性能:UI 剖析录制用例元素查找测试待补充…… 参看 appium 用例录制 appium 环境应用步骤关上 appium desktop,点击 start server筹备安卓设施(真机/模拟器),连贯到电脑上(可通过 adb devices 查看设施是否连贯)编写用例脚本,运行参考链接https://ceshiren.com/t/topic/... https://ceshiren.com/t/topic/... ...

August 29, 2021 · 1 min · jiezi

关于测试:0207-Python库pytest

pytest成熟的全功能Python测试框架 简略灵便,容易上手反对参数化测试用例的skip与xfail,主动失败重试等解决可能反对简略的单元测试和简单的功能测试,还能够用来做selenium/appium等自动化测试、接口自动化测试(pytest+requests)具备很多第三方插件,并能够自定义扩大:pytest-allure,pytest-xdist(多CPU开发)等反对Jenkins集成Pytest 使用手册 pytest 库装置: pip install pytest  测试用例的辨认与运行对于文件的命名要求:test_*.py*_test.py对于用例的命名要求:Test 类蕴含的所有 test_ 的办法(测试类不能带有 _ init_  办法)不在 class 中的所有的 test_* 办法pytest 能够执行 unittest 框架些的用例和办法 pycharm 应用 pytest 框架时,须要指定,具体操作如图所示: 命令行运行形式:# 间接执行以后所在门路下辨认到的测试用例pytest# 执行指定文件pytest test_material_master.py# 执行时打印日志pytest -v复原应用 Python 解释器运行的形式: 此时的运行形式为: import pytestif __name__ == '__main__': pytest.main(["test_material_master.py"]) # 运行整个文件的用例 pytest.main(["test_material_master.py::TestMaterialMaster::test_mat_search_by_matCode"]) # 运行文件中指定的某条的用例参数化应用应用办法: # 作为装璜器@pytest.mark.parametrize(argnames, argvalues)# argnames:要参数化的变量;类型:能够是 str(应用逗号宰割),list,tuple# argvalues:参数化的值;类型:list,[tuple]理论利用: @pytest.mark.parametrize("a, b, expect", get_data(yaml_path, "add"), ids=["整数", "小数", "大整数"])def test_add(self, a, b, expect, setup_fixture): """测试加法正向用例""" result = setup_fixture.add_func(a, b) assert abs(result - expect) < 0.01注意事项: ...

August 28, 2021 · 3 min · jiezi

关于测试:精准测试二三谈-IDCF

咱们都在应用麻利开发,麻利测试,保护着咱们的我的项目,咱们写着大量的test case,甚至不写一条case,麻利宣言其中一条准则是工作的软件 “高于” 详尽的文档,详解文档包含各种计划书,总结报告,详尽测试用例等,咱们将大量工夫用在自动化测试以及手工探索性测试下面,而咱们的用例则以BDD模式存在于代码之中,这样来帮忙尽可能早的发现问题。 但最近我发现几个客户在品质问题,存在一些共性,这些基于黑盒测试的我的项目在测试过程中存在以下几个独特的问题: 大量的黑盒测试用例,有的我的项目甚至用例数超过5w,测试工作大都是手工为主,受主观人为因素影响太大:每次版本公布,QA全凭集体教训来确定改变对系统影响范畴,通常状况,要么测试范畴定小了,造成漏测,要么测试范畴过大,付出的代价过高,造成我的项目不能如期按时交付。代码与测试没有数据可掂量:没有单元测试,其余类型测试对代码笼罩水平,品质高下,没有数据可能掂量,例如咱们说api测试覆盖率是100%,这个数据大多都是依据用例业务场景估算出的。QA只能减少更多的黑盒测试,而理论功能测试覆盖率随着工夫和用例增多,便会触达覆盖率的天花板,更多的是反复的有效测试。自动化测试无奈发挥作用:对于web/api或app 后端服务零碎,测试人员对除手工测试外,咱们将大量的工夫与精力投放在api接口测试的实现上,随着我的项目的迭代,自动化用例积攒越来越多,从几百到上千,这时候咱们须要思考测试稳定性,运行时长,大量反复测试场景与代码,整个测试ROI并不是随着用例数增多而回升,反而保护和排查问题成为QA日常工作的重任,疲于应酬,没有精力将工夫投入到更有用的探索性测试和剖析工作中,进而造成bug频出,整个团队便对自动化失去信赖,直至废除,这也是很多传统行业无奈规模化施行麻利测试起因之一。那么如何帮忙团队建立信念,精确定位到变更影响的范畴?精准测试。这个概念是最近几年逐步衰亡的话题。 一、先来谈谈什么是精准测试?定义:利用技术手段对测试过程产生的数据进行采集存储,计算,汇总,可视化最终帮忙团队晋升软件测试的效率、并对我的项目整体品质进行改良和优化的这一系列操作。 艰深点讲:外围基于源代码变更剖析,联合剖析算法,确定影响范畴,晋升测试效率。 精准测试并没有改变传统的软件测试方法论,只不过是帮忙咱们将测试用例与程序代码之间的逻辑映射关系建设起来, 而这个过程则是通过算法和工具去采集测试过程执行的代码逻辑及测试数据,在测试过程退出采集过程,造成正向和逆向的追溯。 正向追溯,开发人员能够看到QA执行用例的代码细节,例如用例执行过程中,调用具体方法与实现类,不便进行缺点的修复与定位。逆向追溯,测试人员通过release前的增量代码疾速确定测试用例的范畴,极大缩小回归测试的盲目性和工作量,晋升ROI,达到测试覆盖率最大化。二、精准测试原理 上图是我基于业界通用精准测试架构画出的架构图与流程图。 这套精准测试架构既能够用作手工测试,也可用在任意自动化测试上。 整个架构分为以下几局部: 建设用例与代码覆盖率之间的映射关系影响面评估,剖析辨认增量与变更代码测试范畴评估,用例筛选,链路剖析2.1 建设用例与代码覆盖率之间的映射关系目前建设用例与代码之间的关系通过统计调用产生的覆盖率与门路进行关联。 1)在线模式功能测试关联计划目前通用的解决方案是利用Jacocoon-the-fly模式基于 On-the-fly 形式毋庸入侵应用服务代码,启动脚本时,只需在 JVM 中通过 -javaagent 参数指定 jar 文件以启动 Instrumentation 的代理程序,该代理程序通过 Class Loader 装载一个 class 前判断是否须要注入 class 文件,再将统计代码插入 class ,测试覆盖率剖析就能够在 JVM 执行测试的过程中实现。Jacoco提供了本人的Agent,实现插桩的同时,还提供了丰盛的dump输入机制,如File,Tcp Server,Tcp Client。覆盖率信息能够通过文件或是Tcp的模式输入。通过内部服务在任意机器上通过api申请获取被测程序的覆盖率与执行门路。 对性能测试用例,咱们能够通过执行单个用例,通过上述步骤后拿到该条用例影响代码的覆盖率与执行门路。在通过关联服务,将具体用例的ID与生成的覆盖率信息(类,办法,行等)建设映射关系,最初将关联数据存到数据库中保留。 基于Jacocoon-the-fly 模式获取单个用例覆盖率建设映射关系的流程如下: 以上是基于java语言来关联用例与代码间接的关系,前端也有相似原理的工具,利用istanbul-middleware也能够实现同样的性能,具体请查阅一下这两篇文章,这里不再复述。 自动化测试关联计划利用AOP原理,在自动化框架的执行器加一个拦截器,在覆盖率收集开关关上时,申请执行前,这个过程相似于测试框架中的before hook:reset 被测服务桩数据,也就是上一次测试产生的dump 文件,申请执行后,这个过程相似于测试框架中的after hook:用api导出内存中的覆盖率数据,咱们利用反射拿到用例办法名,利用关联服务将之与对应的 dump后果关联起来,实现主动插桩性能,疾速帮忙咱们建设自动化用例与覆盖率之间的关系。 2)Offline模式(unit test采纳模式,不是本文)在测试前先对文件进行插桩,而后生成插过桩的class或jar包,测试插过桩 的class和jar包后,会生成动静笼罩信息到文件,最初对立对笼罩信息进行解决,并生成报告。Offline模式实用于以下场景: 运行环境不反对java agent部署环境不容许设置JVM参数字节码须要被转换成其余虚拟机字节码,如Android Dalvik VM动静批改字节码过程中和其余agent抵触无奈自定义用户加载类2.2 影响面评估,剖析辨认增量与变更代码咱们有了代码与用例间接的关系的映射,咱们须要将之用在开发流程中,首先咱们须要得悉咱们的改变是什么,最间接的是通过 git diff 得悉具体改变代码,但过于沉重,且太多烦扰例如正文,空行等,最好的办法是实现比对算法,通过降噪解决,打消烦扰,进而拿到解决后变更数据。 2.3 测试范畴评估,用例筛选,链路剖析咱们有了用例与代码之间的关系映射,有了提交增量代码差别记录,就能够实现逆向回溯。 利用代码的差别,通过查问服务就能够在下面提到关联关系数据库中反推影响的用例,以及下层的业务。这样能够帮忙QA疾速划分测试范畴,缩小适度测试。 ...

August 23, 2021 · 1 min · jiezi

关于测试:0107-Linux三剑客grep

定义依据用户指定的模式(pattern),对指标文件进行过滤,显示被漠视匹配到的行 格局:grep [参数] 匹配内容 [文件] 罕用参数: -v:显示未匹配到的行-i:疏忽大小写-n:显示匹配的行号-c:统计匹配的行数-o:仅显示匹配到的字符串-E:应用 ERE,相当于 egrep实战利用: 显示含有 root 的行,并显示行号$ cat testroot root hello rootnewnewrootrootleokatehogwartstringleon$ grep -n root test1:root root hello root4:root5:root显示不蕴含 root 的行,并显示行号$ grep -vn root test2:new3:new6:leo7:kate8:hogwart9:string10:leon查找以 s 结尾的行;查找以 n 结尾的行$ grep ^s -n test9:string$ grep n$ -n test10:leon

August 19, 2021 · 1 min · jiezi

关于测试:0106-Linux常用命令统计

排序sort:用于排序 -b:疏忽结尾的空白字符-f:将小写字母看作大写字母-h:依据存储内容大小排序(KB, MB, GB)-n:按数字大小排序,默认程序-o:将后果写入文件-r:倒序-t:指定宰割符-V:依照数字版本排序-k:指定排序的关键字(按哪一列排序),与 -t 参数配合应用# 依据存储内容大小排序,默认辨认 KB, MB, GB$ cat sort_h60MB101000KB20MB300KB5A40GB50KB$ sort -h sort_hA51050KB300KB1000KB20MB60MB40GB# 倒序$ sort -hr sort_h40GB60MB20MB1000KB300KB50KB105A# -n:按数字大小排序,默认程序$ cat sort_n0100070786723300944002320103210257433306$ sort -n sort_n0000109233067707833065743320103210244002# -t:指定宰割符# -k:指定排序的关键字(按哪一列排序),与 -t 参数配合应用$ cat sort_t1.2.3.42.1.2.33.3.4.28.7.6.46.4.9.71SP2SP3SP42SP1SP2SP33SP3SP4SP28SP7SP6SP46SP4SP9SP7# -t .:以"."作为分隔符;-k 1:按第一列进行排序$ sort -t . -k 1 sort_t1.2.3.41SP2SP3SP42.1.2.32SP1SP2SP33.3.4.23SP3SP4SP26.4.9.76SP4SP9SP78.7.6.48SP7SP6SP4

August 19, 2021 · 1 min · jiezi

关于测试:0105-Linux常用命令性能统计

CPU 相干w:查看以后零碎的负载 [root@xiaojw ~]# w 14:02:34 up 272 days, 17:33, 1 user, load average: 0.00, 0.03, 0.01USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 183.237.175.89 14:02 2.00s 0.26s 0.00s w# 14:02:34 up 272 days, 17:33, 1 user, load average: 0.00, 0.03, 0.01# 工夫 零碎运行工夫 登录用户数 均匀负载(重要!):1分钟内,5分钟内,15分钟内# 均匀负载,值越大,阐明服务器压力越大;这个值只有不超过服务器的CPU数量即可cat /proc/cupinfo:查看 CPU 相干的根本信息 [root@localhost ~]# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 158model name : Intel(R) Core(TM) i5-9400 CPU @ 2.90GHzstepping : 13cpu MHz : 2904.002cache size : 9216 KBphysical id : 0siblings : 1core id : 0cpu cores : 1apicid : 0initial apicid : 0fpu : yesfpu_exception : yescpuid level : 22wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase avx2 invpcid rdseed clflushopt flush_l1dbogomips : 5808.00clflush size : 64cache_alignment : 64address sizes : 39 bits physical, 48 bits virtualpower management:top:显示过程所占的系统资源 ...

August 19, 2021 · 4 min · jiezi

关于测试:Spock单元测试框架介绍以及在美团优选的实践

Spock是一款国外优良的测试框架,基于BDD(行为驱动开发)思维实现,性能十分弱小。Spock联合Groovy动静语言的特点,提供了各种标签,并采纳简略、通用、结构化的描述语言,让编写测试代码更加简洁、高效。目前,美团优选物流绝大部分后端服务曾经采纳了Spock作为测试框架,在开发效率、可读性和维护性方面均获得了不错的收益。1. 背景XML之父Tim Bray最近在博客里有个好玩的说法:“代码不写测试就像上了厕所不洗手……单元测试是对软件将来的一项必不可少的投资。”具体来说,单元测试有哪些收益呢? 它是最容易保障代码覆盖率达到100%的测试。能够⼤幅升高上线时的缓和指数。单元测试能更快地发现问题(见下图左)。单元测试的性价比最高,因为谬误发现的越晚,修复它的老本就越高,而且难度呈指数式增长,所以咱们要尽早地进行测试(见下图右)。编码人员,个别也是单元测试的次要执行者,是惟一可能做到生产出无缺点程序的人,其余任何人都无奈做到这一点。有助于源码的优化,使之更加标准,疾速反馈,能够释怀进行重构。这张图来自微软的统计数据:Bug在单元测试阶段被发现,均匀耗时3.25小时,如果漏到零碎测试阶段,要花费11.5小时。这张图,旨在阐明两个问题:85%的缺点都在代码设计阶段产生,而发现Bug的阶段越靠后,消耗老本就越高,指数级别的增高。只管单元测试有如此的收益,但在咱们日常的工作中,依然存在不少我的项目它们的单元测试要么是不残缺要么是缺失的。常见的起因总结如下:代码逻辑过于简单;写单元测试时消耗的工夫较长;工作重、工期紧,或者罗唆就不写了。 基于以上问题,相较于传统的JUnit单元测试,明天为大家举荐一款名为Spock的测试框架。目前,美团优选物流技术团队绝大部分后端服务曾经采纳了Spock作为测试框架,在开发效率、可读性和维护性方面获得了不错的收益。 不过网上Spock材料比较简单,甚至包含官网的Demo,无奈解决咱们我的项目中简单业务场景面临的问题,通过深刻学习和实际之后,本文会将一些教训分享进去,心愿可能帮忙大家进步开发测试的效率。 2. Spock是什么?和JUnit、jMock有什么区别?Spock是一款国外优良的测试框架,基于BDD(行为驱动开发)思维实现,性能十分弱小。Spock联合Groovy动静语言的特点,提供了各种标签,并采纳简略、通用、结构化的描述语言,让编写测试代码更加简洁、高效。官网的介绍如下: What is it?Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit, RSpec, jMock, Mockito, Groovy, Scala, Vulcans, and other fascinating life forms.Spock是一个Java和Groovy`利用的测试和标准框架。之所以可能在泛滥测试框架中怀才不遇,是因为它柔美而富裕表现力的标准语言。Spock的灵感来自JUnit、RSpec、jMock、Mockito、Groovy、Scala、Vulcans。 ...

August 13, 2021 · 10 min · jiezi

关于测试:TestNG测试来游戏

1、什么是TestNGTestNG(Next Generation)单元测试框架比JUnit单元测试框架更弱小,它提供了更多的扩大性能来游戏手游盒子,能够通过注解、分组、序列和参数化组织和执行自动化测试脚本,因而它适宜运行更简单的自动化测试用例。TestNG的长处:(1)丑陋的HTML格局测试报告(2)反对并发测试(3)参数化测试更简略(4)反对输入日志(5)反对跟过性能的注解 2、编写TestNG测试用例的步骤(1)应用eclipse生成TestNG的测试程序框架(2)在生成的程序框架中编写测试代码逻辑(3)依据测试代码逻辑,插入TestNG注解标签(4)配置Testng.xml文件,设定测试类、测试方法、测试分组的执行信息(5)执行TestNG的测试程序 3、装置TestNG见另一篇博客“Eclipse装置TestNG插件”,https://blog.csdn.net/fengke1... 4、在TestNG中运行第一个WebDriver测试用例单击选中的新建文件,按下Ctr+N组合键,抉择“TestNG”文件下的“TestNG class”,点击“next”,在弹出的对话框中抉择输出工程、包名和类名。留神抉择工程时,具体到工程文件的下一层\src文件,因为零碎默认是找到src下的class文件运行,能够到设置外面改门路。生成测试框架代码当前,将selenium的jar包导入到工程中,在代码中填充Webdriver的测试逻辑代码: package cn.gloryroad; import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;import org.testng.annotations.BeforeMethod;import org.testng.annotations.AfterMethod; public class FirstTestNGDemo { public WebDriver driver; String baseUrl = "http://www.sogou.com/"; @Test public void testSearch() { //关上搜狗首页 driver.get(baseUrl); //在搜寻框输出“光彩之路自动化测试” driver.findElement(By.id("query")).sendKeys("光彩之路自动化测试"); //单击搜寻按钮 driver.findElement(By.id("stb")).click();} @BeforeMethod public void beforeMethod() { //若无奈关上Firefox浏览器,可设定Firefox浏览器的装置门路 System.setProperty("WebDriver.firefox.bin", "C:/Program Files/Mozilla Firefox"); //关上Firefox浏览器 driver = new FirefoxDriver();} @AfterMethod public void afterMethod() { //敞开浏览器 driver.quit();} }以“TestNG Test”命令运行后的后果: TestNG也会输入HTML格局的测试报告,拜访工程目录下的“test-output”目录,关上“emailable-report.html”文件: TestNG也会在“test-output”目录中生成index.html文件的报告,提供更加具体的测试用例执行信息:

August 12, 2021 · 1 min · jiezi

关于测试:TestNG的常用注解桑皮

TestNG的罕用注解(1)TestNG的常见测试用的桑皮页游组织构造:Test Suit由一个或者多个Test组成;Test由一个或者多个测试Class组成;一个测试Class由一个或者多个测试方法组成;(2)罕用注解@BeforeSuit:示意此注解的办法会在以后测试汇合(Suit)中的任一测试用例开始运行之前执行;@AfterSuit:示意此注解的办法会在以后测试汇合(Suit)中的任一测试程序完结之后执行;@BeforeTest:示意此注解的办法会在Test中任一测试用例开始运行之前执行;@AfterTest:示意此注解会的办法在Test中任一测试用例运行完结之后执行;@BeforeGroup:示意此注解的办法会在分组测试用例的任一测试用例开始运行前执行;@AfterGroup:示意此注解的办法会在分组测试用例的所有测试用例运行完结后执行;@BeforeClass:示意此注解的办法会在以后测试类的任一测试用例开始运行前执行;@AfterClass:示意此注解的办法会在以后测试类的所有测试用例完结后执行;@BeforeMethod:示意此注解的办法会在每个测试方法开始运行前执行;@AfterMethod:示意此注解的办法会在每个测试方法完结后执行;@Test:示意此注解的办法被认定为是一个测试方法,即一个测试用例。

August 12, 2021 · 1 min · jiezi

关于测试:Spring-测试框架HP91

Spring 测试框架之前的测试程序 蕴含了Spring把IOC容器,每次运行都会关上容器,每次运行完又销毁敞开容器,每次运行程序的所耗费的资源很高,创立敞开创立,每次性能开销会吃不消,而且在敞开的过程中是强制的敞开HP91页游平台,没有对结尾的程序做优化解决。这就是传统的测试存在的问题–问题呈现在作用域范畴的问题。java虚拟机–>testng–>testng外面的程序(class 文件)–>testng外面的程序外面的Spring-IOC容器–>bean1/bean2/bea3 当初的测试要高边现有的状态:java虚拟机–>testng–>testng外面的程序外面的Spring-IOC容器–>testng外面的程序(calss文件)bean1/bean2/bea3(类文件中的beans)更改测试的作用域,扩充IOC容器的作用域,让容器的作用域蕴含测试的程序和beans…,每次启动一次IOC容器就好,只有我的容器不敞开,每次都能够在容器内获取想要的beans, juint测试(这种形式只适宜junit测试)@RunWith(SpringJUnit4ClassRunner.class)//运行Spring的junit4–驱动器@ContextConfiguration(“classpath:SpringTests/FramTestconfig.xml”)//次要的性能是寻找配置文件@ContextConfiguration//如果不带参数的话,默认找测试类名±context.xml(FramworkTest-context.xml)@Autowired//示意主动依照类型在spring容器中找到bean对象并设置给这个字段 @SpringJUnitConfig(必须应用junit5,其余的操作都一样)咱们之后 测试应用juint5juint测试相比之前的测试的testng测试,大体的过程是统一,都是先创立domain的bean对象,找到配置文件,援用domain的bean对象,调用bean内的办法。 进行测试测试类(FramworkTest_junit5)和主配置文件(FramworkTest_junit5-context.xml)配置文件的名字肯定是测试类的名字 + -context 不然会报错 Could not detect default configuration classes for test class找不到配置文件的谬误 Spring测试框架所用到的jar包文件:spring-test-5.1.2.RELEASE.jar//Spring 测试框架所有到的jar包spring-context-5.1.2.RELEASE.jar//解析calsspath门路所用到的jar包spring-aop-5.1.2.RELEASE.jar/spring-expression-5.1.2.RELEASE.jar//运行test时所用到的jar包 Spring测试框架的测试驱动 junit4和junit5

August 12, 2021 · 1 min · jiezi

关于测试:四步心法-混沌工程不是灵丹妙药-IDCF

混沌工程不是灵丹妙药,不会主动修复零碎和解决问题。市面上有很多工具能够更轻松地施行混沌试验,但真正的艰难在于对系统行为的预测。增加故障很容易,艰难的是晓得在哪里注入以及为什么要注入。换句话说,从混沌试验中取得的价值,取决于零碎自身、对系统的了解深度以及建设可观测性的水平。本文将分享无关混沌试验的四步心法,帮忙大家更快上手混沌工程。 一、混沌工程不是什么“混沌工程是在分布式系统上进行试验的学科, 目标是建设对系统抵挡生产环境中失控条件的能力以及信念。” 然而,混沌工程不是灵丹妙药,它不会主动修复您的零碎。事实上,甚至可能并不适用于您的任何状况。一个常见的误会,混沌工程就是用来随机毁坏零碎。 这可能和名字有关系,Chaos Monkey(混沌猴子)是第一个在该畛域取得业界名誉的工具,它在很大水平上依赖于随机性。随机性是一种弱小的工具,并且有时与含糊测试有重叠。 但通常,增加失败都很容易;艰难的是晓得在哪里注入以及为什么要注入。混沌工程不仅仅是 Chaos Monkey、ChaosToolkit、PowerfulSeal或 GitHub 上可用的泛滥我的项目中的任何一个。 这些工具能够更轻松地施行某些类型的试验,但真正的艰难在于学习如何批判性地对待零碎并预测可能存在的软弱点。 另外,混沌工程不会取代已有的测试方法(例如单元或集成测试等),而是对已有测试方法的补充。 在碰撞测试期间,安全气囊可独自测试,也可与汽车的其余部件一起进行,混沌工程能够在不同的零碎级别上运行和测试。 每个零碎都不同,您须要深刻理解零碎的弱点,能力提出有用的混沌试验。 换句话说,您从混沌试验中取得的价值将取决于您的零碎、您对系统的了解水平、您想要测试零碎的深度以及您建设可观测性的水平。只管混沌工程的独特之处在于,其可利用于生产零碎,但这并不是惟一场景。 网上很多混沌工程的内容仿佛都围绕着“生产中的毁坏”,很可能是因为这是您能做的最激进的事件,但同样,这并不是混沌工程的全副——甚至不是它的次要关注点。 因为,您也能够从混沌工程原理利用在其余环境中取得价值。 最初,混沌工程并非源于数学和物理学中的混沌实践。 二、什么是混沌试验混沌工程试验(简称混沌试验)是混沌工程的根本组成,也是重要的表现形式,即通过一系列混沌试验进行混沌工程实际。 给定一个零碎及其肯定数量的零碎个性,就能够设计试验来察看零碎在产生故障时的种种体现。每个试验都专一于证实或反驳试验前对系统受故障影响的假如。 2.1 混沌试验的示例例如,假如您经营着一个风行的网站,保护着整个数据中心。如何让网站在断电后仍能够失常运行?比方,在数据中心中装置了两个独立的电源。 实践上,这能够解决这个问题——但在实践中,仍存在着很多潜在的其余问题:兴许电源之间的主动切换不起作用,亦或者网站的规模曾经大到,繁多电源无奈为所有服务器提供足够的电力。 除此之外,是否每三个月有请电力工程师进行定期检查? 探讨到这里,您会放心。 好在,咱们有混沌工程这个技术。设计一个简略的混沌试验,用迷信的形式,通过试验阐明当其中一个电源呈现故障时零碎会产生什么。甚至整个试验操作,可抉择新进的实习生来执行这些步骤。 对所有电源反复以下过程,一次一个: 查看网站是否失常运行关上电气面板并关闭电源查看网站是否仍在失常运行从新关上电源这个过程很毛糙,听起来很简略,让咱们再回顾一下这些步骤。 给定一个零碎(一个数据中心)和一个零碎个性(在单个电源故障时仍能工作),您设计了一个试验(关闭电源并察看网站是否仍在运行),若后果与预期假如统一,就会减少您对系统的信念。 不过(话锋一转),有一件事咱们不能漏掉,即有必要问问如果这个试验失败会产生什么? 在这个过于粗略的试验中,您将自行制作故障点,这里就须要很审慎,咱们要最大限度地缩小试验带来的危险,抉择适合的环境来执行。稍后咱们将对此进行更多介绍。 下图总结了您刚刚经验的混沌试验过程。 您会接着提出下一个问题:如果您正在解决更为简单的零碎,应该怎么办? 首先要对系统造成一个想要证实或反驳的假如,而后围绕该假如设计整个试验。 格雷戈尔·孟德尔,这位遗传学家,还记得吗? 当他对遗传法则有了假如时,设计了一系列对于黄豌豆和绿豌豆的试验,以证实显性和隐性遗传性状的存在。尽管,试验后果没有达到预期,事实上,这就是他在遗传学方面获得冲破的形式。这和咱们当初在探讨的试验形式很相似。 上面咱们来认真讨论一下混沌试验的具体步骤和注意事项。 2.2 混沌试验的四个步骤 让咱们先简略捋一遍图上的步骤要点,前面会深刻探讨。 试验后果的可观测性无论是豌豆的色彩、假人碰撞测、网站是否失常运行、CPU负载、每秒申请数还是胜利申请的提早,第一步总是先确保,能够精确读取到这些数值。 自从有了计算机,咱们能够轻松生成十分精确和具体的数据。这个咱们称之为可观测性。 应用观测数据定义失常的状态通过这种形式,您就能够理解零碎行为在何时超出了预期范畴。 例如,您可能心愿应用服务器在工作工夫内,均匀 15 分钟的 CPU 负载低于 20%。或者,您可能冀望在硬件参考标准中,四核应用服务器的实例每秒有 500 到 700 个申请。 这个失常范畴被称为稳固状态,简称稳态。 利用观测数据验证直觉假如直觉假如的一个简略例子,“杀死其中一台机器不会影响服务的均匀提早。” 执行试验,进行测量以得出您的假如是否正确的论断。乏味的是,您可能会喜爱犯错,因为那时您能学到更多的货色,而后持续试验,顺次迭代。 试验越简略越好您不会因精心设计的设计而取得加分,除非这是证实假如的最佳形式。 上面,让咱们对混沌试验的四步骤进行更深刻的探讨。 第一步 设置可观测指标“可观测性”这个词,十分含糊其辞,这意味着可能牢靠地查看您感兴趣的任何指标。这里的另一个关键词则是牢靠。 硬件生产商或操作系统曾经提供了读取各种指标的机制,从 CPU 的温度到风扇的 RPM,再到内存应用和各种内核事件钩子。 这里要小心的一点是,这些指标的采集器会影响指标的准确性。例如,您用来测量 CPU 负载的工具,其应用的 CPU 比您的应用程序多,那可能是一个问题。 ...

August 11, 2021 · 1 min · jiezi

关于测试:MaxCompute跨境访问加速解决方案

简介: MaxCompute联结寰球减速服务,为有跨境拜访需要的MaxCompute客户提供一套高效稳固的跨境拜访减速计划。 背景信息MaxCompute的大量出海客户,因为开发人员所在地和数据源地区不统一,常常须要进行跨境互访,在应用IDEA/ODPSCMD/SDK进行管控类作业提交、数据下载等申请时,网络抖动比拟大,可能会呈现被rst、重置连贯等问题。 具体场景包含两类: office在大陆,然而对应的MaxCompute终端节点在海内,例如须要从杭州拜访孟买的终端节点,如果间接应用office的公网进行调用对应的api进行业务创立,间接应用公网链路十分不稳固。office在海内,然而对应的MaxCompute终端节点在大陆,例如须要从孟买拜访上海的终端节点,也存在相似调用的状况。例:失常网络状况下,从杭州拜访印度(孟买)终端节点,网络连接超时。 解决方案计划架构 技术原理 本解决方案依赖寰球减速服务。 寰球减速GA(Global Accelerator)是一款笼罩寰球的网络减速服务,寰球减速会为每个接入减速区域的地区调配一个减速IP,客户端流量通过减速IP就近从接入点进入阿里云减速网络。进入阿里云减速网络后,寰球减速能够智能抉择路由并主动实现网络调度,而后把客户端的网络拜访申请送达至最佳终端节点,避开公网的拥挤,达到缩小时延的成果。具体请参见寰球减速官网文档。 实现流程前提条件已创立MaxCompute我的项目。 更多创立MaxCompute我的项目操作,请参见创立MaxCompute我的项目。配置寰球减速服务用户能够依据寰球减速服务官网文档进行配置。本计划的配置步骤如下: 步骤一:创立寰球减速实例 登录寰球减速治理控制台。在实例列表页面,单击创立减速实例。在购买页面,依据以下信息配置寰球减速实例,而后单击立刻购买。抉择购买寰球减速实例的规格。本计划抉择小型Ⅱ。抉择购买寰球减速实例的时长。本计划抉择1个月。具体规格类型及费用请参考寰球减速产品定价。 购买胜利后,返回至治理控制台。实例创立好,零碎会主动调配一个CNAME用于解析要减速的后端服务的域名,请记录下此CNAME用于后续域名解析时应用。 步骤二:购买并绑定根底带宽包 根底带宽包提供了笼罩寰球的公网接入带宽和阿里云内网传输带宽。实现寰球减速您须要购买根底带宽包并将根底带宽包绑定到寰球减速实例。 在实例列表页面,单击购买根底带宽包。在购买页面,配置根底带宽包,而后单击立刻购买实现领取。具体规格类型及费用请参考寰球减速产品定价。⚠️留神:晋升海内区域到中国边疆的网络拜访品质,必须先提交跨境产品应用申请,否则无奈配置拜访国外地区减速。 本计划抉择 加强减速带宽,20Mb。 返回实例列表页面,单击已创立的寰球减速实例ID,单击带宽包治理页签,在根底带宽包区域,找到指标根底带宽包,单击操作列下的绑定。绑定胜利后,根底带宽包的状态变成 可用。步骤三:增加减速区域 在购买根底带宽包后,您便能够增加减速区域,指定拜访后端服务的用户的所在地区并调配减速带宽。 实现以下操作,增加减速区域。 在实例列表页面,找到已创立的寰球减速实例,单击实例ID。单击减速区域页签,增加接入地区。在增加减速区域对话框,依据以下信息进行配置。地区:抉择拜访减速服务用户的所属地区。本计划抉择中国(杭州)。带宽:抉择减速服务的地区带宽。本计划输出20 Mbps。IP地址协定:抉择用户接入寰球减速服务的IP地址协定。本计划抉择IPv4。 单击确定。增加胜利后,寰球减速会在接入地区调配一个减速IP,用来减速用户拜访。步骤四:配置监听 监听负责查看连贯申请。零碎会依据您指定的端口和协定转发来自客户端的入站连贯。 在实例详情页面,单击监听页签,而后单击增加监听。在配置监听和协定配置向导页面,依据以下信息配置监听。监听名称:输出监听的名称。协定:抉择监听的协定类型,客户可依据业务场景抉择。本计划抉择TCP。端口:本计划输出80。客户端亲和性:本计划抉择敞开。更多信息参考监听概述。 单击下一步配置终端节点组。访问控制:能够基于白名单/黑名单的模式进行配置不同的策略,对客户端申请进行准确管制,治理申请转发。阐明 目前,放弃访问控制白名单凋谢,如需应用请提交工单。 步骤五:设置终端节点组 每个监听都关联一个终端节点组,通过指定要散发流量的地区,将终端节点组与监听关联。关联后,寰球减速会将流量调配到与监听关联的终端节点组内的最佳终端节点。 实现以下操作,设置终端节点组。 在节点组名称区域输出节点组名称。抉择终端节点组所属的地区,即申请要拜访的指标服务器的所属地区。本计划抉择 印度。抉择后端服务部署在阿里云还是非阿里云。本计划抉择 非阿里云。抉择开启或敞开放弃客户端源IP,本计划抉择开启放弃客户端源IP。配置终端节点。后端服务类型:抉择自定义域名。后端服务:输出要减速的MaxCompute地区外网Endpoint。本计划输出 service.ap-south-1.maxcompute.aliyun.com权重:输出终端节点的权重,权重取值范畴:0~255。寰球减速依据您配置的权重按比例将流量路由到终端节点。留神 如果某个终端节点的权重设置为0,寰球减速将终止向该终端节点散发流量,请您审慎操作。单击下一步查看监听和终端节点组配置,确认无误后,再单击下一步。本地绑定host 增加寰球减速的配置后,在实例信息-减速区域tag下,找到减速IP。 之后,您必须通过本地绑定host形式,将对应域名解析到寰球减速调配的CNAME,使业务流量切换至寰球减速。 host增加示例: 1XX.XX.X.XX6(减速IP) service.ap-south-1.maxcompute.aliyun.com(后端服务域名)延时测试 在接入地区(本计划为中国杭州)的电脑中关上命令行窗口。执行以下命令,查看数据包提早状况。curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "http[s]://<ERP零碎域名>[:<端口>]"其中:time_connect:连接时间,从开始到建设TCP连贯实现所用的工夫。time_starttransfer:开始传输工夫。在客户端发出请求后,到后端服务器响应第一个字节所用的工夫。time_total:连贯总工夫。客户端发出请求后,到后端服务器响应会话所用的工夫。经测试,应用寰球减速后,明显降低了中国杭州用户拜访印度(孟买)endpoint的提早。 应用MaxCompute配置实现后,能够进入MaxCompute客户端或Web-Console按源形式连贯至MaxCompute数据源。此时,MaxCompute已胜利实现高效稳固地跨境拜访。 平安防护相干问题为了无效进攻DDoS攻打,本计划能够通过与DDOS高防产品组合应用,利用DDOS高防产品无效进攻DDOS攻打,详细信息能够参考:跨地区Web平安减速 中的DDOS配置局部内容。 原文链接本文为阿里云原创内容,未经容许不得转载。

August 5, 2021 · 1 min · jiezi

关于测试:没啥用的黑科技自动生成测试对象信息框架

创作目标咱们平时在写测试用例的时候,免不了要写一大堆 set 办法为对象设置属性。 有时候为了补全测试用例,这件事就会变得十分干燥。 于是就在想,能不能写一个能够主动生成测试对象的工具呢? 于是就有了这一个没啥用的测试框架: https://github.com/houbb/data-factory我的项目简介data-factory 我的项目用于依据对象,随机主动生成初始化信息。便于测试。 个性8 大根本类型的反对数组、对象、枚举、Map、链表、Set 等反对String、BigDecimal、BigInteger、Currency 等常见类型的反对Date、LocalDate、LocalDateTime、LocalTime、Year 等常见日期类型反对反对 Regex 正则表达式@DataFactory 注解反对灵便配置变更日志变更日志疾速开始筹备工作JDK 1.8+ Maven 3.0+ maven 引入<dependency> <groupId>com.github.houbb</groupId> <artifactId>data-factory-core</artifactId> <version>1.0.0</version></dependency>根本类型咱们通过 DataUtil.build(class) 就能够生成对应类的随机值。 比方 DataUtil.build(String.class);,就能够生成随机的字符串: 0s5Z8foS1对象当然,最罕用的还是初始化一个 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); 构建对象如下: User{name='wZ8CJZtK', age=-564106861, birthday=Wed Feb 27 22:14:34 CST 2019, stringList=[Du4iJkQj], statusEnum=S, map={yA5yDqM=Kdzi}}内容每次都随机,便于根本的测试数据填充。 ...

August 2, 2021 · 2 min · jiezi

关于测试:H5页面测试

一.功能测试 1、关注页面申请。对于每个页面,要查看发送的申请是否正确,申请的接口是否有反复,接口申请是否正确返回等。可通过chrome中自带的开发工具查看网络申请。 关注是否有冗余接口申请,是否有不必要的反复接口刷新申请。 冗余和反复的接口申请会导致流量节约和响应速度变慢。 2、关注application cache (http://www.html5rocks.com/zh/...), local storage(http://www.html5china.com/HTM...), cookie中值是否正确,页面是否有应用application cache, local storage存放数据。革除这些数据后性能是否正确,获取数据失败后是否有重试机制。(能够用下图Chrome开发工具,进行查看和革除,也可用postman,soupUi等)。 留神:老版chrome开发者模式下在resource下查看cache,新版chrome在application下查看。 3、session生效机制。对于要登录的,须要用到session的中央,要留神模仿session生效时,性能业务逻辑是否失常。 4、返回逻辑:对于页面中的返回,以及浏览器自带的返回的测试。 页面中的返回要思考业务逻辑,敌对返回到相应档次,须要从用户角度思考返回的转跳逻辑,不能呈现死循环。并要留神返回后是否须要刷新页面申请,比方领取完后返回订单列表,最好刷新 展现上一步购买的订单。 5、页面刷新,刷新时的申请链接是否正确。 (1)下拉刷新是否依然处于以后页面 (2)用户被动点击刷新按钮是否依然处于以后页面 (3)刷新页面或者加载新内容时页面是否有抖动。 6、图片适配,是否依据不同屏幕和分辨率做适配,高端机取双倍尺寸的图;是否对于2G网络,或低端机独自解决,不取高清图或缩小一些特效动画成果;最好加上webp图片的反对,可缩小流量;在中低端机上思考是否须要让前端独自解决,去掉简单解决。并 对中低端机只取原图,不取高清图。留神:webp格局只对android无效,放在IOS上反而会起副作用。 7、是否要减少转场动画,loading动画,点击动画等。以晋升体验。须要在动画成果和卡顿上掂量。 8、对于隐衷模式,不存cookie,不开javascript执行等,测试是否性能失常,或给出提醒。 9、接口降级,接口异样时如何解决,前端要给出敌对提醒。 10、对于申请比较慢时,要有loading图案,图案在数据进去后要隐没,且不能与转场动画等其它有抵触。 11、输入框的校验:特殊字符显示,过滤黑词,js是否会执行,一连串长字母是否会换行等。 比方只输出空字符的解决。 12、弱网络降级:处于2G/3G网络省流量模式的一些非凡解决,比方2G网络下测试,图片多时是否要懒加载等。网络情况差的场景,可提醒文案,但不能闪退。 13、网络切换:从wifi切换到2G/3G网络、从2G/3G网络切换到wifi等 14、H5与Native切换:切换时登录信息是否记录、流程是否顺畅、是否呈现中断闪退等问题。 留神验证 登录信息是否能互通。 不能呈现native曾经登录,进入h5后持续让登录,切实技术实现不了的可toast提醒用户持续登录。 (1)若客户端已登录,那么进入H5后依然是登录状态。 (2)若客户端未登录,进入H5,点击对应按钮OR链接,如果须要登录,须拉起native登录。若勾销登录,是否可再次拉起登录,或者停留在的页面是否有对应的登录提醒。 (注:本次测试过程中就发现,第一次点击链接,能够拉起登录,第二次却不能) 15、Pad上测试须要留神:横屏和竖屏下的显示成果可能不同,还有横屏换成竖屏、竖屏换成横屏。留神横竖屏切换时输入框的不同。 16.返回性能 通过H5页面(非手机自带返回键)的返回功能键返回,能够返回到正确的页面(上一级/退出h5) 点击返回与back键,回退页面是否是冀望页面 17.屏幕切换 横屏竖屏互相切换,能适应,布局不乱,或页面只反对横或竖屏限度 18.分辨率适配更好 倡议采纳响应式设计(如:offerlist页面大屏显示3行,小屏显示2行) 1)分辨率高(如7201280,重点关注页面背景是否齐全撑开页面,刷新是否有抖动)、分辨率低(如320480,重点关注下弹框款式和文案折行) 2)android4.2版本以上的设施轻易测试一两台即可 3)苹果近几年罕用的零碎版本手机 19.页面关上模式 倡议页面在手机上从list点击进入detail页面,要在原窗口关上,通过页面页头返回按钮返回,不须要通过手机返回键返回,交互体验好 20.页面申请验证 关注页面申请,是否会有多余的申请,或者申请后有多余的数据返回,尽量精简,否则会节约流量。 21.图片适配 图片适配测试,依据不同屏幕和分辨率做适配,以及适配后的清晰度,高端机取双倍尺寸的图 22.用浏览器chrome f12进行测试 H5的页面在PC端也是能拜访的,chrome对H5反对最好,性能的测试能够在PC端chrome下先测试,也能够在手机上间接测试,这个看集体习惯。(ie系列**ie8,及以下都反对的不好,这个能够与PD确认H5页面在这些PC浏览器上不反对) 23、滑动、定位 手指滑动是否晦涩,手指点击时焦点是否定位正确,不同机型会不一样。焦点定位点击是灵活。 24、对于相似公司名称、offer名称长度的问题,在手机上最好能依据屏幕大小自适应而不是截断,因为手机上是不会有tips能够看的。截断导致大屏幕下也只能显示几个字,交互不好 25、手机测试要特地关注交互是否敌对,与PC机的事件模型不一样,可能会导致一些体验的问题,比方:弹出层的点击,是否会穿透,影响到弹出层上面的页面。 26、对于一些浮层做的页面,例如地图、产品分类等浮层,留神拖动后是否能够看到它上面的页面,拖动后边缘是否有留白 27、手机端的浏览器测试的时候也要革除一下缓存,因为图片和文件会被缓存下来,所以首次拜访和二次拜访体验不一样。例如UC浏览器的分明缓存在设置-》零碎设置-》根本设置--》革除记录中。 28.关注页面首屏加载工夫。 29、文件导入导出: 1、模板下载性能: 个别导出导出性能会有一个模板下载性能,此性能须要查看模板是否能够失常下载,失常关上,查看Excel模板文件和网站中的数据字段是否统一即可。 ...

July 30, 2021 · 1 min · jiezi

关于测试:渗透测试分析成功点

晓得为什么要测试执行浸透测试的目标是什么?是满足审计要求?是你须要晓得某个新利用在事实世界中体现如何?你最近换了平安基础设施中某个重要组件而须要晓得它是否无效?或者浸透测试根本就是作为你定期检查进攻衰弱的一项例行公事? 当你分明做测试的起因时,你也就通晓本人想从测试中失去什么了,而这能够让测试布局工作更有效率。晓得做测试的原因能够让人失当地确立测试的范畴,确定测试后果将会揭发什么问题。 或者这一步中最重要的一部分,是让团队提前架设好筹备从测试后果中得出正确的论断的心理预期。如果测试是要审查IT基础设施的某个特定方面(比如说新的Web利用),那就没必要着墨于公司整体平安。了解做测试的原因能够让你问出正确的问题,失去能被失当了解的后果。 理解你的网络破绽是平安的重点。企业网络上线之日直至现在必然经验种种变迁,只有1者比企业本人的IT员工更分明其中存在的破绽,企业网络就对1者门户洞开。 绘制公司网络地图的责任不落在浸透测试团队身上。如果浸透测试团队在做这项工作,就意味着你有可能错过他们的测试后果,因为你收到的网络架构音讯都能把浸透测试后果吞没。 一张更新的网络地图(包含逻辑方面和拓扑方面)应成为浸透测试的强制性前提条件。如果浸透测试员在通知你你所不晓得的网络架构状况,那你就是在为网络地图买单——很贵的那种。 设置范畴红队探测范畴有多广,很大水平上取决于你为什么要做这个测试,因为太广或太窄可能都无甚大用。 测试范畴过窄的问题很显著:如果想要找出的问题在测试范畴外,那就没有任何数据能帮忙确定该组件的平安。所以,必须确保测试参数蕴含事关公司以后平安状态的重要组件。最重要的是,你得确定本人要测试的是整体平安情况还是某特定零碎的平安状态,以及人为因素(对网络钓鱼和其余社会工程1的敏感性)需不需要被蕴含进去。 如果测试范畴过宽,有可能呈现两个问题。第一个问题是经济上的:测试费用会随范畴的扩充而减少,而测试价格与所需信息不相匹配的情况又会影响到公司高层对将来测试的激情。 第二个问题就更为致命了。测试范畴过大时,测试自身容易返回太多信息,真正所需的数据很容易被吞没在巨量的测试后果中。教训很分明:想要测试架构中特定局部的平安,就将浸透测试的范畴限定在那个局部上。对整个零碎的测试能够留待下次进行。 做好打算弄清测试目标并确定出测试范畴后,就能够开始制订测试计划了。定出具体明确的测试条件和需要最为重要,任何涣散或须经解释的测试要求都会削减浸透测试的效率。需做好详尽打算的起因有很多,其中最次要的起因与老本管制和晋升测试后果可用性无关。 良好的测试计划应分为多个局部。一个局部帮忙委托公司坚固其测试计划的要求。一个局部确认测试返回数据的类型。还要有一部分内容为向公司执行委员会解释测试开销做筹备。 测试计划不是制订好后就固定不变的,测试过程中可能需作出订正。测试团队被聘用后,他们可能会针对某些测试元素提出一些能产生更好后果的倡议。其中要害就在于,公司外部就该测试计划达成统一后 ,平安团队就能判断浸透测试员的倡议是否能满足测试需要了,不必什么都依附测试团队的力量。 雇正确的团队提供浸透测试服务的公司和参谋很多。这些公司都有各自的劣势和弱点,他们的技术技巧各有千秋,出现测试后果的形式也有好有坏。公司有必要确保所选测试团队的能力尽可能地合乎测试须要。 要留神的是,测试需要应高于客户要求。的确,有些团队在导引征求建议书(RFP)过程或挤进获批供应商列表上颇有心得,但他们执行测试计划所需浸透测试动作的技术未必比得上这些在应酬客户上的技巧。抉择浸透测试团队时应将测试技术放在第一位,会计和行政治理方面的能力次之。 能够考查测试团队的老辣水平,看他们如何在不颠覆原打算的条件下提出倡议,改良客户的测试计划。这也是为什么后期要做好测试计划的一个重要起因。因为能够查看测试过程中的种种改变。 不要干涉人都想得到他人的认同,这是人类本能。但浸透测试的目标就是要展现出公司企业平安状态的理论状况,所以,尽量别为了失去个看起来难看的后果而人为烦扰浸透测试员,给进攻方提供不偏心的劣势。 事实上,红队简直总能某种程度上浸透进公司网络边界。咱们以后的技术和操作就是这样的。很多状况下,真正的问题存在于蓝队到底什么时候能力发现已被攻破,会如何响应。 无论测试后果如何,都要让测试过程失常进行,以便后果实在、精确、有用。管理层的任何干涉都会毁了浸透测试的有效性,请肯定记得在测试实现前不要插手。 留神后果测试实现后,你会失去一份残缺的报告,需认真研读。浸透测试员应向你呈现出测试的后果,如果你有机会依据测试后果改良平安零碎,别放过这种机会。 或者浸透测试是为了满足监管合规要求而做的。也有可能你就没想找任何理由来扭转你的平安进攻。这都没关系。你的平安进攻现在已遭逢过敌军主力,而你能够看清平安打算的胜利之处与失败的中央。 如果测试后果被用于做出有意义的扭转,浸透测试就是划算的。而划算的浸透测试也更有可能在将来取得公司高层的平安估算。 沟通后果对大多数公司来说,浸透测试的后果不局限在平安团队范畴内。至多,对整个IT部门都有影响,而很多状况下还有高管们须要看到的网页游戏信息。 很多平安人员都感觉,向非平安业余的经理传播浸透测试后果是过程中最难的局部。不仅须要阐明都做了什么,为什么要这么做,还要用他们能听懂的语言解释须要作出什么改变。这往往意味着要用商业术语沟通,而不是以技术语言论述。 正如浸透测试可被视为实在1的预演,将其余部门的共事纳入后果论述和操作展现的受众范畴,也有助于确保被接管的信息的确是你想要传播的。 对很多业务经理而言,网络安全是个令人望而却步的高难度畛域;尽量别用过多的行话让业务经理们在座位上一头雾水坐卧不宁。 既然都曾经花大力量做了打算并执行了切实的浸透测试,那就致力让测试后果对整个公司有用吧。

July 30, 2021 · 1 min · jiezi

关于测试:十大自动化测试工具你在用哪些

测试近年来,随着DevOps和麻利过程越来越宽泛地被采纳,软件测试、特地是自动化测试失去了迅速的倒退。DevOps心愿建设一个疾速、频繁、牢靠的一体化交付过程;麻利则要求对交付件品质进行继续、及时、全面的反馈。软件测试作为研发过程中的重要环节,其是否达到疾速响应、无效度量,实现过程自动化、零碎一体化的指标,对整个组织的研发效率和产品质量将产生深远的影响。 缩小工作量的应用程序正飞速发展,迅速涵盖着各行各业,在软件测试行业中,对自动化需要的减少也成为一种趋势。在任意的软件或应用程序测试平台,都会发现软件测试人员们迫切需要各种工具来辅助日常测试,无论是桌面测试还是web测试、浏览器测试、回归测试、网络服务和 API 测试等等。 以下带来一些风行的软件测试自动化工具的概述,以帮忙所有软件测试人员。 1.SeleniumSelenium 是一个测试框架,用于跨各种浏览器和平台(如 Windows、Mac 和 Linux)执行 web 应用程序测试。Selenium 帮忙测试人员应用各种编程语言编写测试程序,如 Java、PHP、C#、Python、Groovy、Ruby 和 Perl。它提供记录和回放性能,无需学习 Selenium IDE 即可编写。值得一提的是,Selenium反对一些大型的、知名度高的浏览器供应商,这些供应商将 Selenium 作为浏览器的根底局部。Selenium 无疑是大多数其他软件测试工具的根底。 2. TestingWhizTestingWhiz 是一个由 CMMI3 级 IT 解决方案提供商Cygnet Infotech提供的无代码自动化测试工具。TestingWhiz 工具的企业版提供了各种残缺的自动化测试解决方案,例如 web 测试、软件测试、数据库测试、 API 测试、挪动应用程序测试、回归测试套件保护、优化和自动化以及跨浏览器测试。 TestingWhiz 提供各种重要性能,例如: 关键字驱动、数据驱动测试和分布式测试浏览器扩大测试SMTP 集成与 Mantis、TFS 和 FogBugz 等bug跟踪工具集成与 HP Quality Center、Zephyr、TestRail 和 Microsoft VSTS 等测试管理工具集成集中式对象存储库版本控制系统集成自定义录制规定3. HPE Unified Functional TestingHPE UFT是测试桌面,Web和挪动应用程序的风行商业工具,反对功能测试和回归测试自动化。此工具应用 Visual Basic Scripting Edition 脚本语言来注册测试过程并在测试应用程序时操作各种对象和控件。 QTP 提供各种性能,如: 创立测试测验数据加强测试运行测试脚本分析测试后果保护测试4. TestCompleteTestComplete 是一个功能测试平台,它提供各种解决方案,通过SmartBear 软件对桌面、网站和挪动应用程序进行自动化测试。 TestComplete 提供以下性能: GUI测试脚本语言反对 – JavaScript、Python、VBScript、JScript、DelphiScript、C++Script 和 C#Script测试可视化工具脚本测试测试录制和回放5.RanorexRanorex 是一款在Windows操作系统的上运行的GUI自动测试化工具,次要用于对应用GUI的软件进行的软件测试,是计算机软件与用户进行交互的次要形式。 ...

July 29, 2021 · 1 min · jiezi

关于测试:测试计划流程

说到测试计划置信很多小伙伴进入这行的时候对这个并不生疏,然而要针对一个我的项目做一个残缺的测试计划却不是那么简略,因为咱们在测试之前咱们首先要针对一个我的项目的理解,还有我的项目每个需要的剖析,还要进行评审等等一系列的筹备工作,所以在测试之前,咱们要做好很多前奏工作,确保在测试过程中不会遗漏掉本该要发现的问题,所以本次编辑这篇文章次要是针对测试计划做的一套流程解说,心愿对同行的小伙伴有肯定的帮忙。 一、测试计划的目标(1)为测试各项流动制订一个事实可行的、综合的打算,包含每项测试流动的对象、范畴、办法、进度和预期后果。(2)为我的项目施行建设一个组织模型,并定义测试项目中每个角色的责任和工作内容。(3)开发无效的测试模型,能正确地验证正在开发的软件系统。(4)确定测试所须要的工夫和资源,以保障其可获得性、有效性。(5)确立每个测试阶段测试实现以及测试胜利的规范、要实现的指标。(6)辨认出测试流动中各种危险,并打消可能存在的危险,升高由不可能打消的危险所带来的损失。 二、测试计划的根本流程1. 我的项目立项我的项目立项是用户与项目经理针对我的项目进行敲定,确定我的项目单方的职能及相干责任。在此过程中测 试人员很多时候都不怎么会参加进来,其实测试经理或组长是能够以参与者的身份参加进来,理解我的项目的相干事宜。 2. 需要分析阶段需要分析阶段测试人员对业务关系进行理解,剖析需要点。很多测试人员的测试工作都是这一阶段开始。需要剖析评审对我的项目需要剖析的后果进行评审,评审团依据公司人员调配来定,个别蕴含用户、我的项目、经理、开发人员、测试人员等,不要低于5人。 3. 测试计划阶段测试计划阶段:测试组长就要依据《用户需要手册》或《测试需要剖析书》开始编写《测试计划》,其中包含人员,软件硬件资源,测试点,集成程序,进度安顿和危险辨认等内容。评审团依据公司人员调配来定,个别应蕴含项目经理、测试人员等,不要低于5人。 4. 测试设计阶段此阶段要对测试工作提出测试计划,测试计划个别由对需要很熟的高资深的测试工程师打算,测试计划要求依据《需要剖析》和《测试计划》上的每个需要点设计出包含需要点简介,测试思路和具体测试方法三局部的计划。《测试计划》编写实现后也须要进行评审。评审人员不低于5人。 5. 测试计划阶段此阶段对测试进行具体设计,次要针对测试用例和规程的设计。测试用例是依据《测试计划》来编 写的,通过测试计划阶段,测试人员对整个零碎需要有了具体的了解。这时开始编写用例能力保障用 例的可执行和对需要的笼罩。测试用例须要包含测试项,用例级别,预置条件,操作步骤和预期后果。其中操作步骤和预期后果须要编写具体和明确。测试用例应该笼罩测试计划,而测试计划又笼罩了测试需要点,这样能力保障客户需要不脱漏。同样,测试用例也须要评审。评审人员最好不要低于5人。 6. 测试执行阶段执行测试用例,对执行后果进行正当治理,及时提交有品质的bug。 7. 后果剖析与测试报告针对测试后果测试人员应该剖析相应的后果产生起因,并提交相应的测试报告。

July 27, 2021 · 1 min · jiezi

关于测试:回归测试四个方式

1.全面回归测试 全面回归测试是指不论发现多少个问题,也不论哪些功能测试有问题,哪些性能没有问题,都进行测试。全面回归测试的长处是对所有性能进行验证,尽可能保证系统没有问题,然而这样同样带来一个很重要的问题,就是如果进行全面回归测试,那么测试的老本就会大大提高,并且从测试心理学角度来说,测试工程师是不可能全面回归测试的,即便给你足够的测试工夫,也不可能全面回归。 2.选择性回归测试 选择性回归测试是指,在回归测试时咱们只对呈现问题的这些性能进行验证,没有呈现问题的性能就不进行测试。 3.指标法回归测试 指标法回归测试是指每次回归测试肯定比例的测试用例,例如用例库一共是1000条测试用例,每次回归测试时只回归验证其中60%的用例,这个办法是不可取的,因为没有规定回归哪60%的用例,这样可能呈现测试工程师成心回归一些不相干的测试用例,因而品质无奈保障。 4.自动化回归测试 回归测试是指应用自动化测试工具进行回归测试,后面咱们介绍过从实践的角度来说,其实不论批改了哪些性能,都应该对所有的性能进行回归测试。然而当咱们进行全面回归测试时,因为工夫老本和测试心态变动的因素,其实咱们是无奈保障有能力全面回归测试的,这个时候就能够应用自动化测试工具来代替咱们手工回归测试,这样既能够解决测试老本的问题,又能够解决测试过程中测试工程师的心态问题页游。

July 26, 2021 · 1 min · jiezi

关于测试:设计测试用例的方向

测试用例的设计办法基于需要的测试方法等价类边界值因果图正交排列场景设计法谬误猜测法测试用例的概念:测试用例是为了施行测试而向被测试的零碎提供一组汇合,这组汇合蕴含:测试环境、操作步骤、测试数据、预期后果等因素评估测试用例的规范:用例表白分明,无二义性用例可操作性强用例的输出与输入明确,一条用例只能有一个预期后果用例的可维护性好用例对需要的覆盖率高裸露程序Bug的能力强测试用例给咱们带来的影响益处测试执行者的根据使得工作可反复,自动化测试的根底(自动化测试的前提:性能稳固,页面变动小)评估需要覆盖率用例的复用积攒测试的办法思路以供后续借鉴应用中带来的困扰测试用例的设计是费时费力的,往往测试用例所破费的工夫比执行所破费的工夫还多解决如下问题不晓得是否较全面的测试了所有性能测试的覆盖率无奈掂量对新版本的反复测试很难施行存在大量冗余测试,影响测试效率测试用例的设计办法基于需要的设计会使测试更加无效,因为他使测试专一于品质问题产生的本源,即需要 须要重点关注以下两个问题:1.验证需要是否正确、无二义性,并且逻辑统一2.要从黑盒测试的角度,设计出充沛并且必要的测试集,以保障设计和代码都能完全符合需要具体的设计办法1.等价类概念:根据需要将输出划分为若干个等价类,从等价类当选取出一个测试用例,如果这个测试用例验证通过则认为所代表的等价类测试通过,这样就能够用较少的测试用例达到尽量多的性能笼罩,解决了不能穷举测试的问题 等价类划分无效等价类:对于程序的规格说明书是正当的、有意义的输出数据形成的汇合,利用无效等价类验证程序是否实现了规格说明书中所规定的性能和性能有效等价类:依据需要说明书,不满足需要的汇合2.边界值概念:对于输出或输入的边界值进行测试的一种黑盒测试方法。通常边界值分析法是对等价类划分法的补充,这种状况下,其测试用例来自等价类的边界3.因果图概念:因果图是一种简化了的逻辑图,可能直观的表明程序输出条件(起因)和输入动作(后果)之间的互相关系。因果图是借助图形设计测试用例的一种零碎办法,特地实用于被测试程序具备多种输出条件、程序的输入又依赖于输出条件的各种状况因果图法设计测试用例的步骤如下: (1)剖析所有可能的输出与可能的输入 (2)找出输出与输入之间的对应关系 (3)画出因果图 (4)把因果图转换成断定表 (5)把断定表对应到每一个测试用例注:因果法设计测试用例能够帮忙测试人员理清输出和输入的关系,然而对于较简单的输入输出,会消耗大量的工夫,网页游戏4.正交排列概念:钻研多因素、多程度的一种设计办法,依据正交性,由试验因素的全副程度组合中挑选出局部有代表性的点进行试验,通过对这部分试验后果的剖析理解全面试验的状况,找出最优的程度组合。正交试验设计是基于正交表的、高效率、疾速、经济的试验目标:缩小用例数目,用尽量少的用例笼罩输出的两两组合首先先来介绍两个名词:因素:在一项试验中,凡欲考查的变量称为因素(变量) 程度:在试验范畴内,因素被考查的值称为程度(变量的取值)正交表的形成:行数:正交表中行的个数,即试验的次数,用N代表 因素数:正交表中列的个数用,用C代表 程度数:任何单个因素可能获得的值的最大个数,用T代表正交表的示意模式:L = 行数(程度数*因素数) ==> L = N(TC)正交表的两条性质:1.每一列中各数字呈现的次数一样多2.任何两列所形成的各有序数对呈现的次数都一样多正交法设计测试用例的步骤:(1)有哪些因素(变量) (2)每个因素有哪几个程度(变量的取值) (3)抉择一个适合的正交表 (4)把变量的值映射到表中 (5)把每一行的各因素程度的组合作为一个测试用例 (6)加上你认为可疑且没有在表中呈现的用例组合5.场景设计法概念:当初的软件简直都是用事件触发来管制流程的,事件触发时的情景便造成了场景,而同一事件不同的触发程序和处理结果就造成事件流。该办法能够比拟活泼的描绘出事件触发时的情景,有利于测试设计者设计测试用例,使测试用例更容易了解和执行典型的利用:用业务流把各个孤立的性能点串起来(业务测试),为测试人员建设整体业务的感觉,从而防止陷入性能细节漠视业务流程要点的错误倾向6.谬误猜测法概念:是经验丰富的测试人员喜爱用的一种测试方法教训的三个起源:(1)来自于对某项业务的测试较多 (2)来自于售后用户的反馈意见 (3)从故障治理库中整顿Bug什么是测试用例的有效性??(1)测试用例对应的性能曾经删除,不可操作了 (2)执行一条测试用例未发现Bug,理论该处有Bug (3)执行一条测试用例发现了Bug (4)执行一条测试用例未发现Bug,理论此处Bug已批改测试用例的粒度粒度:测试用例编写的具体水平(1)测试用例写的过于简单或具体,会带来两个问题:一个是效率问题,一个是保护老本问题 (2)测试用例写的过于简略可能会失去了测试周例的意义编写测试用例时能够参考以下几个方面:(1)产品的品质要求 (2)我的项目对用例的要求 (3)测试工夫和资源是否充沛测试用例的评估分为:同行评审 用户查看 项目组评审

July 26, 2021 · 1 min · jiezi

关于测试:功能测试基础

一、根本功能测试:1.输出正确的用户名和明码登录胜利2.输出谬误的用户名明码登录失败3.用户名正确,明码谬误,是否提醒输出明码谬误?4.用户名谬误,明码失常,是否提醒输出用户名谬误?5.用户名和明码都谬误,是否有相应提醒?6.用户名明码为空时,是否有相应提醒?7.如果用户未注册,提醒请先注册,而后进行登录8.曾经登记的用户登录失败,提示信息敌对?9.明码框是否加密显示?10.用户名是否反对中文、特殊字符?11.用户名是否有长度限度?12.明码是否反对中文,特殊字符?13.明码是否有长度限度?14.明码是否辨别大小写?15.明码为一些简略罕用字符串时,是否提醒批改?如:12345616.明码存储形式?是否加密?17.登录性能是否须要输出验证码?1.验证码无效工夫?2.验证码输出谬误,登录失败,提示信息是否敌对?3.输出过期的验证是否登录胜利?4.验证码是否容易辨认?5.验证码换一张性能是否可用?点击验证码图片是否能够更换验证码?18.用户体系:比方零碎分普通用户、高级用户,不同用户登录零碎后可的权限不同。19.如果应用第三方账号(QQ,微博账号)登录,那么第三方账号与本零碎的账号体系对应关系如何保留?首次登录须要极权等 二、页面测试:1.登录页面显示是否失常?文字和图片是否失常显示,相应的提示信息是否正确,按钮的设置和排列是否失常,页面是否简洁壮观等。2.页面默认焦点是否定位在用户名的输入框中3.首次登录时相应的输入框是否为空?或者如果有默认文案,当点击输入框时默认计划是否隐没?4.相应的按钮如登录、重置等,是否可用;页面的后退、后退、刷新按钮是否可用?5.快捷键Tab,Esc,Enter 等,是否管制应用,传奇6.兼容性测试:不同浏览器,不同操作系统,不同分辨率下界面是否失常

July 23, 2021 · 1 min · jiezi

关于测试:鸿蒙系统测试五要素

6月2日,华为在发布会上正式公布了鸿蒙操作系统HarmonyOS 2.0及多款搭载HarmonyOS 2.0的新产品,这也标记着“鸿蒙操作系统(HarmonyOS)”正式开启了商用的路线,对鸿蒙零碎(HarmonyOS)2.0,华为给出的官网定义是:面向全场景的分布式操作系统。即意味着鸿蒙通过分布式技术,将物理上互相拆散的多个设施,交融成一个“超级终端”。也就是说,鸿蒙操作系统曾经脱离了手机操作系统的格局,朝着全面化的操作系统迈进,但对于目前的鸿蒙来说,还是要从手机操作系统起步,一步一步实现对鸿蒙生态的构建和走向凋敝。 而对于国内企业和开发者群体,对鸿蒙的欢送水平也是十分高的。甚至有媒体报道:”鸿蒙一出,整个金融圈皆鸿蒙”,这是因为在鸿蒙公布的第一工夫,中国银行、中信银行、广发银行(信用卡)就公开发表接入Harmony OS(鸿蒙),反对操作系统国产化。随后整个金融圈:汇添富、北方、天弘等多家大型基金公司陆续官宣,公司旗下APP即日起全面反对华为鸿蒙零碎。据不齐全统计,目前已有超过30家券商和家银行官宣反对鸿蒙零碎,而据国内测试行业领头羊Testin云测试的理解,目前国内有将近半数的机构、企业打算发展对接鸿蒙零碎的适配和兼容性等方面的测试,并以此作为拥抱国产操作系统的开始。 诚然,在国产操作系统鸿蒙(HarmonyOS 2)公布后,软件和零碎厂商首要解决的问题就是软件和零碎的测试问题,否则很容易呈现不兼容、闪退、Bug等问题。实际上,别说全新的操作系统了,就连比拟成熟的iOS零碎或者Android零碎在大版本更新时,都会随同着一大堆的Bug。那么,对于开发者和厂商来说在鸿蒙(HarmonyOS 2)操作系统的适配和兼容性方面目前要留神哪些?鸿蒙(HarmonyOS 2)和其余零碎相比有什么不同?在理论应用中呈现的问题次要集中在哪一类上?针对这些问题Testin云测试基于本身在测试畛域10年的技术积攒以及在正式公布之前就发展的对于鸿蒙操作系统的一系列测试工作,为组织和开发者带来了初体验档次的倡议和了解。 1、目前国内有将近半数的机构、企业曾经或打算发展对接鸿蒙零碎的适配和兼容性等方面的测试鸿蒙HarmonyOS平台测试必须要理解的五点开发者的调研数据显示,在鸿蒙操作系统(HarmonyOS)公布后,有超过半数(53.5%)的人群示意曾经打算或曾经开始对鸿蒙零碎开始适配(兼容)测试等测试流程和工作,这也显示出国内开发者和企业对国产操作系统的拥抱态度。 2、鸿蒙零碎与市面上支流的Android系统软件兼容测试后果中,通过率超过70%,但拥抱鸿蒙零碎仍需第一工夫关注兼容适配测试。鸿蒙HarmonyOS平台测试必须要理解的五点-鸿蒙HarmonyOS技术社区通过对市面上支流的150款App在鸿蒙零碎和Android平台的兼容测试中,有70.6%的结果显示没有兼容性问题,阐明鸿蒙零碎和Android平台的兼容性有了很好的问题,但仍旧有回升空间。而对于想要拥抱或适配鸿蒙零碎的企业/开发者来说,兼容测试仍是第一工夫须要做的测试项目,也须要分外器重在鸿蒙零碎中的兼容测试通过率。 3、雷同平台和硬件的环境下,鸿蒙零碎和Android零碎比照相差不大鸿蒙HarmonyOS平台测试必须要理解的五点-鸿蒙HarmonyOS技术社区在雷同型号手机(P40 PRO)上别离装置Android 10和HarmonyOS 2.0零碎,对随机选取的多个App进行同环境、同脚本下的测试,最终Android 10和HarmonyOS 2.0零碎体现十分靠近。须要阐明的是本次为个体测试,不代表全面数据,而通过对屡次比照的全面数据分析后果和该论断相似,但HarmonyOS 2.0零碎在升高资源耗费方面的确略有劣势。 4、鸿蒙零碎在兼容测试体现中UI异样是次要问题点,服务端异样和加载异样其次鸿蒙HarmonyOS平台测试必须要理解的五点-鸿蒙HarmonyOS技术社区在所有的针对鸿蒙零碎的测试中,UI异样和解体的问题呈现概率比拟高,问题呈现比拟集中在闪退、意外终止、内容展现异样、文字问题、背景问题等具体我的项目上,这是鸿蒙零碎目前在应用中遇到的最多呈现的问题,但这些问题不同水平的在Android端也会呈现。 5、目前针对鸿蒙零碎的测试中,机构、企业、开发者最须要解决的问题是测试设施和业余的测试服务。鸿蒙HarmonyOS平台测试必须要理解的五点-鸿蒙HarmonyOS技术社区 通过Testin云测对市面上100家机构、企业/开发者的调研数据显示,目前针对鸿蒙零碎的适配,大家集中的问题点在短少鸿蒙的设施和白名单设施少、开发慢等问题上,而在需要层面,开发者更须要云真机、兼容测试等测试类型的服务,更深层面的测试需要目前还不显著,而Testin云测试的服务能够解决这当中的绝大多数手游需要。

July 22, 2021 · 1 min · jiezi