关于测试:一页纸测试策略-IDCF

【摘要】测试策略文档通常是篇幅较长、文字为主的模式,编写老本较高,并且写完了很少有人去看,形存实亡。本文介绍可视化的形式,将测试策略用图来表白,并且在一页纸上搞定,这样的策略图十分清晰,要害信息高深莫测,并且提供更大的探讨空间,避免僵化,真正可能施展策略的作用。 “测试策略是什么样的?” “测试策略嘛,还不是包含#&~+-=~*-+$这些…” “你们我的项目的策略有什么特地的吗?” “咱们我的项目嘛,测试策略的内容有点多,从哪说起呢?” 后面那个场景有没有似曾相识?你是否分明目前你们正在应用的测试策略是什么样的? 一、常见测试策略1.1 测试策略的内容与模式咱们都晓得,测试策略包含以下两方面的内容: 测什么(What)?测什么是指品质需要是什么、须要关注品质的哪些方面,比方利用的性能范畴、性能、平安、易用性等非性能需要。怎么测(How)?怎么测就是采纳什么方法来帮忙零碎实现品质需要,而不仅仅是手动和自动化的测试方法,也包含所有为品质保障服务的流程、环境、基础设施和人员等。为了形容分明要测的内容以及如何来测,测试策略通常篇幅较长的文档,蕴含多个章节;以文字描述为主,只加上大量的配图。 图片来自网络:https://wenku.baidu.com/view/... 1.2 测试策略的痛点简明扼要的文字给人带来居多不便: 编写艰难:篇幅较长的测试策略文档要写好还真不是件容易的事件,尤其是对于理工科出身的不是那么善于写作的测试人员来说,更是比拟麻烦,老本较高。不易浏览:简明扼要的测试策略文档,要从中疾速找出要害信息可没那么容易,可能一不小心错过的细节就是最要害的局部,因为篇幅太长,通常不太重要的信息挺多的。保护、更新苦楚:策略文档不可能变化无穷,这种篇幅较长的文档要更新和保护几乎是噩梦。往往刚开始还好,随着时间推移,更新和保护越来越麻烦。失去了策略的价值:因为不易浏览,也不易保护和更新,事实上团队可能有很多人并不是很分明策略文档上的内容,这样的策略文档形存实亡,不能真正起到策略的指南作用。反麻利:麻利开发强调的是缩短反馈周期,疾速交付高质量的软件产品。破费太多精力编写、保护一份不能起到策略作用的长篇幅文档,显然是不利于麻利的,也是十分痛的。测试策略的重要性显而易见,是否能够找到一种更好的表达方式,让测试策略不那么痛呢?Jamie McIndoe在“Testing Stuff - A One-Page Test Strategy”中首次提出能够把测试策略图视化,用一页纸来搞定。 咱们都晓得,图示化的表达方式直观、清晰,容易辨认要害信息,并且易于记忆。如果可能用图示化的办法将测试策略在一页纸上搞定,肯定十分棒。 上面一起来看看图示化表白的测试策略是什么样的。 二、图示化测试策略2.1 一页纸搞定顾名思义,图示化就是用图来形容测试策略的内容,但并不是把原来文字描述的每个章节间接翻译成图。咱们思考用图来示意测试策略的各个要害组成部分,并且绘在一页纸上。 当然,一页纸的测试策略只是将要害信息以图示化的形式出现进去,并不是整个测试策略的全副,在一页纸的背地是团队的充沛沟通和对策略各个方面达成的统一意识,是须要团队一起来做很多工作的。这种高度简化的出现模式,是为了给团队更多的探讨空间,一页纸也更易于批改,从而更能适应变动,真正满足需要。 基于Jamie McIndoe的可视化测试策略思维,我倡议的测试策略图蕴含下列信息: 指导性准则:团队为品质负责;如何测:测试左移、精益测试、测试右移,涵盖测试流程、测试类型、测试方法等;测什么:包含性能、性能和平安等。上面将以蓝鲸我的项目为例来介绍这几个局部的内容。对于蓝鲸我的项目,是一个历经10年的离岸交付我的项目,采纳的是麻利开发的模式,每四到五周一次公布,遵循麻利开发的各种实际。 例如,蓝鲸我的项目的测试策略如下图所示: 2.2 各局部具体介绍上面,咱们来看看该测试策略各组成部分的具体含意。 2.2.1 指导性准则蓝鲸我的项目采纳的是麻利开发模式,品质不是某个繁多角色的事件,团队为品质负责是我的项目品质保障的指导性准则,须要所有团队成员对此有统一的意识,人人都要有关注品质的意识。更多对于团队为品质负责的内容,请参考我的博客文章说好的团队为品质负责呢。 2.2.2 测试左移与品质内建麻利测试最要害的两点就是尽早测试和频繁测试(Test early, test often),也就是测试左移与品质内建的思维。 测试左移要求在需要分析阶段开始对需要自身的合理性进行验证,不仅要正确的构建产品,更重要的是构建正确的产品,这就须要把好源头需要这一关。因而,咱们能够看到策略里的流程是从需要剖析开始的。 品质内建则是在软件开发生命周期的每个阶段都有品质相干的流动,把品质融入到开发的每一个步骤,通过CI/CD等形式获取疾速反馈,做好软件缺陷的预防,以加重缺点裸露太晚带来的大量修复老本。 蓝鲸我的项目的开发生命周期次要体现在下图的七个环节,每个环节都有相应测试流动的发展,并且每个流动都有不同角色的参加。 2.2.3 精益测试精益测试能够了解为以业务价值为指标,以尽量少的老本交付高质量的软件,也就是说测试要测在能体现价值的点上,要做到无效笼罩、缩小节约。蓝鲸我的项目的策略图里有两个框架帮我咱们更无效的测试,别离是测试象限和测试分层。 1)测试象限在Lisa Crispin和Janet Gregory合著的书籍《麻利软件测试:测试人员与麻利团队的实际指南》中,咱们看到了麻利测试象限的介绍。因为该象限框架所起到的作用不仅局限于麻利的环境,我在这里称之为测试象限。 测试象限矩阵一共四个局部,称为四个象限。下侧是面向技术的测试,上侧是面向业务的测试;左侧是反对团队的测试,右侧则是评估产品的测试。 反对团队的测试反对团队的测试是用来通知团队要写什么代码,起到明确需要、辅助设计的作用。其中,第一象限是面向技术的反对团队的测试,次要是TDD,帮忙构建产品的外部品质,也就是代码品质的保障,比方单元测试和API测试等;第二象限则是面向业务的反对团队的测试,从更高层次以业务专家能够了解的形式确定零碎冀望的行为,做到产品内部品质的保障。 这两个象限的测试可能疾速提供反馈信息,并确保疾速的解决问题,既领导了性能的开发,又提供了避免重构和新代码的引入而导致不冀望行为产生的安全网。 评估产品的测试程序员编写的代码能够使得左侧面向业务的测试通过,但也可能没有产生客户真正想要的货色,因而还须要第三、第四象限的评估产品的测试。 第三象限是面向业务的评估产品的测试,通过模拟实在用户应用利用的形式,帮忙确认是否构建了真正须要的产品;第四象限是面向技术评估产品的测试,次要采纳工具和相应的技术来评估产品的性能、健壮性和安全性等非性能个性,并且在开发周期的每一步都要思考这些测试的发展。 这两个象限的测试中产生的信息应该反馈到象限矩阵的左侧,并用于创立新的测试来驱动下一步开发,造成良性的加强环路。 测试象限的应用象限的程序跟测试执行的程序无关,麻利开发往往开始于客户测试(面向业务的测试)。与测试执行机会相干的因素通常有: 产品公布的危险;客户方对产品指标的要求;是基于遗留零碎的开发还是从零开始构建的新零碎;可利用的测试资源等。测试象限提供一种须要哪些测试来保障品质的思考框架,能够依据我的项目具体情况,联合思考以发展对应的测试。策略图所示蓝鲸我的项目的测试象限体现的测试类型跟Lisa书里介绍的就不太一样,这是依据我的项目以后跟客户的单干形式、业务需要、品质要求等来确定的当下须要执行的测试,比方其中的平安测试就分为业务局部和技术局部。 2)测试分层对于测试分层的思维,大家可能比拟相熟的是测试金字塔,次要是针对自动化测试,依据测试所能笼罩的范畴分成不同的层。金字塔的含意是测试比例的多少,体现为底层单元测试较多,越往下层测试比例越少,出现为金字塔构造。 越往底层的测试越靠近代码,编写老本更低、执行速度更快、定位问题也更精确,然而离业务较远,不能很好的体现业务价值;越往下层的测试越靠近业务,更能反馈业务价值,但有着不够稳固、执行速度慢、实现老本较高的有余。因而,须要权衡利弊,依据我的项目具体情况,实在的指标来确定每层测试的比例。 至于具体的比例是金字塔构造,还是蜂巢构造或其余,并不是肯定的,也不会是变化无穷的,可能受到价值指标、痛点、品质要求、技术架构、技能程度等因素的影响。 蓝鲸我的项目的策略图里的是以后的测试分层构造,相似于蜂巢机构,那是因为基于微服务架构的特点,蓝鲸我的项目更多的自动化测试是保障服务间连通性的API测试局部,而对于单元测试和端到端测试的比例则都有削弱。更多的对于蓝鲸我的项目测试策略的详情,请参考我的博客文章微服务测试的思考与实际。 2.2.4 测试右移 因为软件系统所处生态环境越来越简单,技术架构的演进、业务复杂度和数据量的减少、基础设施的倒退带来更多的不确定性,软件系统的品质保障在测试环境曾经搞不定了,咱们须要把眼光右移到生产环境。这就是测试右移的思维,其实也就是生产环境下的QA(QA in Production)。 ...

July 22, 2021 · 1 min · jiezi

关于测试:性能测试

概念首先来说说性能测试:性能是软件的一种非性能个性,他关注的不是软件是否实现了特定的性能,而是软件在实现特定性能是展现进去的及时性。 及时性从不同的视角代表不同的指标: 用户:响应工夫系统管理员:资源利用率,可扩展性,零碎稳定性,零碎容量开发人员:零碎架构,数据库设计,设计和代码实现可见,零碎稳定性对系统管理员的意义重大,稳定性的好坏也能够间接影响到最终用户所关怀的“响应工夫”,所以说稳定性测试时性能测试中十分重要的一环。 稳定性测试(亦可称可靠性测试)通过给零碎加载肯定的业务压力,让零碎继续运行一段时间(个别为7x24小时),检测零碎是否可能稳固运行。 如何施行一、辨认并确认软件次要业务(是否须要稳定性测试)将稳定性测试的重心放在软件最有Value的中央,比如说一个抢票游戏零碎,它最有value的中央是当有肯定数量的用户同时进行买票操作是零碎的相应工夫,资源利用率等是否可能失常且稳固,而不是用户如何增加新的联系人,批改个人信息等 二、列举次要用户场景及相应负载量1、用户场景能够依据软件次要业务进行设定 2、对次要场景负载量须要有一个清晰的定义(或者通过负载测试验证了用户场景的负载量,这将作为一个规范的负载在稳定性测试中应用) 三、制订稳定性指标模型(Modeling)依据用户场景建模,创立适合正当的稳定性指标模型(之后会有一个例子) 四、测试环境筹备(对软硬件环境的配置:配置的起源能够是客户环境模拟、需要文档规定的配置或者配置测试得出的最佳配置)1、辨认稳定性的次要性能指标(KPI) 2、用来形容稳定性测试关注的零碎指标,比方响应工夫、CPU、内存使用率等等,须要依据具体业务进行定义 五、测试的执行和数据收集依照相应稳定性指标模型(Modeling)分析测试后果,将测试后果利用在稳定性测试模型中,察看是否满足稳定性要求 六、继续改良(如有必要)总的来说,稳定性测试是用来验证产品在肯定的负载下是否可能长时间的稳固运行,其次要目标是验证能力,并在能力的验证过程中找到零碎不稳固的因素并进行剖析解决。

July 21, 2021 · 1 min · jiezi

关于测试:测试开发之系统篇常用系统命令

以下介绍测试工作中罕用的一些命令。未专门标注的,为Linux和Mac零碎下的。 查看占用端口的过程Linuxaaron@ubuntu:~$ lsof -i :8085 | grep LISTEN___server 69080 aaron 11u IPv6 0x5624b7cdebdb6b7b 0t0 TCP *:8085 (LISTEN)WindowsC:>netstat -aon | findstr :80 | findstr LISTENING TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2588 TCP [::]:80 [::]:0 LISTENING 2588杀死过程Linuxaaron@ubuntu:~$ kill -9 69080WindowsPS C:\WINDOWS\system32> taskkill /F /PID 8152SUCCESS: The process with PID 8152 has been terminated.Windows下权限有余的,可右击开始按钮,用管理员模式启动PowerShell。 按名称查看过程aaron@ubuntu:~$ ps -ef | grep nginx | grep -v greproot 21471 1 0 2020 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;www-data 21472 21471 0 2020 ? 00:07:55 nginx: worker process应用grep -v grep过滤掉该查看过程自身。 ...

July 16, 2021 · 2 min · jiezi

关于测试:系统故障防不胜防不存在的让大佬来给你上一课

硬件的故障、黑天鹅的事件、流量峰值、资源故障、DDOS攻打、程序代码的BUG这些都会影响零碎的稳定性。这么多起因都可能导致系统的不稳固,那该如何解决呢? 总的来说分为4个方面,一是做好事先预防,二是故障的及时发现,三是做故障的高效排查,四就是疾速复原。 说故障的事先预防前先跟大家分享一个小故事。 春秋时期的名医扁鹊大家应该都晓得,他们一家3兄弟都是大夫,扁鹊排行老三,一次魏文王问他:“你们三兄弟谁的医术最高超呢?”扁鹊答复道:“我家大哥的医术最高,二哥其次,我的医术最差。”魏文王不解问道:“不是你的医术最高超么,这早已声名远播。”扁鹊解释“大哥常在病人发病之前就能提前发现并预防,二哥则能在病人呈现小病的时候就用药避免好转,所以大家感觉他们只会治疗小毛病医术不高,其实不然。而我的病人个别都是曾经生了大病,我须要开膛破肚为他们进行手术能力治好,正是因为如此大家感觉我医术最好。但其实能预防疾病才是医者最高超的医术。”由此可见故障的事先预防有多重要,自身对于技术团队的考验也更大,那到底该怎么做呢? 设计阶段首先要做的就是在进行设计的时候尽量地简化零碎的设计,简单的分布式架构没有足够的精力去保护它,最初只会问题频出,所以从稳定性登程,1个简略的可用的适宜产品现状的零碎架构才是最好的。 第二咱们须要尽量多的理解全局的状况和零碎指标,作为零碎的研发人员只有理解零碎的整体状况能力在呈现问题时更好地应答。 第三就是为零碎抉择适合的组件,组件自身的易用性、性能,组件社区的成熟度,应用的保护老本等都是须要思考的因素。从我的项目角度登程,个别初期的我的项目更习惯于用比拟激进技术,然而当我的项目达到中后期,为了保证系统的稳定性,会更偏向于应用更成熟的技术与组件,这样后续的保护也会更加简略。 此外还须要标准设计的评审,尤其在做大设计的时候,存储架构、存储数据、缓存、数据库的设计都要造成文档,把想到的问题提前提出,防止在日后开发过程中呈现问题返工。 部署阶段变更是这个阶段带来系统故障的次要起因,谷歌团队在之前公布的文章里提到说大略70%的故障是来源于变更,但实际上可能90%以上的故障都是因为变更引起的。 要防止变更带来的影响,首先要做的就是标准上线的流程,包含上线的工夫、 上线的频率、上线的周期等。像美图当初就是规定只有周一和周四每天能够上线1次,周五和节假日之前是严禁上线的,上线的工夫也有标准,不能在早晨高峰期的时候也就是在5:30之后禁止上线,另外上线之后,咱们会进行监控和察看,尽早发现上线过程中呈现的问题。 灰度、预热、慢启动都是防止变更呈现问题的比拟重要的形式,这里就不开展了。 说一说容量评估,一般来说会做这么几件事儿,第一件事须要确定流量的起源,像是大促流动时须要确定流量是从H5来的还是从第三方的接口来的,起源确定后能够依据过往的教训来设定一个目标值。 梳理链路和服务状况是为了联合监控和全链路压测更好地进行容量评估,水位的设定能够帮忙判断之前设立的目标值是否正当,看具体是要优化还是扩容,以最终确定咱们的机器的数量和和资源的数量。 上文提到的全链路压测,大家感兴趣的能够回顾之前的文章理解详情。二十问全链路压测干货汇总(上)全网最全 做好设计和部署之后就该思考如何通过伎俩来缩小故障产生的机率,次要是有两种形式,1种是冗余,1种是隔离。 冗余包含计算冗余和存储冗余, 存储冗余更多的是应用复制的形式,包含同步复制、半同步复制和异步复制3种。存储冗余自身的复杂度比拟高,因为须要把数据从一个中央拷贝到另1个中央,并且要保证数据的完整性。与之绝对的是计算冗余,常见的形式是负载平衡服务器和多机房策略。 隔离指的是服务隔离,能够依据性能或者重要水平将一个服务拆分成多个子模块,每一个模块之间不会相互影响。这个idea是来源于船舱的设计,大型轮船会有很多的船舱,但它会保障每个船舱是互相隔离的,这样即便某1个船舱呈现故障进水了,它只会影响这一个船舱,不会把整个船全副拖垮。那在进行服务隔离的时候,也是这么一个思路,能够抉择放弃一部分性能或者服务的稳定性来保障全局的稳定性。 讲了那么多故障的当时预防,那当故障曾经产生时,咱们又该怎么解决?你的监控指标是否欠缺?又该如何制订指标? 你的告警逻辑是正确的么?应该遵循怎么样的告警准则? 怎么样能力疾速地进行故障修复?熔断、降级、流控应该怎么做? 想要理解这些问题的具体解答,关注数列科技,回复关键词【71】即可查看原版演讲视频~ 供稿:美图高级技术专家唐扬整顿:三十

July 5, 2021 · 1 min · jiezi

关于测试:得物技术浅谈资损防控

什么是资损资损通常来讲是指领取场景下的资金损失,这里能够从两个维度看 : 用户角度:多扣用户款导致用户资金损失,此问题个别须要通过客服等渠道反馈,能够把多的钱退给用户,然而很大水平上损失了用户体验;公司角度:次要是多出金、多出货、多充值等状况,个别这种损失很难追回,这就是实打实的产生了资产损失。 比方对于一个电商业务可能波及到上图各种业务,业务之间都存在下发、回调、消息传递等各种逻辑或者状态同步,如果其中因为一些交互操作失落导致库存异样、资金结算换算异样、单据流程未完结异样、逻辑触发反复申请,并发管制处理不当等等,最终导致资产或资金的损失。 对于状况预防伎俩除了事先的一些列严格测试,预先剖析的优化补救,也能够通过事中进行监控,得物在这方面就是通过自研的DCheck进行防控。 初识DCheck此零碎由“交易&稳定性”团队主导的,次要是心愿及时的发现数据的问题,保障数据稳固的运行,尤其是波及到资损的场景,为了做到实时无效的监控,在此背景下搭建了准实时核查零碎DCheck,此平台基于Mysql的binglog监控,以及MQ的订阅的信息流技术手段,通过配置触发条件、规定和工作运行以及告警,来确保各个业务上下游业务间的状态一致性,进出扣款金额计算后的准确性。 深刻DCheck性能层级 架构逻辑 概念主题:逻辑数据库 或 MQ订阅事件:Update/ Insert类型操作 或 MQ自定义消子事件:事件所返回的数据的第一层过滤脚本池:有filter和check两个继承办法,filter解决二层数据过滤,check业务上下游逻辑判断规定:触发和检测外围执行局部DCheck对于此零碎的性能和应用简略演示如下: 核查配置主题治理 TOPIC:库名主题编码:表名主题名称:中文的表名MQ实例地址: 对于binlog填*事件治理对于binlog而言,分成了INSERT和UPDATE两种,依据上主题配置主动生成无需创立。 子事件治理荡涤的数据的过滤层,此处在规定配置中,返回‘TRUE’的才会进入下一层,如: if( obj.status.toInteger() == 10000 && (obj.type.toInteger() ==101 || obj.type.toInteger() ==301) ) return 'TRUE'; 如果想所有都返回,就间接 return 'TRUE'。 脚本池治理所有被执行脚本应用的是groovy进行编写的,次要是BaseScript实现filter和check两个办法,外部能够参考脚本库: Filter通过事件过滤后须要脚本再进行二次过滤的操作,次要是一些不能简略从donCleanData进行判断,须要进行正向逆向获取其余数据,或是一些早为简单的逻辑。Check验证逻辑解决办法,次要是就是进行上下游同步状态验证,简单后果计算(尤其是进出帐扣款等方面)比拟。 代码例子: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import groovy.util.logging.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * DCheck:沉着期内-平台客服勾销订单-退买家领取金额 */ @Slf4j @Service class CheckRefundPayForLess30min implements BaseScript { @Resource private OrderDevOpsApi orderDevOpsApi; @Resource DCheckApi dCheckApi; @Resource private PayServiceFeignClient payServiceFeignClient String logTag = "TAG_CheckCrossAndOverSeaRefundPayForLess30min:{}" // 1.关单工夫-领取工夫<30分钟 @Override boolean filter(JSONObject doneCleanData) { // 查问领取工夫 String unionId = doneCleanData.getString("order_no"); String payTime = getOrderData(unionId,"payTime", DevOpsSceneEnum.FORWARD_PAY); long modifyTime = doneCleanData.getDate("modify_time").getTime(); long diffTime = modifyTime - Long.valueOf(payTime) if (diffTime < 30 * 60 * 1000){ return true; } log.info(logTag,"===>有合乎数据进入Check") return false; } @Override String check(JSONObject doneCleanData) { String subOrderNo = doneCleanData.getString("sub_order_no"); Result<List<String>> listResult = dCheckApi.queryPayNoBySubOrderNo(subOrderNo); if(listResult == null || listResult.getData() == null) { return "依据正向查问接口通过子订单号查问领取流水号数据为空"; } if(listResult.getData().size() > 1){ return "依据正向查问接口通过子订单号查问领取流水号多条数据,请查看是否须要优化逻辑"; } String outPayNo = listResult.getData().get(0); RefundQueryRequest refundQueryRequest = new RefundQueryRequest(); refundQueryRequest.setPayLogNum(outPayNo); Result<List<RefundBillDTO>> resp = payServiceFeignClient.queryRefundsByPayLogNum(refundQueryRequest); // 判断领取查问数据是否为空,如果为空间接报数据谬误,以及是否查问到了多条数据 if (resp == null || resp.getData() == null) { return "上游数据为空:领取退款查问(依据领取流水号)"; } else if (resp.getData().size() != 1) { return "上游数据为多条请确认逻辑:领取退款查问(依据领取流水号)"; } // 检查点逻辑判断1: 状态为打款胜利 if (resp.getData().get(0).getStatus() !=2 ){ return "校验领取打款状态非2"; } // 逻辑校验点2:交易退款和RPC查问的金额统一,否则告警 if (resp.getData().get(0).getAmount() != doneCleanData.getLong("amount")) { return "校验交易退款金额和领取打款金额不统一"; } return "SUCCESS"; } // 数据库查问对应字段值 String getOrderData(String unionNo,String key,DevOpsSceneEnum devOpsSceneEnum){ // 外部办法省略.... return value; } } 规定配置规定配置为上述所有根底配置的组合以及真正的运行外围,次要两大块,根底信息和降级策略:根底信息:子事件(反对搜寻和多个选中)+ 脚本类(搜寻抉择) = 触发和执行逻辑,其余为辅助配置信息依照各自域和需要配置 降级策略: ...

July 4, 2021 · 2 min · jiezi

关于测试:引入混沌实验的持续部署流水线-IDCF

前言继续部署(CD)流水线,曾经成为新软件构建和测试时的必备利器。这其中也包含测试环境建设、测试执行验证和销毁测试环境,以可反复的形式一直继续进行。通常咱们会增加自动化测试工具,进行功能测试、负载测试、集成测试和其余非功能性测试,并在推送到生产之前和之后都会验证产品的品质。 当初借助混沌工程,咱们就能够把故障注入测试增加到已有的自动化测试套件中。CI/CD流水线中,也应增加混沌试验运行的新步骤,确保所有代码更改在达到用户之前都是牢靠的。因而,在继续部署流水线中,咱们应用“主动故障注入”的形式来测试可靠性,以便及早发现问题并缩小生产事件。 本文中,咱们将在Jenkins流水线中创立新的Stage,以应用Gremlin将受控数量的故障注入到测试零碎。通过本文,你将学习到: 如何应用Docker部署Jenkins实例。如何在Gremlin中创立API密钥。如何应用Gremlin API发动攻打。一、先决条件在开始本教程之前,以下是必备的先决条件: Docker,用于从容器镜像轻松部署Jenkins。 Gremlin部署在运行混沌试验的主机上。这能够是与Jenkins雷同的主机,但现实状况下,它应该是利用部署的主机,以便进行测试。 Gremlin帐户(在上面注册)。 1.1 启动并运行Jenkins在这一步中,应用官网Docker镜像建设一个Jenkins实例。如果曾经有一个Jenkins环境,请跳到1.3创立混沌部署流水线。 在命令行中,输出以下内容,应用Docker初始化Jenkins实例。 docker run --publish 8080:8080 --publish 50000:50000 --name jenkins jenkins/jenkins:lts-alpine在浏览器上关上http://localhost:8080,确认Jenkins正在运行。 如果这是第一次设置 Jenkins,须要输出管理员明码和抉择装置的软件包。默认设置将失常工作。而后,增加一个管理员用户并登录该帐户。 1.2 增加Gremlin API到Jenkins在此步骤中,在Jenkins实例中输出Gremlin API密钥和团队ID。 Gremlin API密钥与Gremlin用户帐户相关联,并容许Jenkins向Gremlin进行身份验证,而无需用户名或明码。 团队ID与Gremlin团队相关联,并容许Jenkins在Gremlin团队中运行攻打、定位主机和执行其余操作。 要获取团队 ID,请登录Gremlin Web利用。单击右上角的用户图标,而后单击团队设置。单击配置选项卡,查看团队ID: 复制团队ID,因为在下一步中须要它。 接下来,咱们将创立一个API密钥。单击右上角的用户图标,而后单击帐户设置。单击API Keys选项卡,而后单击New API Key。输出密钥的名称(例如“Jenkins”)和可选的形容,而后单击保留。从呈现的窗口中复制密钥。 当初咱们有了团队ID和API密钥,将它们输出到Jenkins 中: http://localhost:8080/credentials/store/system/domain/_/newCredentials 或者关上Jenkins仪表板,在Manage Jenkins > Manage Credentials > Global。单击增加凭据。将 Kind抉择为Secret text, Scope 设置Global,如下所示。将Gremlin API密钥粘贴到 Secret字段中,而后输出gremlin-api-key作为 ID。单击确定保留。 为团队ID反复此步骤。抉择Secret text,将ID粘贴到该Secret字段中,而后输出gremlin-team-id字段。单击确定保留。 1.3 创立混沌部署流水线在这一步中,咱们将创立一个Jenkins流水线。该流水线将运行CPU攻打,在肯定工夫内耗费指标主机上的CPU容量。攻打的指标是咱们装置好Gremlin的一台主机。 在典型的CI/CD流水线中,流水线代码会蕴含以下步骤: 提供测试环境部署应用程序将 Gremlin 代理部署到该环境运行攻打这里,咱们将跳过前三个步骤,仅展现如何应用Gremlin API运行攻打。 ...

June 25, 2021 · 3 min · jiezi

关于测试:得物技术浅尝UI自动化之Airtest实践

一、背景因为很多公司都采纳麻利开发的模式,测试也要跟着进行麻利测试。而每个迭代的周期十分短,常常要对原有性能进行回归测试,这样就减少了大量反复人力老本。引入UI自动化测试能够用来疾速回归测试app原有性能,测试人员只须要关注新性能的测试。其次,挪动端App的测试用例大部分是性能验证相干的用例,通过UI操作即可验证,这就为UI自动化提供了便当条件。因而,能够将测试反复度高,执行效率低的用例,通过UI自动化疾速反复执行,达到进步测试效率的目标。 二、Airtest简介目前支流的UI主动话测试工具次要有:Selenium, Appium和Airtest。其中Selenium是一款开源的Web利用自动化测试工具,它能够间接运行在多种浏览器平台,其反对的浏览器简直涵盖了所有支流的浏览器,然而因为得物是APP,不须要web端的测试,故这个工具被仁慈舍弃。而Appium和AirTest都是针对APP的自动化测试工具,都能够进行主动话测试脚本的录制和回放。然而之所以抉择了AirTest最次要的起因是他很容易生成测试脚本,即便测试人员不会编程,不懂脚本,也能够通过失常用户的点击拖拽等操作,主动实现脚本的录制,从而大幅度降低自动化保护老本。自己通过亲自实际,从UI自动化小白到第一个自动化测试脚本胜利运行,用了半天工夫,感兴趣的同学能够尝试一下。 AirtestIDE 是一个跨平台的UI自动化测试编辑器,实用于游戏和App。它的特点如下: 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程反对。基于图像识别的 Airtest 框架,实用于所有Android和Windows游戏反对。基于UI控件搜寻的 Poco 框架,实用于Unity3d,Cocos2d与Android App。可能运行在Windows和MacOS上。架构图 能够看到,底层的次要测试框架是AirTest和Poco,二者区别在于: AirTest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,实用于游戏和APP。Poco:基于UI控件搜寻的自动化测试框架,其外围劣势是除了对Android 和IOS之外,对游戏也是反对的,同时也反对微信小程序、微信小游戏和H5利用。三、Airtset装置和连贯设施    目前AirTestIDE 提供了Windows和Mac两个版本的客户端,请从官网下载,解压即用。     无论是Android/IOS手机,还是Windows窗口,在AirTest中都将它视为一个设施。下边重点介绍一下Android设施的连贯。 连贯Android手机通过ADB连贯电脑和Android手机,ADB是Google官网提供的Android调试工具,AirTestIDE依赖ADB与安卓设施进行通信。 关上AirTestIDE,依照以下步骤进行连贯: 1.关上手机设置-开发者选项-USB调试开关,参考安卓官网文档; 2.在AirTestIDE设施面板中点击 refresh ADB 按钮,查看连贯上的设施; 3.如果没有显示出设施,试试restart ADB,如果还不行,参考FAQ文档进行问题排查。 4.可能胜利看到设施后,点击对应设施的connect 按钮,进行初始化。 连贯胜利后,即可在AirTestIDE中看到手机屏幕的镜像显示,并进行实时操作,如下图所示: 连贯IOS手机要连贯一台IOS手机,你须要筹备好一台装置了Xcode的MAC电脑,连贯形式参考文档。 四、录制自动化脚本在连贯上设施当前,就能够开始录制自动化测试脚本了,在接下来的内容中,我将会在一台Android手机上,给大家演示如何录制脚本。 模仿输出AirTest反对通过图像识别的形式,找到你想要的地位并进行操作,这是基于AirTest框架实现的。 咱们能够先看看如何主动录制脚本:点击AirTestIDE左侧的AirTest辅助窗上的“录制”按钮,而后随着你在设施窗口上操作手机,代码会主动生成在代码窗口中。 录制实现后,点击“运行”,就能够运行你的第一个自动化脚本了。 如果你感觉主动录制生成的图标不够精确,还能够点击AirTest辅助窗上的 touch 按钮,而后再设施窗口上框选准确的图标,也能够制动生成一条touch语句。如下:https://www.qq.com/video/e325... 相似的模仿输出操作还有滑动:点击swipe按钮,在设施窗口上框选准确的图标最为滑动终点,而后点击滑动起点地位,即会主动生成一个swipe语句。 其余的模仿输出的API包含: Text:文字输出KeyEvent:按键输出,包含(HOME/BACK/MENU等)Sleep:期待Snapshot:截屏断言到这里,咱们曾经有各种模仿输出办法,配合逻辑管制语句让手机动起来。自动化测试中还有很重要的一个步骤:后果验证。咱们就能够来看看怎么申明断言。 (1)验证UI界面 录制办法与模仿输出相似。 assert_exists:断言图片存在assert_not_exists:断言图片不存在(2)验证数值 通过Poco获取属性值,手写代码进行断言。 assert_equal:断言箱单assert_not_equal:断言不等例如 查看测试报告脚本运行结束后,点击“查看报告”那妞,会应用默认浏览器关上后果报告页面,报告中将展现每一个步骤的内容和理论执行过程的截图、运行后果,不便查看步骤是否执行胜利。 五、AirTest脚本介绍AirTest是一款基于Python的,跨平台的UI自动化测试框架,基于图像识别原理,实用于游戏和APP。尽管能够借助IDE提供的录制性能疾速的生成脚本,然而通常来说,熟练掌握Python语法可能帮忙咱们写出利用更宽泛、更不容易出错的脚本。 一个简略的.air脚本解析在下载解压Airtest脚本的专属IDE——AirtestIDE后,点击“新建脚本”按钮,默认即可创立一个后缀名为.air的脚本文件,.air这是Airtest脚本的专属后缀。 让咱们关上方才新建脚本的文件夹,能够看到实际上.air脚本文件是一个一般的文件夹,外面附带了一个同名的.py文件,AirtestIDE在执行脚本时,实际上执行的是外面的.py文件。也就是说,Airtest脚本实质上仍是Python脚本,遵循的是Python语法,咱们能够依据理论须要自在地import其它Python第三方库。 值得注意的是,.air文件夹中必须要有同名的.py文件,否则在命令行执行airtest run test.air这样的运行指令时会导致失败。 AirTest脚本示例 初始化环境首先,就像一个一般的Python脚本一样,咱们须要在代码文件的最结尾局部,写上from airtest.core.api import *,将AirTest 的次要API都import进来,以便在后续脚本中应用这些API。 auto_setup是一用来初始化环境的接口,接口文档在这里,它承受4个参数,咱们能够设置以后脚本所在的门路、指定运行脚本的设施、设置默认的log门路和设置脚本父门路。 如果auto_setup不传入任何参数,AirTest将会读取运行时命令行中传入的各项参数,来对环境进行初始化。在AirTestIDE创立脚本时,默认生成的代码里是最简略的初始化代码auto_setup(__file__),意思是将脚本文件作为脚本门路传入,其余参数内容将默认读取运行命令行传入的参数。脚本运行命令行有两种模式,命令行中的参数蕴含device,log等: 命令行运行AirTest脚本的示例:>airtest run untitled.air --device Android:///手机设施号 --log log。在应用AirTestIDE运行脚本时,会在"Log 查看窗"中主动生成一个可用的命令行,能够供大家作为参考。模仿点击Airtest作为自动化测试框架,模仿的是人的操作,常见的接口次要有: ...

June 11, 2021 · 1 min · jiezi

关于测试:领导是时候开展混沌工程了-IDCF

Gartner提到,负责DevOps的基础设施和运维(I&O)领导者,想要实现系统可靠性这一指标,必须克服对混沌工程的恐怖。混沌工程不仅可能平安地施行,而且容许组织在实践中学习,为晋升系统可靠性和对系统级联依赖的了解深度,打下松软的根底。一、外围挑战在古代利用的简单环境中,I&O领导者,被牢靠交付的要求所困扰,他们放心混沌工程过于危险,具备破坏性,导致他们无奈对其影响做出反馈。 因为交付速度的减少、平台的多样性以及分布式应用的依赖性,零碎复杂性变得越来越难以厘清。 在可靠性畛域,短少全面且零碎的常识体系,仍停留在专家的实践经验中。 负责DevOps的I&O领导者必须: 将混沌工程作为一种组织能力进行推广,视为一种惯例的产品团队流动。在预生产环境中,要求团队通过“测试后行”的办法平安地实际混沌工程。催促团队利用工具和实际对整个技术栈引入故障注入测试。二、混沌实践混沌实践起源于气象零碎的数学钻研。 第一篇论文,最后由爱德华·诺顿·洛伦兹 (Edward Norton Lorenz) 于 1972 年发表,他被誉为混沌实践之父。 《可预测性: 巴西蝴蝶翅膀的扇动是否会在德克萨斯州掀起龙卷风?》艰深地能够称之为“蝴蝶效应”,在这种状况下,即便环境中的渺小变动,也可能导致将来状态的激烈变动。 混沌实践蕴含一个悖论,即简单的事物能够被了解,但能够了解的事物并不总是能够预测。就零碎而言,混沌实践指出,零碎初始状态的渺小变动可能会导致前期产生微小的行为差别。如下图所示。 三、举荐形式Gartner提到,到2024年,超过50%的大型企业,将利用混沌工程实际,强化其数字化能力,以达到更高的可用性(99.999%)。 3.1 可靠性是数字业务的要害据Gartner 2019年CIO考察发现,在2019年投资减少的畛域中,排名前三的是数字化翻新(22%)、支出/业务增长(22%)和卓越经营(13%)。然而,当零碎频繁宕机时,下面每一个都会受到影响,从而毁坏CIO的最高优先事项。此外,Gartner 2019年的DevOps钻研发现,在建设DevOps实际的最高指标中,“进步系统可靠性”排名第三,仅次于排名第二的“缩小零碎缺点”。 许多进步可靠性的工作,过于关注或强调事件响应和故障复原的过程,但这并不能阻止侵害组织品牌和信赖的事件产生。 I&O领导者应如何利用事件影响链和改良措施进行转变? 领导者必须疏导团队在预生产中,依据稳态假说向零碎无意地引入故障。这也是组织学习的催化剂。通过这种形式获取到的常识和技能,能够更好帮忙咱们治理和加重零碎危险(见下图)。 在预生产中利用“测试后行”的办法实际混沌工程,从中提取新常识,而后再逐渐利用到生产中,晋升生产的稳定性。 另外,可靠性工程的代替计划是风险管理。实际混沌工程,也相当于拥抱风险管理。 3.2 让混沌工程成为惯例的团队实际在数字业务性能公布节奏上受到的压力,往往让很多的I&O领导者感到不适,这里的起因是不言而喻的。 新版本可能会带来新的生产缺点和稳定性的问题。这会导致SLA和客户满意度降落。为了跟上当今频繁的公布周期,咱们必须被动缩小停机工夫,而不仅仅是通过事件响应的做法。 传统公布模式中的系统可靠性曲线阐明,在产品的生命周期中通常有三个阶段(见下图)。 在产品公布期间,缺点是比拟高的。随着工夫的推移,当缺点数量缩小时,产品就进入使用寿命阶段,而后在一个较低的数量上稳定下来。在曲线末端时,产品会磨损,缺点会从新呈现。当咱们进行保护,或者因技术累赘和复杂性,升高最佳运行配置和环境时,软件也会“磨损”。 然而,当咱们开始以频繁的性能增量迭代公布时,往往会呈现: 软件测试效率和公布频率减少的同时,软件的规模、复杂性和技术债都在增长。尽管版本增量要比传统公布的小,但小而频繁的更改,会减少利用非性能相干畛域的潜在问题。随着软件性能的丰盛,用户更加依赖,从而取得更多的业务价值,同样系统可靠性也会成为影响用户满意度的要害。下图是迭代公布模式中的可靠性曲线,表明了频繁变更对团队和产品带来的潜在影响。 为了避免这条曲线成为事实,咱们应踊跃推广混沌工程,配合麻利治理、DevOps和站点可靠性工程(SRE)实际,晋升产品的可靠性。在预生产阶段,咱们能够将新的故障场景注入到产品的增量公布中。当混沌工程成为产品生命周期的一部分时,能够继续地带来新常识和零碎的可靠性。 像许多实际一样,团队须要工夫来相熟与把握混沌工程,所以减少GameDay(游戏日)和混沌试验打算的频率,对刚驳回混沌工程实际的团队来说是至关重要的。 I&O领导者必须把混沌工程当作惯例的团队实际,而不是作为一次性的流动。 采纳重用和共享的形式,来帮忙I&O领导者推广混沌工程。 通常,团队的产品都会应用类似的平台和服务。这意味着曾经实际过的混沌试验打算,能够被其余团队和集体复用。通过重用其余外部团队在预生产中的施行办法,可大大降低大家对混沌工程实际的恐怖。 另外,还可通过社区来更宽泛地分享教训,包含失败的例子。例如:因混沌试验影响了生产零碎。当然,咱们必须要确保设置失当的权限,通过共享存储库和版本控制来拜访这些混沌试验打算。 3.3 在预生产中平安施行混沌工程在预生产中利用混沌工程能够实现两个要害工作。 首先,容许团队以一种“非侵入式”和“测试后行”的办法,平安地把握混沌工程实际。其次,从混沌工程实际中取得的常识,可用于失常的运维和生产加固。只有在咱们减少了混沌工程实际的常识,并帮忙咱们从生产零碎中移除足够多的故障点之后,咱们才开始思考在生产中迁徙或重用这些混沌试验打算。 值得注意的是,许多组织在创立和保护“与生产类似”的测试环境方面遇到了艰难。 混沌工程,就像信息技术的其余实际一样,须要花工夫去学习、驳回和把握。混沌工程能够通过业务团队、架构团队、利用开发团队、运维团队和平安团队之间的踊跃合作来把握。 下图概述了创立混沌试验打算的五个简略步骤。 1)头脑风暴潜在的服务生效点与产品负责人一起为可靠性事项排出优先级。同时邀请性能构建、功能测试或服务应用的团队成员一起加入。利用他们对系统的认识和应用零碎的教训,头脑风暴出潜在的故障区域,以及整个零碎和组件在压力下的行为表现。激励从多个角度进行思考,以取得尽可能多的内容。 2)设置稳态假如多个团队的单干,整顿和创立假如。确定零碎将如何生效,影响哪些组件,如何升高用户体验,如何度量,以及团队如何复原该服务。这些假如都是混沌试验打算的根底。 3)对系统进行试验混沌工程中的“混沌”是零碎的状态,而不是施行形式。成熟的组织甚至在生产中应用随机的故障注入。当然,只有在胜利实现很多混沌试验打算,并能很好地了解零碎行为之后,随着工夫和教训的积攒,能力达到这种成熟程度。 下图蕴含了一个故障注入打算的示例。 4)观测零碎行为记录零碎的行为、个性(性能、可用性、性能)、SLA和服务水平指标、服务水平指标、均匀检测时间(MTTD)和均匀修复工夫(MTTR)。 Gartner的2019软件品质工具和实际考察发现,只有36%的受访者示意,他们的组织有在度量MTTD,只有39%有在度量MTTR以评估利用交付性能。 混沌工程能够助力团队在促成组织能力和学习方面有效性的度量。例如,团队中有多少成员奉献了相干常识?创立或者记录的是否为新常识,是孤立的,还是以前未知的? 此外,用户也能够参加执行混沌试验打算。度量对上游零碎的影响,即便在服务复原之后也是如此。这外面的关键点是,实际混沌工程时,新常识和价值来自许多畛域,而不仅仅是演练服务复原的步骤。 5)剖析、学习和改良试验和观测的后果必须提供产品负责人,须要优先思考到产品或平台的backlog中。下一步应如何?或者加固,或使简化?须要留神的是,这些学习和改良,可能会影响到其余团队的工作。如果组织刚开始接收混沌工程,而你的团队是第一个进行这种实际的,那么能够思考利用混沌工程实际社区,与别人分享混沌试验打算。 3.4 推动团队突破所有有些团队因为本身零碎的复杂性,而在执行/不执行(Go/No-Go)决策时陷入困境。这就是剖析瘫痪,如果常常产生,就须要加以解决。 与其没完没了的“如果/那么”对话,不如在预生产中实际混沌工程来解决这个难题,而后持续新的工作。 尽管在预生产中执行,你可能是推动者,但要意识到,这其中的价值来自于混沌试验打算的全面性,它会帮忙你取得新的常识,带来决策的信念。 零碎中应用的技术,往往来自不同的工夫点、负责人和团队能力。 1)旧零碎曾经运行了几十年,依然是运维的重心。尽管这些零碎值得信赖,但很可能最后的设计和开发人员曾经转移到其余团队或来到。故障注入到这些零碎中,将帮忙咱们保留住快失落或忘记的常识,或意识到咱们有常识缺口,须要大量的钻研。混沌工程试验能够进一步辨认那些忘记的常识,帮忙团队学习。 2)SaaS产品也可能成为环境的依赖项。只管在预生产中可能有,也可能没有,但虚拟化服务是肯定有的。创立蕴含SaaS解决方案的混沌试验打算,看看它们如何对端到端环境产生负面影响。 3)零碎安全性也是故障的注入点。通过更改帐户明码的权限,甚至齐全删除服务帐户来考察零碎行为。团队可能在不理解的区域中应用了某些服务帐户;混沌试验能够将其带来的影响展示进去。咱们还能够更改文件或目录的所有权,或在不正确的帐户下重新启动服务。 4)进行业务并删除数据。尽管不太可能失落数据库,但失落连贯并不少见。如果应用程序是通过性能标记实现数据驱动的,那么这些性能标记被齐全删除,将会产生什么?在审查应用程序的行为时,还应进行罕用的服务,能够思考进行容器、虚拟机和服务(如SSH)。 ...

June 9, 2021 · 1 min · jiezi

关于测试:测试人员价值的终极体现-IDCF

品质内建依赖于团队内所有成员的意识和能力,测试人员价值的终极体现是团队赋能,能够从多个维度动手,在产品生命周期的不同阶段,针对不同角色进行继续输入,造成品质思维的规模化,从而从根本上做到品质内建。 “在我的我的项目背景下,测试人员能施展能动性的中央不多,测试与上线工夫相隔太久,测试人员毫无价值感。"“测试门槛比拟低,技术再好的测试也没有开发技术好,测试人员有什么价值呢?”“交付是整个产品生命周期的末端,测试更是末端的末端,软件品质好人人有功绩,软件品质差测试要背锅救火,太没成就感了。”“当初大厂正在裁掉测试部门,测试工作摊派进来或找外包,作为一个测试,我的外围竞争力在哪儿呢?”“技术突飞猛进,测试行业水涨船高,对测试人员的常识深度广度要求越来越高,我该怎么晋升本人的价值呢?”下面这些问题来自不同的测试小伙伴,如果正在浏览此文的你也有同样的困惑,那么请跟我一起开启测试人员的价值探索之旅。不管大家身处的开发模式是瀑布还是麻利,测试人员针对团队的赋能都能够分为三个层面:需要层面、实现层面和组织层面。上面让咱们来一一摸索一下。 需要层面:测试即需要为什么说“测试即需要”?品质内建的实际之一是测试左移,为了取得更低的缺点修复老本,测试须要在需要引入阶段就染指,即针对需要的测试。在整个需要产生的过程中,测试人员都能够参加进来,输入本人的想法,奉献本人的业务上下文和测试思路,这种行为对需要最终产生的内容或模式都可能有间接影响,所以咱们在某种程度上能够说“测试即需要”。 那么在整个需要产生的阶段,测试人员如何帮忙需要正确表白呢?具体的实际有很多: 如在需要未明确时,能够帮忙业务或产品梳理现有逻辑,提出预期需要;在迭代打算会议和开卡时,能够帮忙补充验收规范和撑持性需求,亦或是针对界面交互和用户体验提出改良倡议。讲个段子,假如场景如下: 女友说:“我渴了。”——这是提出了一个需要。你:“多喝点水。”——毫无求生欲(“两个黄鹂鸣翠柳,我还没有女朋友~” 这种状况不在探讨范畴内,测试人员也会帮忙明确需要范畴) 如果有测试人员,他就会想:“你认为她说的渴了,真的只是渴了么?”,他就会问:“她是在什么状况下说渴了呢?”,与此同时脑子里生成很多分支: Case1:真的渴了,就是想喝水。——多喝点水。Case2:逛街有点乏,恰好走到星巴克。——敬爱滴,来杯半糖香草拿铁吧。(不仅满足需要,还理解偏好,体验度加分)Case3:面试前心里打鼓,有点缓和。——来喝点矿泉水(递过去拧开盖),我的小仙女是最棒的。Case4:你们没在一起,而你又晓得她在哪儿。——你爱喝的 XX 奶茶曾经在路上啦,好好关照本人,我忙完就去找你。Case5:你们没在一起,你也不晓得她在哪儿。——求生欲负值,放过她吧。等你回复上下文后,测试人员抉择适合的门路返回给你。 咱们来看一下,在这个过程测试人员做了什么: 需要廓清——基于业务上下文的需要背景剖析;剖析现有逻辑——提出现有逻辑的不合理性;提出预期需要,补充验收规范——针对不同需要背景下的不同验收规范;提出撑持性需求——递过去拧开瓶盖,下单外卖服务;关注用户体验——恰到好处的同理心和疏导话术。尽管是个段子,但正是这个简略的段子恰好阐明了测试人员在需要表白、翻译和传递上的价值体现。当他在做这些事的时候(有时甚至是下意识的,来源于测试人员独有的敏感度),不仅能够帮忙团队防止因为误会需要造成的节约和返工,更能让团队内的其余成员 Get 到他所关怀的点,从而逐步建设起需要测试的 Sense,从而帮忙用户或客户表白他恰好想要的性能是什么,这就充分体现了测试人员在需要层面的赋能价值。 实现层面:测试即服务这里所说的“测试即服务”不是指宽泛意义上的 TaaS(Testing as a service),其实在某种程度上也能够算是,只不过是来自于本人外部的服务。这里“测试即服务”指的是:测试人员在实现层面赋能的后果是,他提供了一种测试服务,或者测试基础设施。 举个例子,当咱们要实现的需要卡是: 在开卡过程中,测试人员可能会问以下问题: “有没有状态标识一辆车是否有平安座椅?有没有状态标识一个订单是否勾选了宝贝出行选项?”“这张卡是否包含下单后的车辆匹配?是否包含订单状态更新的显示?”“如何匹配左近的车辆?就近匹配的算法是什么,有哪些外围的计算逻辑?”“验收时请演示车辆匹配失败,零碎主动从新下单时是否勾选了宝贝出行选项。”“请为所有分支场景加测试。”…… 两天后,开发实现编码实现,找到测试人员:“我代码写完了想自测一下,怎么疾速生成订单?” 测试人员丢过去一个数据生成 SQL 脚本 / 接口 / 工具,通知开发怎么造测试数据,同时揭示开发务必通过某几个测试用例,反之则不能结卡。 在开卡过程中,测试人员参加了技术探讨,补充了单元测试点,提供了验收用例。在编码实现后(或其余不同阶段),测试人员提供的测试数据、测试用例、测试脚本或工具,都能够帮忙开发人员更轻松便捷的实现测试,同时也造就了测试意识(意外过不能结卡嘛)。这就是测试人员在实现层面赋能的价值体现。 组织层面:测试即资产这一点很好了解。 第一,测试人员会进行品质剖析,提供测试报告,剖析软件品质的变化趋势,剖析团队的开发效力,针对流程中不合理的节约状况提出改良项并跟进,从而使团队的工作形式更加麻利。第二,测试人员会提前裸露危险,进行危险预警,联合客观条件提出品质预期,帮忙团队建设品质信念。第三,测试人员积攒了大量业务知识,不论是宏观层面还是业务细节,测试人员对本人测过的产品都一目了然,往往也更容易成为领域专家。在这个过程中的积攒和积淀,对组织来说都是一种无形的或有形的资产。这就是测试人员在组织层面赋能的价值体现。总 结佛说,人生有八苦:“生老病死、爱离别、求不得、怨憎会、放下不”,所有的苦楚,不就是因为和预期后果不统一吗?测试工程师这个角色,钻研的就是如何让预期和后果保持一致,咱们能够采取各种实际,应用各种工具,会集各种角色,去帮忙大家更好的表白预期,实现预期,验证实现的后果与预期是否统一,并记录下来咱们努力奋斗的过程,积淀下来咱们智慧凝固的常识。几乎不要太有价值感好嘛! 本文献给所有挣扎在测试畛域的小伙伴们,让咱们红尘作伴,快意恩仇。我是QA,我自豪。 思考题:你认为测试价值的终极体现是什么?哪一点对你来说最重要?为什么? 起源:圆小豆的美梦工场作者:于晓南 申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 6月每周四晚8点,【冬哥有话说】开心一“夏”。公众号留言“开心”可获取地址 0603 无敌哥 《IDCF人才成长地图与5P》(《端到端DevOps继续交付(5P)精品课》第1课)0610 冬哥 《带你玩转翻新设计思维》0617 无敌哥 《麻利项目管理到底是个啥》0624 冬哥 《VUCA时代的麻利领导力》

June 8, 2021 · 1 min · jiezi

关于测试:有道精品课全链路测试的改进和思考

导读这篇文章次要给大家分享精品课测试团队为保障大促稳定性,在最近一年半工夫的所做的一些尝试和摸索。比方,如何精确预估开闸霎时的用户流量,如何更好地进行性能优化后的验证和回测,如何解决夜深人静压测的难堪等等。值得快慰的是,通过继续测试和优化,精品课的所有服务,在几十亿规模的交易流量下,都体现出了很好的稳定性和可靠性。 作者/ 有道精品课测开小组 编辑/ Ein 背景相似于电商平台的618,双11大促,在线教育平台也存在两个重要的工夫节点:04月春续暑秋,10月秋续寒春,产研侧须要针对销售策略与售卖预期,提供续报工具、数据核算、流程买通等多方面的反对。作为测试人员,在保障性能可用的根底上,还要通过全链路压测的伎俩,维持流量突增十几倍的状况下零碎的高可用状态,演练各种降级、限流、熔断、监控、应急计划,竭力保障流量最高峰也不呈现问题,即便呈现问题也能迅速的发现-定位-解决-复原。 具体实际整体指标一句话:保障开闸霎时及流动期间零碎整体稳定性。 进一步细化能够蕴含以下几点: 容量布局:以整体流量和业务指标为根底,估算出每个子系统须要满足的容量大小,联合压测状况,对系统进行适当的扩容和优化,确保零碎可能满足业务流量压力。流量管制及降级:零碎须要避免流量超过可撑持的容量,对超出设计的流量进行限流,对超负荷or异样的服务及时进行降级。这里次要验证:限流和降级策略的合理性和可用性。监控:测试现有监控伎俩是否能正当发现和裸露问题,以便对问题及时预警,做到早发现,早治理。演练预案:对系统可能面临的问题要进行全面的预演,比方根底服务异样,机房故障等等劫难模仿的伎俩来测验零碎体现以及筹备正当的解决计划。流程图①根本测试流程 图②问题发现及定位 常见问题解决方案分享压测模型确定模型,次要包含2个方面:门路、指标。 门路:次要指的是理论流动中用户的操作门路,转化到服务即对各接口串行或者并行调用形式、调用程序等。次要是通过从产品侧获取sop进行抓包转化失去。 指标,次要指的是各场景中各种操作的占比与工夫,那从测试维度来看,就是每个接口的QPS, RT等数据。 能够说模型的准确性间接关乎压测的成败,去年咱们的模型中漏掉了退换课接口,然而这个接口存在比较严重的性能问题,间接触发了零碎的级联故障,影响很大。 如何获取精确的模型,咱们考究“取之于理论,用之于理论”。即获取前一次续报流动的理论调用情景,通过数据荡涤与整顿,联合本次的预估数据量及sop,量化本次压测的指标。可参考下图:通过咱们的自研工具,实现日志主动解析、接口列表补充、压测场景确定等工作。一部分解决流程如下:(备注:npt为杭研的压测平台简称)将SOP转化为接口门路。传统形式是抓包后,人工筛选、比照、整顿抓包后果,再将接口变更状况手动同步到压测平台,该工作较繁琐且反复。这部分咱们提炼成web工具后,仅须要上传抓包文件,就能够失去场景级别的接口增减状况,并反对“场景级别的接口列表保护”、“设置接口黑名单”、“接口一键导入压测平台”等性能,成果展现:最终成果:不论是接口列表或者量级,咱们压测模仿的流量跟理论流量简直是统一的。 数据结构数据是压测执行的前提条件,比方咱们须要特定格局虚构用户文件作为申请参数,再比方某一批用户只有领有某些课程权限,能力算作无效用户,那么就须要给用户批量预置某些课程权限。针对这种情景,次要解决方案是:通过自研平台开发了批量操作的web工具,比方加课程权限,发放优惠券,通过多线程执行工作,在较短的工夫内实现无效用户的筹备,包含数据库更新、redis缓存刷新等,实现工具复用,升高造数老本。 环境之前留给压测的工夫比拟缓和,为了保障测试后果的可靠性,咱们间接应用线上环境压测,同时为了升高业务影响,只能在凌晨中午进行测试,导致测试周期很长,相干人员都比拟疲乏。通过沟通,开发和运维侧帮助搭建了专属压测环境,服务部署独立实例、redis,kafka等相干中间件加prefix进行数据偏移,外围组件mysql独自部署实例,为了解决测试环境mysql数据量不够的问题及数据清理的问题,研发调研了mysql一键同步及回滚工具,流程如图: 成果:外围电商业务80%的问题都能够在测试环境发现及验证,不必再熬夜线上测试。 对于性能回测在压测过程中,性能优化是必不可少的,那么疾速实现优化后的接口性能验证是性能测试能持续进行的重要保障;理论遇到过很多种须要进行性能回测的场景,比方:须要批改接口自身逻辑,例如单查改为批量查问等;更换数据源,例如从查问es改为查问doris等,这里手工回测和咱们现有的接口自动化回测都具备肯定的局限性,所以咱们引入了流量剖析+diff计划,测试高效并且覆盖率高。外围指标是:比照数据量多,比照速度快,操作简略不便,应用流程:对于数据比照,满足咱们要求的第三方库有很多,比方常见的deepDiff、difflib、json-diff、json_tools等,都有各自侧重点。其中DeepDiff能够比照字段、字符串等可迭代的对象,针对对象的深层差别,反对递归查找所有更改,同时反对比照的格局也很多,包含JSON、XML、图片等,因为性能比较完善并且满足咱们的需要,咱们最终实现选用了deepDiff库。总结收益通过多轮压测,发现了大于20个的性能问题和优化项,在最初理论开闸期间,零碎体现优良,业务方反馈很好。整个零碎的稳定性有显著晋升,日常故障率明显降低。集思广益,产出了一份欠缺的压测作战手册作为后续大型流动压测工作的指导性文档。 后续瞻望压测日常化→对于压测执行这部分,后续咱们会与开发运维一起,部署一套压测专属环境,建设日常压测流程及规范,在新的变更上线前尽早发现和优化性能问题,防止长期抱佛脚。无人值守压测→ 目前每次全链路测试,咱们都须要压测执行的测试和研发人员线上实时关注监控报警等,以便及时发现和定位问题,后续心愿在压测时接入咱们的各种服务和接口报警零碎,达到问题主动发现和产出报告的成果。相干工具的易用性拓展,提供给开发自主回测→下面提到的一些工作,依然存在大量的人工操作,目前咱们正在做进一步的工具开发,包含diff工具减少后果展现的比照和统计,流量回放web操作页面等等。性能瓶颈剖析工具→ 以后呈现性能问题时个别是靠研发人员进行人工定位和排查,后续会调研是否利用apm零碎做一些问题初步剖析的事件。工具集成化,赋能其余业务线。-END-

June 4, 2021 · 1 min · jiezi

关于测试:持续测试-DevOps-时代的高效测试之钥

本文作者:程胜聪 - CODING 产品经理时代带给测试的挑战测试始终是软件研发过程品质的重要保障,而在传统研发模式中,测试流动总是处于软件生命周期中绝对滞后的环节,置信咱们对以下对话场景不会感到生疏: 布局好需要之后:“这个版本的 X 性能很要害,测试肯定不能漏掉!”“好的,咱们曾经在需要列表中做了备注。”开发过程中:“这次的性能做完了吗?”“开发实现了,然而还没有测完。”邻近公布日期了:“性能曾经上线了吗?”“到预公布环境了,回归测试还在进行中、之后比照剖析还须要工夫。”以上提到的问题:“测了什么”、“测完了没”、和“测得快吗”,堪称是团队常常面临的“灵魂三拷问”。而随着麻利 & DevOps 模式在软件行业的推广落地,更频繁的交付更是减轻了业界对测试的担心,测试不够高效往往成为导致交付延期的首要起因,测试环节也就成为了企业进行 DevOps 转型的最大瓶颈。 为了应答这样的挑战,“继续测试”(或者“麻利测试”)概念被提出并缓缓成为了业界的必然谋求。继续测试可能满足以下几个外围诉求: 测了什么:不能实现 100% 回归测试笼罩的前提下,基于业务价值来划分测试子集。测完了没:在继续交付的过程中,按需进行测试并且提供疾速反馈。测得快吗:让测试执行的足够快。什么是继续测试?来自维基百科的定义:在软件交付流水线中执行自动化测试的过程,目标是为了取得对于预公布软件业务危险的即时反馈。如下图继续交付的莫比乌斯环所示: 诚然,上述定义充沛强调了自动化测试的重要性,这是继续测试的根底。然而回到“通过继续测试取得效率晋升”的最终目标上,仅仅晋升测试执行形式这个单点效率,还不足以体现继续测试所带来的测试理念转变的实质。从整体测试效率的角度登程,DevOps 另外一个双生概念“麻利”模式所形容的“迭代内测试“(in-sprint testing)或者“麻利测试”就成为了更好的补充:继续测试应该作为一项根底和继续的流动、贯通于整个软件交付周期之中。来自 Jenkins 社区的图片更好地体现了这一概念: 如何实现继续测试?继续测试扭转的是传统测试后置的工作模式,让测试流动延长到软件开发生命周期的每个阶段。 1. 需要布局阶段,尽早打算测试,并且策略性定义测试子集。首先,从需要剖析的阶段就开始提前打算测试、编写测试用例,使之达成适当的需要覆盖率。对此须要有帮忙地实际包含 ATDD、BDD,尤其是 TDD 难以落地的团队能够尝试 ATDD。其次,要有优化测试覆盖范围的意识。测试不应该自觉谋求 100% 笼罩,而是基于业务危险和价值的测试策略进行测试(Risk-based Testing),“100% 笼罩优先级高的需要”远比“80% 笼罩了所有需要”来得有价值。 2. 迭代进行当中,推动测试左移(Shift-left),实现测试与开发并行工作。测试执行应该前置到软件开发生命周期的晚期,多种工程实际能够帮忙团队实现左移:比方器重测试评审,通过单元测试进行基础性保障,基于接口定义的开发和自动化测试,引入代码扫描判断是否满足编码标准和工程规范。这样在迭代周期内,就能围绕着需要继续进行集成测试用例的编写,并且与开发放弃停顿协同,为开发提供必要的测试反对,使得测试与开发的工作实现同步进行。 3. 迭代进行当中,以便捷的形式提供残缺的测试环境和正确的测试数据。始终以来,靠近生产的测试环境打造和脱敏数据的疾速筹备是团队面临的两大重要挑战。现在随着云原生技术的成熟,尤其是 Docker 技术的倒退,让按需搭建和销毁环境变得可能。然而测试数据的治理依然是个难题,根底数据如账号信息、环境信息这一类容易标准化的数据在业内曾经有了比拟好的解决方案,这曾经是个重大提高。而业务数据因为场景多变性始终不足足够好的业务形象,还处于依赖框架进行流程标准的根底阶段,基于接口定义的开发从而实现 Mock 服务也可能带来过程效率的晋升。 4. 利用部署之后,关注测试右移(Shift-right)。传统瀑布模式把部署作为测试的下一阶段,也就意味着利用公布上线、疾速验证性能之后就是测试的完结。而继续测试则不认为公布实现测试就退出了,强调的是在版本上线后、持续关注生产环境的数据监控和预警,及时发现问题并跟进解决,将影响范畴降到最低。并且利用生产上的数据能够为开发过程带来切实的价值:比方复制生产数据进行脱敏来筹备测试数据,对服务拜访数据进行剖析的后果也可为开发过程中的测试提供优化的指引、从而调整测试并造成更好的冒烟和回归测试策略等等。右移的实际包含数据分析、灰度/金丝雀公布、线上实时监控、用户反馈的跟踪解决流程等等。 此外,咱们在实际继续测试的过程中要关注数据的积淀,而后基于数据指标一直优化咱们的行为,从而实现 DevOps 所推崇的继续改良的团队文化。随着软件行业内麻利和 DevOps 文化的一直流传,研发团队必然会冀望实现更短的迭代周期,更无效地进步软件开发品质,更快地交付业务价值。 CODING 秉承为企业研发团队提供一站式 DevOps 解决方案的理念,通过弱小的测试治理性能,助力研发团队将测试作为根底流动贯通于软件交付的整个过程中,大大缩短软件交付周期,让测试和研发同步迭代,实现继续测试,帮忙团队将注意力回归高质量交付。

May 31, 2021 · 1 min · jiezi

关于测试:AirtestProject测试框架

本文首发于:行者AIAirtestProject是一款自动化测试框架,该我的项目包含:Airtest、Poco、AirtestIDE。 Airtest是一个跨平台的基于图像识别的UI自动化测试框架;Poco是一个跨平台的UI自动化框架;AirtestIDE是跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相干插件性能。具体介绍能够参考官网文档:https://Airtest.doc.io.neteas... 1. Airtest工具介绍1.1 装置Airtest返回官网下载并解压,门路不要呈现中文。解压后抉择目录下的AirtestIDE.exe后启动软件。下载网址:http://Airtest.netease.com/in... 启动Airtest AirtestIDE工具界面 1.2 脚本编辑窗编写脚本,能够应用辅助窗的预设命令。 1.3 设施连贯窗显示连贯的设施,能够间接在窗口操作手机。 1.4 连贯手机手机进入开发者模式,关上USB调试模式。能够在设施窗查看设施型号,手机连贯上了电脑设备状态会显示为connect。点击设备型号能够实时显示手机屏幕的内容。 1.5 Airtest辅助框命令解释touch点击指定地位wait期待指定的图片呈现后进行下一步操作swipe滑动text文字输出keyevent按键输出,包含(HOME/BACK/MENU等)snapshot截屏sleep期待指定工夫1.6 Poco辅助框默认为stop,可抉择不同的平台,应用Poco时,须要在电脑上装置Poco,并把Poco-sdk集成到游戏里。如果我的项目里没有集成Poco-sdk则无奈应用Poco的ui渲染树性能。 如图: 对于不同品牌的手机,连贯Airtest时,须要的权限和设置都会不同。以小米手机为例:须要在开发者模式下,进入开发者选项里,关上usb调试,而usb装置(影响用户通过PC端向手机端装置利用)和USB调试(平安模式)(影响开发者执行自动化脚本)则须要登录小米账号。具体的设施非凡问题能够看官网文档:https://Airtest.doc.io.neteas... 连贯模拟器则在模拟器上关上USB调试,而后应用近程设施连贯,输出'adb connect 127.0.0.1:',加上对应模拟器应用的端口号即可连贯。 2. Airtest工具的应用2.1 应用Airtest框架来测试点击左上角的文件,新建脚本,能够抉择air脚本或者py脚本。在脚本编辑窗输出脚本,能够应用Airtest辅助窗的控件。测试完结后应用“ctrl+L”能够查看报告。 2.2 应用selenium框架测试web利用举荐应用chrome浏览器,须要下载chromedriver在对应的装置门路下,与exe文件同一文件层级。 脚本设计: from selenium import webdriver #导入webdriver库import time #导入库driver = webdriver.Chrome() #重命名driver.get("网址") #关上对应网址 元素定位: 命令解释find_element_by_id()依据id进行查找find_element_by_name()依据名字查找find_element_by_class_name()依据类名查找find_element_by_link_text()依据连贯文本查找find_element_by_tag_name()依据标签名查找find_element_by_xpath()依据门路查找find_element_by_css_selector()依据CSS选择器查找键盘操作: 命令解释send_keys(Keys.BACK_SPACE)删除键send_keys(Keys.SPACE)空格键send_keys(Keys.TAB)制表键send_keys(Keys.ESCAPE)回退键send_keys(Keys.ENTER)回车键send_keys(Keys.CONTROL,'a')全选send_keys(Keys,'c')复制send_keys(Keys,'x')剪切send_keys(Keys,'v')粘贴2.3 应用Poco来测试挪动app利用手机关上开发者模式和USB调试,装置对应Poco程序。模拟器应用adb连贯。连贯后在设施窗能够查看。在Poco窗抉择android,脚本编辑窗会有加载Poco库的提醒,选yes加载库。 编辑脚本

May 27, 2021 · 1 min · jiezi

关于测试:黑盒测试之等价类划分法

前言咱们晓得黑盒测试外面有很多的测试方法,有等价划分类,边界值剖析,谬误揣测法,随机数,因果图,断定表,正交试验,场景法等等,明天来聊聊等价类划分 一、什么是等价类划分法太业余的词汇可能不容易了解,那我就用艰深的语言来解释吧。 等价类能够分为无效等价类和有效等价类,就是对程序来说是非法的输出。艰深的来解释呢,就是你去了一家面包店,无效等价类呢就是让你在这家店买面包,有效等价类呢就是让你在面包店买一只鸡回来。显然,面包在面包店是能够买的到的,就是无效的申请,鸡是个别在面包店买不到的(正经的面包店谁卖鸡啊) 含意: 1.无效等价类就是对程序的规格阐明有意义的,正当的输出数据所形成的汇合,利用无效等价类可 验证程序是否实现了规格阐明中的性能和性能。 2.有效等价类是那些对程序的规格阐明不合理或者无意义的数据所形成的,为了验证程序做其不应作的事件。 听懂了吗?那就再举例一个简略的程序吧,比方我设计一个程序,要求输出一个整数,而后输入这个整数的两倍的数值。 先剖析题目,题目要求是输出的是整数,很显然整数必定是一个无效的输出,即无效等价类,输出一个整数输入正确的数值 那如果,我输出的是小数、符号、字母呢? 显然,这些都会返回InputMismatchException,输出不匹配异样,即输出的数据类型和设置承受的数据类型不统一。 所以,我能够很简略的划分出等价类,无效等价类为整数,有效等价类为非整数。 好了,简略理解了什么是等价类了,那咱们就持续深刻学习了 二、等价类划分准则1.在输出条件规定了取值范畴或值的个数的状况下,则能够确立一个无效等价类和两个有效等价类。 比如说身份证就固定了18位数字,手机号码11位等等。(留神这里只是关注长度,选择性疏忽其余问题)2.在输出条件规定了输出值的汇合或者规定了“必须如何”的条件的状况下,可确立一个无效等价类和一个有效等价类。 比方要求输出一个两位数,那就只有[1,2,3,4...,99]这个汇合里取无效等价类3.在输出条件是一个布尔量的状况下,可确定一个无效等价类和一个有效等价类。 Boolean值只有两个后果,true和false4.在规定了输出数据的一组值(假设n个),并且程序要对每一个输出值别离解决的状况下,可确立n个无效等价类和一个有效等价类。 比方要求输出的是一个数组,数组外面必须是0或1,所以0和1就是无效等价类5.在规定了输出数据必须恪守的规定的情兄下,可确立一个无效等价类(合乎规定)和若干个有效等价类(从不同角度违反规定)。 比方身份证号码,前6位是地址码,两头8位是出生年月日,前面是三位程序码加一位校检码。6.在确知已划分的等价类中各元素在程序处理中的形式不同的状况下,则应再将该等价类进一步的划分为更小的等价类. 比方2里两位数先划分了[1,2,3,4...,99]这个无效等价类,如果我的程序对这个两位数的解决是:奇数就+1,偶数就/2,。所以还须要对这个汇合进行奇数和偶数的进一步划分。三、设计测试用例步骤1.剖析确定等价类 2.建设等价类表,列出所有划分出的等价类 3.依据列出的等价类表,依据三个步骤设计用例 1) 为每个等价类规定惟一编号 2) 设计新的测试用例,尽可能的去笼罩未被笼罩的无效等价类,反复步骤直到所有无效等价类被笼罩 3) 设计新的测试用例,尽可能的去笼罩未被笼罩的有效等价类,反复步骤直到所有有效等价类被笼罩 四、等价类划分法的优劣长处:思考到单个输出域的各类状况,防止了自觉或者随机选取数据的不完整性和笼罩的不稳定性,应用简略方便使用,同时可无效管制测试设计的数量,可能缩小肯定的工作量。 毛病:遇到组合的状况的话,等价类划分法是不足以解决问题的,同时等价类划分基于等价类中的输出都能产生雷同的成果,在很多状况下用例抉择不当会产生问题(如边界),还须要联合其余的办法来解决问题 五、小结当呈现边界值的时候,仅仅用等价类划分法是无奈精确来判断的时候,就须要联合黑盒测试另外一个办法,边界值分析法。 举个简略的例子:A攻打B,B反弹80%的挫伤,假如A和B的血量都是1000的时候,先进行一个简略的划分,很显著,A的挫伤大于等于1000的时候,就能胜利。然而B也是会反弹挫伤的,所以须要进行边界值的判断,判断A的挫伤范畴达到哪个范畴之间,才不会被反伤打死导致平局。这时候就须要联合边界值分析法来辅助测试,通过计算得出当A挫伤为1250的时候,会因为B的反伤把本人血量升高为0,那就要对这个值进行边界值剖析,判断1250-,1250,1250+的时候,A会不会死亡,这就是须要联合其余办法解决问题的时候。当然还有更深刻的探讨,要是A的挫伤小于1000的时候,B须要多少的挫伤能力将A打死,如果是A也有反伤呢,B是否获得胜利等等 所以做测试的时候,只依附一两种办法是比拟难来笼罩掉所有的状况的,常常会联合其余的

May 26, 2021 · 1 min · jiezi

关于测试:像用户一样测试别掉链子-IDCF

软件场景的“掉链子”“掉链子”是一句俗语,比喻在关键时刻出故障,或者重要的事件本该做好却没做好。“掉链子”的说法来自于自行车:在骑行过程中,链条通过链轮传送,带动车轮滚滚向前。当链条从链轮上脱落,就无奈进行传动,失去了对车轮的管制,脚蹬子就会空转,自行车就会失去向前的能源。假如这种状况产生在关键时刻,要赶时间或者正在过马路,就会让人分外恼火。 回到软件场景,关键时刻掉链子,就好比上线后遇到重大缺点,须要紧急热更或回滚。造成的结果也很相似,那改良的措施会不会也相似呢?咱们一起来看一下。 掉链子的四个结果性能生效:自行车失去能源无奈向前,须要上链子能力持续 → 软件性能生效影响情绪:我不只一次看到一边上链子一边气急败坏的场景 → 升高用户体验耽搁时间:赶时间的状况下,上链子可能造成延误 → 性能延期应用,造成业务损失平安问题:要是正在减速猛蹬的时候忽然掉链子,轻则腿抻一下,劲大了没准能掉下去 → 软件平安:隐衷、匿名、盗号等掉链子的起因路况不好,过于平稳 → 基础设施较差,运维磕磕绊绊负重过大,导致后轮不正或变形 → 一次上线范畴过大,团队不堪重负链条和轮盘不在一条直线 → 团队内耗,人心涣散链子松了 → 需要收缩,开发点数收缩缺油 → 再衰三竭,不足士气可能的修复形式防止平稳路段 → 革新基础设施,晋升运维效率防止适度负重 → 留有肯定的缓冲区,用于需要估点不准或紧急问题修复调整链条和轮盘至同一水平线上 → 建设踊跃、公开通明的团队文化紧链条,或者把链子反过来,外圈换到里圈用 → 管制收缩,协调资源上油 → 团队激励假如我当初遇到一个团队(还真遇到过),领有现实的基础设施、现实的文化、现实的人,是不是就能保障不掉链子呢?可能在肯定水平上会升高掉链子的频率,但的确保障不了不出问题,要么怎么说测试是门玄学呢。 通常状况下,这类团队品质内建做的绝对较好,新开发的性能品质较高,测试能力也较强,可能保障本次上线新开发的性能是齐全失常的。但没想到重大缺点也是剑走偏锋,你越是想不到,越是认为没问题,越是稳固运行好几年的性能,往往越容易在关键时刻掉链子,起因形形色色,有时候匪夷所思到想破头都想不进去,齐全无奈预防,只能采取预先干涉。 回归测试 排除掉那些不可预知的因素,还有两个常见的起因,一是性能被咱们毁坏了,二是性能被其他人毁坏了。这两种状况都是能够通过上线前的回归测试来预知问题的。 回归测试,顾名思义,得先有性能,也有针对性能的测试,而后能力回归。每个团队都有一些积攒下来的回归用例,咱们把容易出问题的、波及产品外围能力的、一旦出问题后影响惨重的性能,全副并入主流程回归用例集。在产品初期,主流程回归用例集的范畴可能不是很大,手工测试大概率能疾速笼罩掉。 随着产品性能的不断完善,上线和经营的教训一直积攒,主流程回归用例集的范畴会不断扩大,直到手工测试无奈疾速笼罩,这时自动化测试就要施展重大作用了。咱们把越来越多的回归用例用自动化形式来实现,并集成到继续集成流水线,设置肯定的触发机制,比方每天早上十点定时触发,或者每次代码提交均触发,视须要而定。这样在肯定的察看期内,一旦有历史性能被毁坏,咱们就会在第一工夫晓得。 有些场景下会被这个用例集叫做“惯例回归用例集”,或者“程序健壮性测试(Sanity Test)”,也有的团队会以端到端自动化测试(E2E)的模式来进行回归。名字并不重要,咱们只须要晓得,这都是回归测试的领域,只不过是实现的伎俩和范畴有所区别而已。 在进入迭代时,已有的主流程回归用例集是回归测试的输出之一,输出之二是本次迭代的回归用例集,包含以下内容:在本次开发的新性能中,哪些能够纳入惯例回归范畴的用例?亦或是本次批改影响到的性能范畴有哪些须要回归?主流程回归和本地迭代的回归一起作为上线回归用例集。 确定了回归范畴后,须要测试团队以肯定的频率,屡次进行回归测试。每次的距离最好留出肯定的工夫来定位和修复问题,并且在修复问题之后,对立进行下一轮的回归测试。通过多轮回归测试后,上线前能发现的缺点就发现的差不多了,将这些缺点进行评估,若符合要求,也一并纳入回归用例集,就像滚雪球一样,把用例集滚大。 而后咱们就迎来了上线:上线部署实现后,也须要以线上容许的形式再次回归一遍。 回归测试不是上线了就完了,上线后,如果有线上重大问题,或者以前的已有性能被毁坏,测试也须要把这些缺点进行评估,并补充至回归用例集。 回归 · 三大准则 凡变必测:一有变动必须测试,并评估变动范畴,进行相应的回归测试。凡测必补:一有手工测试,不论是新性能还是修缺点,必须进行评估,明确是否有必要补充进回归测试用例集中。人机搭配:自动化测试最无效的场景就是回归测试了,倡议能自动化的用例都自动化掉,否则工夫长了回归起来人要解体的。能够说,遵循以上三条准则,根本能保障回归测试的继续更新和继续无效。 总 结本文讲的是回归,为什么叫像用户一样测试呢?起因是,当咱们在思考回归测试的范畴时,须要具备用户视角。 假如我是用户: 我最心愿应用的产品性能是什么?哪些性能给我带来最大的价值,能帮忙我带来收益或节约工夫?哪些性能有问题是我齐全不能容忍的?哪些性能我并不罕用?哪些性能可有可无?思考这些用户视角的问题,有助于咱们确定更精准的回归测试用例集,最大水平的做到关键时刻不掉链子。 起源:圆小豆的美梦工场作者:于晓南 申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 5月每周四晚8点,【冬哥有话说】品质与测试专场。公众号留言“品质”可获取地址 0506 朱少民 《如何最大化软件测试效力》0513 陈琦 《数据驱动测试》0520 陈霁 《没错,去QA是提高质量最无效的办法!》0527 施慧斌 《DevOps实际之继续测试》

May 26, 2021 · 1 min · jiezi

关于测试:测试左移需求相关的质量保障-IDCF

一、测试左移的由来1.1 缺点的修复老本逐渐升高上面是品质畛域司空见惯的一张图,看图谈话,容易得出:大部分缺点都是晚期引入的,同时大部分缺点都是中晚期发现的,而缺点发现得越晚,其修复老本就越高。 因而,为了升高缺点修复老本,咱们冀望在更早的工夫发现缺点。 那么上图是否齐全没问题呢?不是的,这张图来源于1996年的一本书《Applied Software Measurement》,这张图画成的时候,麻利宣言还没诞生呢(麻利宣言诞生于2001年)。在传统背景下,需要是明确且绝对固定的,需要产生的缺点能够忽略不计。同时,在需要阶段产生的问题可能会引起整体计划的返工,因而,需要产生的问题不太会以软件缺陷的模式来体现。 1.2 需要品质召唤测试左移随着软件生态的倒退,软件需要越来越复杂多变,需要的有效性和传递效率也备受挑战。受大环境影响,需要阶段引入的缺点就对软件的研发老本造成了影响。同时,软件的研发过程越来越成为一个须要高效合作的整体,各角色之间的界线也变得绝对含糊。 为了让品质理念更早的染指软件研发过程,也为了升高缺点修复的老本、缩小不必要的返工,需要的品质变得尤为重要。测试左移因而而生,需要剖析人员与测试人员须要协同工作,独特保障需要的品质。 加上需要阶段重画一下下面的图,现实状况下,咱们容易得出以下论断: 缺点的引入从需要阶段就开始继续,到研发阶段达到峰值,而后趋于平缓;缺点从需要阶段就开始陆续被发现,到测试阶段达到峰值,而后趋于平缓;从需要阶段到研发初期,缺点修复的老本极低;开发前期到上线,缺点修复老本一路攀升至高点;缺点发现的数量少于引入的数量,但在上线前后,缺点发现数量大于引入数量。 因而,为了取得更经济的资源投入产出比,咱们认为应该在需要阶段和编码初期更多地发现缺点,从而缩小修复老本和返工,这也正是测试左移的价值所在。 那么,该如何保障需要的品质呢?咱们在不同的期间面临的需要,其状态是有差别的,所以须要深刻理解这些差别,并有针对性地设计品质流动加以验证。 二、需要的三个档次2.1 一个很事实的例子一天,大老板说:“微信小程序不错,咱们外部OA流程得做一个,你们安顿一下,年内公布就行。” 这就是一个来自大老板的一句话需要。 项目经理拿到这个需要,看到“年内公布”,需要治理看板上就能够多一张卡,只有几个字“OA小程序”,排期可能临时安顿在第三季度。 过了俩月,送走了一批艰巨的需要,临时松口气的项目经理扫到这张卡,霎时头皮发麻,这还有一个老板亲生的大坑呢,得尽快填上。喊来产品经理,快出一版计划,再找技术经理大抵估一下工作量。 只有一句话显然是没法出计划的,产品经理和技术经理各自焦头烂额的钻研了两天,又花了半天临时碰出了OA小程序的初版计划。一周后,计划通过评审。这时,依据既定计划,产品经理细化了一些需要:用户治理,组织治理,流程治理,表单配置,权限配置,审批配置,微信登录等。 行将进入研发阶段,需要又会被再次细化。以用户提交请假单的场景为例,需要可被细化如下图。进入研发后,开发以肯定的优先级程序来支付需要进行研发。 2.2 需要的三种粒度在下面的故事中,为了服务产品布局和不同的治理诉求,需要呈现出以下三个粒度: 史诗故事 > 个性故事 > 用户故事 史诗故事 Epic:粗粒度的形容需要,通常须要多个迭代能力实现,次要用于版本布局时记录和跟踪该性能;个性故事 Feature:也叫主题故事,是一系列雷同主题用户故事的汇合,次要用于迭代布局、优先级排序和整体估算;用户故事 Story:迭代开发的最小单元,是细粒度的需要形容,次要用于迭代交付过程中的估算、跟踪和治理。 三、不同粒度的需要保障3.1 史诗故事:计划验证 & 测试设计在产品演进过程中,当面临的需要还是一句话时,测试人员能做的事件并不多。当史诗故事行将进入迭代布局,进行方案设计时,测试人员就能够参加进来了。 计划成型初期,测试人员能够参加计划探讨和技术可行性研究,奉献既有业务流程或潜在业务逻辑,针对有较大品质危险的计划,测试人员有责任提出质疑,并给出倡议。 计划确定后,测试人员就能够着手进行测试设计了,测试设计包含但不限于:针对该性能的品质预期,大抵的测试布局,现有的测试资源评估,次要的品质危险及响应形式等。 3.2 个性故事:需要评审 & 测试计划邻近迭代,需要会以个性的模式体现,此时测试人员能够参加需要评审: 针对性能需要,测试人员先验证需要是否无效,包含需要价值确认,需要波及场景是否齐备,与现有业务逻辑是否有抵触;针对性能需要背地的撑持性需求进行廓清,确认撑持性需求的范畴、验收规范、测试形式等;此外还须要思考用户体验;思考需要的拆分是否正当,是否便于估算和迭代治理。品质流动方面,测试人员能够落实测试计划了,如各种测试流动的安顿,测试成果的评估,测试的重点和难点,测试阶段的输出和输入等,在这个阶段都能够确认了。 3.3 用户故事:需要验收 & 测试执行故事启动时,测试人员须要补充需要验收的用例,以及需要影响范畴内的回归用例等。在这当前测试人员次要关注在需要验收和测试执行上,依照测试设计和打算进行测试,确保最终的实现品质。而在此阶段,测试人员尤其须要关注投入产出比,把无限的精力用在刀刃上。卓有成效的做法是在测试计划阶段就明确好各性能的质量标准和资源投入,并在测试执行阶段时刻回顾。但打算是死的,人是活的,万一在测试过程中,咱们发现打算赶不上变动,就须要随时跟团队沟通并进行灵便调整了。 当然,品质流动并不是以性能测完上线为完结,而是须要实现一个残缺的闭环。测试阶段当前的品质流动不在本文探讨的范畴内,在此就不做过多开展了。 四、小结测试左移之所以重要,是因为咱们要在缺点引入的最后阶段就发现它,把缺点扼杀在摇篮里,而不是等着它像雪球一样越滚越大。而这里的误区在于,测试左移要求的是测试流动尽早染指,而不仅仅是把测试人员进行左移。因而,团队里的每个成员,都须要有测试左移的思维,都能够从一开始就绷紧品质这根弦,确保每个人的工件品质。 而在需要的质量保证流动中,测试人员也须要时不时换帽子,有时可能是终端用户,有时可能是产品经理,也有时可能是产品负责人。不论戴什么帽子,保障各个工件的品质,以及各工件的顺畅集成,都是测试人员能够关注的事。品质相干,咱们义不容辞。 起源:圆小豆的美梦工场作者:于晓南 申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 5月每周四晚8点,【冬哥有话说】品质与测试专场。公众号留言“品质”可获取地址 0506 朱少民 《如何最大化软件测试效力》0513 陈琦 《数据驱动测试》0520 陈霁 《没错,去QA是提高质量最无效的办法!》0527 施慧斌 《DevOps实际之继续测试》

May 25, 2021 · 1 min · jiezi

关于测试:6种测试组织模式你看好哪一种-IDCF

最近风行“三问”。对于测试团队来说,也能够有三个问题,测试团队是如何建设和倒退起来的?当前又会向何种模式倒退?最终会沦亡么? 本文尝试梳理在企业倒退过程中可能存在的各种测试资源的组织模式,并认为“无测试”是测试组织对内职责倒退的高级状态,而测试组织对外提供服务,成为“前台部门”的这种“第三方模式”是另一种高级状态。 一、集中模式这是一种线性倒退的模式。随着公司从初创到发展壮大,测试人员也从无到有,再壮大成立测试小组,并一路倒退成为测试部门,而后在外部持续分化出不同的职能分工。 通常存在一个对立的测试部门或者测试中心,负责整个公司层面或者业务BU层面的测试和品质相干的工作。在一些大型的测试组织中,进而会进一步派生出功能测试、自动化测试、性能测试、平安测试等专项的测试团队,以及流程与品质管制等角色。 能够说在进入互联网时代之前,这种集中模式是一种支流的测试资源组织模式。这种模式能够高效地利用测试资源,对测试人员的专业性倒退也提供了深度。在一些处于强监管的金融行业,强调职责之间的隔离,也通常采纳这种模式。 二、扩散制这在一线的互联网公司以及领有多条产品线的传统IT公司十分常见。随着公司成为一个集团公司,跨入泛滥的行业和畛域,集中式的研发团队甚至也不再是一个选项。IT资源被扩散到各个BU,而相应的,测试团队也随同着IT团队进入业务BU,相互独立决策和独立治理,彼此之间互不附属,不再有一个对立的团体总部,来对立领导这些测试组织。 可能有些公司还会设置参谋角色或者建设涣散的俱乐部等实现跨BU或者部门之间的测试流程、质量标准等通用性测试基础设施的协同。 三、混合模式从IT治理的角度,集中和扩散两种模式都存在肯定的局限性。过于集中导致IT作为一种治理伎俩,没能施展应有的作用(silo,仓桶),而过于扩散的结果往往是对IT的管制力度不够,产生各种老本和平安的问题。 因而也有很多企业抉择了集中与分散相联合的测试组织构造,即存在一个集中的测试团队,来负责产品或者产品线的整体交付品质,包含测试基础设施的建设以及各类型专项测试甚至用户验收测试的施行。而扩散的测试资源往往是存在于各个开发团队外部,更为被动地融入团队,提供更为及时无效的品质沟通和反馈。仿佛走上了一条资源共享、统一规划、紧密结合的路线。另外一种典型的是很多采取我的项目制的公司,集中式测试组织成为一个测试资源池,为我的项目团队一直地造就和输入测试资源,提供培训和领导。 四、第三方模式在某些大型团体,会将其局部测试职能以外包或者内包的模式转移到第三方,从而可能利用第三方的资源,更好地解决企业外部面临的测试与品质的需要。 采纳外包模式的要害是企业和第三方须要签订相干的服务水平协定(SLA),一些惯例而又须要肯定专业技能和基础设施的我的项目,如平安测试、性能、App测试等,能够由业余第三方公司提供反对服务。 而一些集团公司为了升高每个分支机构的老本、集中劣势人力资源,会成立卓越测试中心(TCOE),独特为各分支机构提供服务,其定位相当于是外部乙方,各分支机构依照服务工作量结算或者虚构结算。而这样的测试中心如果再往前走一步,就是独自公司化运作,即能够为企业外部提供全面的测试和品质服务,又为内部客户提供服务。进而从一个公司的技术后盾部门走向前台,成为一个“业务”部门。 五、“去测试”模式麻利宣言给IT业界带来了新的思维,一时风头无二,对测试团队也带来了十分大的冲击。《Agile Testing 麻利测试》和《How Google Test》相继问世后,一种“新”的测试组织构造被很多公司采纳,既所谓的“去测试”风潮,后者在书中声称,“测试经理是一个没有前途的职业”。很多,施行“麻利”的公司,拆散了对立的测试团队,将测试人员并入开发团队,与开发人员一样汇报给雷同的管理者,譬如开发组长或者项目经理。 这种模式一度十分风行,不少公司解雇了测试总监/经理,或者让其转型带来麻利团队,成为一线领导者。《How Google Test》甚至在书中声称,“测试经理是一个没有前途的职业”。施行麻利最终演变成了“去测试治理岗位”,对于一线测试员工来说,只是换了一个团队和汇报对象,其工作内容并没有产生实质性扭转。 这种模式的劣势,是开发和测试人员在同一个团队工作,沟通单干会顺畅很多。少了跨团队/部门的测试交接,对于产品交付来说也会更加顺畅。当然,通过笔者的察看,这种测试进入团队的模式是一种很容易被突破的非平衡态。那些在这种非稳态下胜利转型的团队,会进入下一个阶段。 六、“无测试”模式依据《How Google Test》的形容,进入这个阶段的团队,基本上是这样的一种模式。 团队负责微服务整个生命周期。团队领有一大笔Old Money,既一套笼罩较为全面的自动化测试用例。新增个性/代码失去了较为充沛的测试,当然这些测试都是团队中的开发人员做的,也就是通过代码实现的。 综合起来就是说,团队成员中不再有全职的测试人员,然而人人都在做测试。品质意识成为了大家的一种职业习惯,也体现在一个个活的测试用例中。 起源:软件测试那些事申明:文章取得作者受权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术伙伴,如原作者有其余思考请分割小编删除,致谢。 5月每周四晚8点,【冬哥有话说】品质与测试专场。公众号留言“品质”可获取地址 0506 朱少民 《如何最大化软件测试效力》0513 陈琦 《数据驱动测试》0520 陈霁 《没错,去QA是提高质量最无效的办法!》0527 施慧斌 《DevOps实际之继续测试》

May 20, 2021 · 1 min · jiezi

关于测试:JMeter压力测试步骤

1.创立线程组点击选中测试计划,右键点击创立线程组点击线程组,这里能够设置名称,增加正文,设置线程数(每次有多少线程同时开启)、线程响应工夫(多少秒实现线程)、循环次数(每个线程数须要开启几次)等 2.创立取样器(以HTTP为例)点击选中线程组,右键增加取样器输出协定点击刚设置的取样器,这里能够设置名称,设置http/https(不输出默认为http),服务器IP,端口号(不输出默认80端口),抉择HTTP申请类型,相干门路(若无则不填),以下以百度为例 3.最初须要增加监听器获取监控后果同样抉择线程组,右键增加监听器罕用的有汇总报告,观察后果树,聚合报告 3.1汇总报告这里能够看到每个申请以及总体的各项指标,咱们要关注的是异样百分比和吞吐量,异样百分比越大,性能就越差,吞吐量越大效率越高 3.2观察后果树这里能够看到响应数据和申请内容,以及取样器后果等取样器后果如下图,申请栏有申请头和申请数据,响应数据栏有响应头和响应数据。响应数据个别为HTML源码,申请头次要记录的是工夫,返回状态等等数据,点击Text左边的三角形能够切换察看的数据格式,如JSON等 3.3聚合报告这里能看的数据蕴含了汇总报告的内容,并且还能看到百分比响应工夫等数据,绝对于汇总报告,百分比响应是咱们更须要关注的中央,如果不须要理解太深,就用汇总报告,须要理解更多的就须要用到聚合报告

May 19, 2021 · 1 min · jiezi

关于测试:jmeter命令行执行测试并对测试报表进行初步分析

本文首发于:行者AIjmeter能够通过命令行生成比较完善的可视化测试数据记录报告,为了可能更准确的得出性能测试瓶颈数据,须要咱们对测试数据记录报告进行剖析。 1. 性能测试计划的设计性能测试须要依据不同测试目标设计不同的测试计划,因为不是本文的主题这里不过多的形容。 假如咱们的测试目标为:找出零碎API最大吞吐量,咱们采纳依据每秒减少线程数量的形式来摸索最大吞吐量。 (1) 依据我的项目业务需要编jmeter测试脚本。 (2) 如下进行线程组设置。 1-4场景设置为300个线程,启动工夫为600s,相当于每个场景每秒启动0.5个线程 。 第5个场景设置为600个线程,启动工夫为600s,相当于每秒启动1个线程。 综上所有场景,相当于每秒启动3个线程。 (3) 将脚本保留并命名为test001.jmx,放在D:\jmeter_script下。 (4) 为了测试后果更精确,可屡次测试求平均值,咱们抉择在深夜屡次主动运行。 2. 执行性能测试2.1 执行性能测试的命令jmeter -n -t D:\test0420.jmx -l D:\jmeter_script\report.csv -e -o D:\jmeter_script\report (1)-n 设置命令行模式。 (2)-t 执行运行脚本门路。 (3)-l 指定后果文件门路。 (4)-e 设置测试实现后生成报表。 (5)-o 指定生成的报表文件夹门路,文件夹必须为空或者不存在。 2.2 如何让其主动执行测试为了缩小外部环境的烦扰,抉择在深夜屡次压测取平均值作为后果,应用windows的定时工作性能定时启动bat脚本调用jmeter命令。 (1) 写一个bat脚本 不仅仅是要运行命令,还须要保留测试报告,保留为run.bat放在D盘下。 脚本如下参考: @echo offif %time:~0,2% GTR 9 (SET curtime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%) else (SET curtime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~1,1%-%time:~3,2%)D:cd D:\jmeter_scriptmkdir report%curtime%cd D:\soft\apache-jmeter-5.2.1\binjmeter -n -t D:\jmeter_script\test001.jmx -l D:\jmeter_script\report%curtime%\report.csv -e -o D:\jmeter_script\report%curtime%\report > D:\jmeter_script\report%curtime%\OutputLog%curtime%.txt(2) 在windows中能够设置定时工作 ...

May 11, 2021 · 1 min · jiezi

关于测试:web测试之功能测试

功能测试就是对产品的各性能进行验证,依据性能测试用例,逐项测试,查看产品是否达到用户要求的性能。 罕用的测试方法如下: 1、页面链接查看:每一个链接是否都有对应的页面,并且页面之间切换正确。能够应用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。(LinkBotPro不反对中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需装置,反对asp、do、jsp等结尾的网页,xenu测试链接包含外部链接和内部链接,在应用的时候应该留神,同时可能生成html格局的测试报告。如果零碎用QTP进行自动化测试,也能够应用QTP的页面检查点查看链接) 2、相关性查看:(1)性能相关性:删除/减少一项会不会对其余项产生影响,如果产生影响,这些影响是否都正确。常见的状况是,减少某个数据记录当前,如果该数据记录某个字段内容较长,可能会在查问的时候让数据列表变形。(2)数据相关性:下来列表默认值查看,下来列表值查看,如果某个列表的数据项依赖于其余模块中的数据,同样须要查看,比方,某个数据如果被禁用了,可能在援用该数据项的列表中不可见。 3、查看按钮的性能是否正确:如新建、编辑、删除、敞开、返回、保留、导入,上一页,下一页,页面跳转,重置等性能是否正确。常见的谬误会呈现在重置按钮上,体现为性能生效。 4、字符串长度查看: 输出超出需要所阐明的字符串长度的内容, 看零碎是否查看字符串长度,会不会出错。还要查看需要规定的字符串长度是否是正确的,有时候会呈现,需要规定的字符串长度太短而无奈输出业务数据。 5、字符类型查看: 在应该输出指定类型的内容的中央输出其余类型的内容(如在应该输出整型的中央输出其余字符类型),看零碎是否查看字符类型,会否报错. 6、标点符号查看: 输出内容包含各种标点符号,特地是空格,各种引号,回车键.看零碎解决是否正确。常见的谬误是系统对空格的解决,可能增加的时候,将空格当作一个字符,而在查问的时候空格被屏蔽,导致无奈查问到增加的内容。 7、特殊字符查看:输出特殊符号,如@、#、$、%、!等,看零碎解决是否正确。常见的谬误是呈现在% ‘ \ 这几个特殊字符。 8、中文字符解决: 在能够输出中文的零碎输出中文,看会否呈现乱码或出错. 9、在查看信息和更新信息时,查看所填写的信息是不是全副更新,更新信息和增加信息是否统一。要留神查看的时候每个字段都应该查看,有时候,会呈现局部字段更新了而个别字段没有更新的状况。 10、信息反复: 在一些须要命名,且名字应该惟一的信息输出反复的名字或ID,看零碎有没有解决,会否报错,重名包含是否辨别大小写,以及在输出内容的前后输出空格,零碎是否作出正确处理. 11、查看删除性能:在一些能够一次删除多个信息的中央,不抉择任何信息,按“delete”,看零碎如何解决,会否出错;而后抉择一个和多个信息,进行删除,看是否正确处理。如果有多页,翻页选,看零碎是否都正确删除,并且要留神,删除的时候是否有提醒,让用户可能更正谬误,不误删除。 12、查看增加和批改是否统一: 查看增加和批改信息的要求是否统一,例如增加要求必填的项,批改也应该必填;增加规定为整型的项,批改也必须为整型. 13、查看批改重名:批改时把不能重名的项改为已存在的内容,看会否解决,报错.同时,也要留神,会不会报和本人重名的错. 14、反复提交表单:一条曾经胜利提交的纪录,back后再提交,看看零碎是否做了解决。对于Web测试零碎来说,能够通过浏览器返回键或者零碎提供的返回性能。 15、查看屡次应用back键的状况: 在有back的中央,back,回到原来页面,再back,反复屡次,看会否出错.对于须要验证的零碎,退出账号之后应用back键。 16、search查看: 在有search性能的中央输出零碎存在和不存在的内容,看search后果是否正确.如果能够输出多个search条件,能够同时增加正当和不合理的条件,看零碎解决是否正确,搜寻的时候同样要留神特殊字符,某些零碎会在输出特殊字符的时候,将零碎中所有的信息都搜寻到。 17、输出信息地位: 留神在光标停留的中央输出信息时,光标和所输出的信息会否跳到别的中央. 18、上传下载文件查看:上传下载文件的性能是否实现,上传文件是否能关上。对上传文件的格局有何规定,零碎是否有解释信息,并查看零碎是否可能做到。下载文件是否关上或者保留,下载的文件是否有格局要求,如须要非凡工具才能够关上等。上传文件测试同时应该测试,如果将不能上传的文件后缀名批改为能够上传文件的后缀名,看是否可能上传胜利,并且,上传文件后,从新批改,看上传的文件是否存在。 19、必填项查看:应该填写的项没有填写时零碎是否都做了解决,对必填项是否有提示信息,如在必填项前加*;对必填项提醒返回后,焦点是否会主动定位到必填项。 20、快捷键查看:是否反对罕用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不容许输出信息的字段,如选人,选日期对快捷方式是否也做了限度。 21、回车键查看:在输出完结后间接按回车键,看零碎解决如何,会否报错. 22、刷新键查看:在Web零碎中,应用浏览器的刷新键,看零碎解决如何,会否报错。 23、tab键查看,是否能够失常切换输入框,定位焦点 24、明码copy进去是否加密. 25、下拉框抉择后的回车,是否能够间接选中所选项 26、回退键查看:在Web零碎中,应用浏览器的回退键,看零碎解决如何,会否报错。对于须要用户验证的零碎,在退出登录后,应用回退键,看零碎解决如何;屡次应用回退键,屡次应用后退键,看零碎如何解决。 27、间接URL链接查看:在Web零碎中,间接输出各性能页面的URL地址,看零碎如何解决,对于须要用户验证的零碎更为重要。如果零碎安全性设计的不好,间接输出各性能页面的URL地址,很有可能会失常关上页面。 28、空格查看:在输出信息项中,输出一个或连串空格,查看零碎如何解决。如对于要求输出整型、符点型变量的项中,输出空格,既不是空值,又不是规范输出。 29、输入法半角全角查看:在输出信息项中,输出半角或全角的信息,查看零碎如何解决。如对于要求输出符点型数据的项中,输出全角的小数点(“。”或“.”,如4.5);输出全角的空格等。 30、明码查看:一些零碎的加密办法采纳对字符Ascii码移位的形式,解决明码加密绝对较为简单,且安全性较高,对于局域网零碎来说,此种形式齐全能够起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无奈解析,尝试应用“uvwxyz”等一些码值较大的字符作为明码,同时,明码尽可能的长,如17位明码等,造成加密后的明码呈现无奈解析的字符。 31、用户查看:任何一个零碎,都有各类不同的用户,同样具备一个或多个管理员用户,查看各个管理员之间是否能够互相治理,编辑、删除管理员用户。同时,对于个别用户,尝试删除,并重建同名的用户,查看该用户其它信息是否重现。同样,提供登记性能的零碎,此用户再次注册时,是否作为一个新的用户。 32、零碎数据查看:这是功能测试最重要的,如果零碎数据计算不正确,那么功能测试必定是通不过的。数据查看依据不同的零碎,办法不同。对于业务管理平台,数据随业务过程、状态的变动放弃正确,不能因为某个过程呈现垃圾数据,也不能因为某个过程而失落数据。 33、零碎可恢复性查看:以各种形式把零碎搞瘫,测试零碎是否可失常迅速复原。 31、确认提醒查看:零碎中的更新、删除操作,是否提醒用户确认更新或删除,操作是否能够回退(即是否能够抉择勾销操作),提示信息是否精确。事先或预先提醒,对于Update或Delete操作,要求进行事先提醒。 32、刷新查看:web零碎中的WebForm控件实时刷新性能,在零碎利用中有利有弊,给零碎的性能带来较大的影响。测试过程中检测刷新性能对系统或利用造成的影响(白屏),查看控件是否回归默认初始值,查看是否对系统的性能产生较大影响(如每次刷新都连贯数据库查问等)。 33、工夫日期查看:工夫、日期验证是每个零碎都必须的,如2006-2-29、2006-6-31等谬误日期,同时,对于治理、财务类零碎,每年的1月与前一年的12月(同理,每年的第1季度与前一年的第4季度)。另外,对于日期、工夫格局的验证,如2006年2月28日、2006-2-28、20060228等。日期查看还要查看日期范畴是否符合实际的业务,对于不合乎工夫业务的日期,零碎是否会有提醒或者有限度 34、多浏览器验证:越来越多的各类浏览器的呈现,用户拜访Web程序不再单单依赖于Microsoft Internet Explorer,而是有了更多的抉择:Maxthon、Firefox、Tencent Traveler等,思考应用多种浏览器拜访零碎,验证成果。 35.编写测试用例要学会质疑需要,不要齐全依照需要来写测试用例,要从客户和产品的角度来了解需要,看到需要之外的性能和体验,这样也能缩小不必要的工夫收入。 ...... 当然,还有很多测试相干内容我没有提及到,也有许多新的测试技术和办法去推敲,再接再厉。

May 10, 2021 · 1 min · jiezi

关于测试:漫谈SCA软件成分分析测试技术原理工具与准确性

摘要:本文介绍了SCA技术的基本原理、利用场景,业界TOP SCA商用工具的剖析阐明以及技术发展趋势;让读者对SCA技术有一个根本初步的理解,能更好的精确的利用SCA工具来发现应用软件中一些平安问题,从而帮忙晋升软件平安品质。本文分享自华为云社区《漫谈SCA测试技术(一)》,原文作者:平安技术猿 。 1、什么是SCASCA(Software Composition Analysis)软件成分剖析,艰深的了解就是通过剖析软件蕴含的一些信息和特色来实现对该软件的辨认、治理、追踪的技术。咱们晓得在当今软件开发中,引入开源软件(注1)到你的我的项目中,防止反复造轮子是大家都再相熟不过的了,比方开源库中开源软件按每年21%速度在增长(起源Forrester报告),开源平安威逼成为企业组织无奈回避的话题,而利用SCA技术对应用程序进行平安检测,实现平安治理是最卓有成效的办法之一。 2、基本原理SCA实践上来说是一种通用的分析方法,能够对任何开发语言对象进行剖析,Java、C/C++、Golang、Python、JavaScript等等,它对关注的对象是从文件层面的文件内容,以及文件与文件之间的关联关系以及彼此组合成指标的过程细节。从SCA 剖析的目标程序模式上分,既能够是源代码也能够是编译进去的各种类型的二进制文件,剖析的数据对象对程序架构,编译形式都是不敏感的,比方:类名称、办法/函数名称、常量字符串等等,不论指标程序运行在x86平台还是ARM平台,不论是windows程序还是Linux程序,都是一样的,简而言之SCA 是一种跨开发语言的应用程序剖析技术。 SCA剖析过程:首先对指标源代码或二进制文件进行解压,并从文件中提取特色,再对特色进行辨认和剖析,取得各个局部的关系,从而取得应用程序的画像—–组件名称+版本号,进而关联出存在的已知破绽清单。 因为SCA剖析过程中不须要把指标程序运行起来,因而具备剖析过程对外部依赖少,剖析全面,快捷、效率高的长处; 3、业界TOP SCA工具剖析依据Forrester最新SCA报告,Forrester通过10个维度(注3)对不同工具进行打分,最初依据综合得分评比出如下业界TOP 10 SCA工具魔力象限图: 3.1工具概览剖析TOP 10 SCA工具中有5款反对软件包(注2)开源软件SCA查看能力(synopsys/Sonatype/Veracode/Jfrog/GitLab),其余工具只反对源代码SCA查看能力。5款反对软件包SCA查看工具中,对C/C++、Java、.Net语言反对的比拟好,但对Golang、python、JavaScript语言反对能力偏弱,比方:synopsys反对的组件对象中后面3种语言占大头90%+,相应的检测率也高,而Golang语言的组件检出率则低很多。SCA已从次要用作对开源软件的检测向应用程序的典型编码问题检测趋势扩大,比方Veracode工具,它能提供了对诸如缓冲器溢出、命令行注入、死锁、反复开释、整形数溢出、UAF、格式化字符串破绽,SQL注入等典型编码问题的检测能力。4、影响SCA剖析准确性的因素剖析从SCA原理能够晓得影响剖析准确性的因素分两个方面:其一是SCA工具反对组件的数量和检测算法,其二是应用程序援用开源软件的形式。因为SCA工具是依据样本组件特色来匹配被测程序中的特色来判断应用程序是否援用该组件的,因而反对组件的数量越多,那么检测率也就越高,反对的组件数量越少,越会导致检测脱漏;另外检测算法和特色设计是否正当也间接影响到剖析的准确性和剖析效率,不同SCA工具厂商有不同的解决方案,就好比在手机上辨认指纹/人脸一样,不同厂商辨认的灵敏度和准确度都不一样。应用程序在援用开源软件时,不同的应用程序即便援用同一个组件也存在援用不同的性能,援用性能的多少也各不相同,这样带来的后果就是在应用程序中蕴含该组件的特色数量也是大小不同的,援用性能多蕴含的特色个别也多,援用的性能少蕴含的特色也少。而应用程序蕴含组件特色的多少间接影响到SCA工具的检测的准确性,组件特色越少SCA工具检测越艰难,因而即便两个不同利用都援用了雷同组件,可能一个利用能够检测到,另外一个利用则无奈检测出该组件。这种场景对SCA工具检测二进制文件尤其显著。因为存在上述SCA剖析准确性,在极限状况下如果无奈检测出组件,那么也就无奈晓得应用程序中是否存在该组件的破绽了。5、总结:不论是源代码文件的SCA检测工具还是二进制文件的SCA检测工具,他们是一种互补的关系,各有各的优缺点,比方二进制文件的SCA检测能发现构建过程中工具链引入的平安问题,而源代码的SCA则不能,SolarWinds事件就很好的阐明了这一点。目前SCA工具检测开源软件的已知破绽是基于组件名称+版本号来关联出已知破绽的,对局部编译场景(只有局部组件代码被编译到二进制文件中)和patch打补丁场景(破绽已修复),误报率高。SCA工具扫描效率和准确性是一对矛盾体,这是工具厂商须要衡量思考的中央,而既能晋升准确率又不会升高扫描效率的技术永远是SCA工具厂商钻研的课题和谋求的指标。注1:Top 10开源软件编程语言:JavaScript(51%)、C++(10%)、Java(7%)、Python(7%)、Ruby(%5)、Go(4%)、C(4%)、PHP(4%)、TypeScript(4%)、C#(3%)、Perl(2%)、Shell(1%)注2:软件包是指产品用来装置、运行的公布包,外面蕴含了产品编译好的能够运行的二进制文件,比方.so/.jar/.exe/.dll/.pyc注3: a.License风险管理;b.破绽辨认;c.主动式破绽治理;d.策略管理;e.SDLC集成;f.容器和无服务器扫描; g.审计报告;h.危险报告;i.修复速度报告;j.厂商自行剖析;点击关注,第一工夫理解华为云陈腐技术~

April 29, 2021 · 1 min · jiezi

关于书单:书单测试人员必读的15本书-IDCF

软件测试倒退了几十年,留下了不少经典的著述。本篇文章是从我集体的角度举荐的15本测试人员必读书籍,次要举荐的根据更多的以开宗立派或者有提出办法或体系为主的书籍。而像一些测试工具操作相干的工具书没有思考在外面,因为集体感觉相比工具书而言,前者的难度和含金量会更大。当然,因为篇幅关系,还有很多好的书籍没有蕴含在外面,心愿在将来有机会能举荐更多的书籍。 测试根底书籍1.《软件测试》第2版 举荐理由:测试人员启蒙的经典书籍,对于测试的概念及测试类型等都有十分经典的论述。倡议高级测试从业者浏览。 2.《软件测试的艺术》第3版 举荐理由:测试人员的又一本经典书籍,对于软件测试的技术特地是用例设计方面有很具体的介绍,同样倡议高级测试从业者浏览。 3.《全程软件测试》第3版 举荐理由:朱少民老师的著述,曾经写到了第3版。尽管还是依照测试的流程为主线,然而却减少了很多近年比拟火的比方AI测试等内容,是一本难得的测试大全。 麻利测试根底书籍4.《谷歌软件测试之道》 举荐理由:这本书颠覆了很多测试人员的传统观念,而且也让测试人员意识到了危机。集体认为这本书是麻利测试的基石,尽管书中没有提到麻利,然而外围做法和理念与麻利是不约而同的。 5.《麻利软件测试》 举荐理由:这本书是麻利测试中最闻名的一本书,没有之一。如果要学习麻利测试,这本书应该是必读作品之一。 麻利测试实际书籍6.《BDD IN ACTION》 举荐理由:这是一本对于介绍BDD的书,外面不仅解释了如何应用BDD的实际,而且给出了不少的例子,实践与理论相结合。惋惜的是这本书还没有看到有中文版。 7.《摸索式软件测试》 举荐理由:此书作者自身就是大牛,因为他还写过之前介绍的另外一本书《谷歌软件测试之道》,所以不得不举荐。 8.《摸索式软件测试实际之路》 举荐理由:这本书很全面的介绍了摸索式测试,包含概念也解释得很分明,集体感觉这本书的程度不亚于下面大牛写的那本,必须举荐。 9.《深刻麻利测试:整个麻利团队的学习之旅》 举荐理由:本书的见解极其粗浅,列举大量来自实在团队的新实例,详细描述如何依据本身环境调整麻利测试策略,如何从教训中学习并继续改善测试流程,如何将麻利测试扩大到多个团队以及克服自动化测试的弊病。通过本书,你将发现麻利测试已涵盖以下新畛域:企业、分布式团队、挪动/嵌入式零碎、受管制环境、数据仓库/BI零碎和DevOps实际。 10.《xUnit测试模式:测试码重构》 举荐理由:《xUnit测试模式:测试码重构》是应用当今最受欢迎的单元测试架构xUnit写自动化测试的权威指南。麻利教练和测试自动化专家Gerard Meszaros形容了68种通过证实的模式,这些模式让编写、了解和保护测试变得更容易。它还介绍了让测试更强壮、更可反复及更经济划算的办法。 麻利开发书籍11.《麻利软件开发》 举荐理由:这本书在豆瓣评分挺高的。作为测试人员也须要理解整个麻利的常识和开发的过程,所以很有必要进行学习。 12.《Scrum精华》 举荐理由:这本书在豆瓣评分也不错。Scrum作为麻利中最重要的实际之一,和测试人员的关联性十分高,因而咱们须要十分理解Scrum。而作者Mike Cohn就是测试金字塔的发明者。 DevOps相干书籍13.《继续交付》 举荐理由:这本书应该说影响了不少从事DevOps工作的人。作者Jez Humble也是十分牛的一个人,写出的书基本上都是畅销书。 14.《DevOps实际指南》 举荐理由:这本书也是十分不错而且有影响力的对于DevOps的书,写的十分好,是我能真正沉下心来认真读的书之一。而且作者也是Jez Humble这个大神。 15.《麻利无敌之DevOps时代》 举荐理由:笑傲江湖数十载,阿捷与赵敏,从神交、相识到神仙姐姐终于说出Yes,I Do!侠义柔情,从此刀剑联盟,琴瑟相和,走向星辰大海。三个作者一台好戏,总龄年方2 的7的智慧,弦歌十载,厚积薄发,以新版IT侠义轻小说的形式描绘出情感与认知融合,动人心魄但又三不五时让你提振精气神的《兵书》,窥尽从精益麻利到DevOps乌卡时代的修炼全景图。 内容起源:晨小菜作者:陈晓鹏 每周四晚8点【冬哥有话说】线上直播,4月“DevOps之庖丁解牛”,拆解DevOps的工具及具体实战。公众号留言“回放”可查看往期直播视频 0401《数据库继续交付流水线分享与演示(Azure DevOps+Flyway)》0408《继续交付中的版本治理与基于Azure DevOps扩大框架的插件开发》工夫待定《微服务,多团队合作中的API测试怎么做 - Pact契约测试》工夫待定《BoatHouse端到端流水线展现》

April 25, 2021 · 1 min · jiezi

关于敏捷开发:读厚感敏捷无敌之DevOps时代背后的54本必读书单推荐-IDCF

错过麻利无敌书,便称英雄也枉然;不见五陵豪杰墓,无花无酒锄作田。 《麻利无敌之DevOps时代》(简称无敌书)是IDCF缘起的一本书,十年前种下的种子,十年后开枝散叶。在无敌书的最初,列出了54本参考书目,这既是作者们写作时的参考和援用出处,也是咱们精益麻利与DevOps常识体系的构建根底。 在《如何浏览一本书》中,外围的一个理念是,如何把一本书读薄,而后再如何把一本书读厚。 很多小伙伴在问IDCF有没有DevOps和麻利的举荐图书,首选当然是集小说、恋情及麻利DevOps于一体的《麻利无敌之DevOps时代》 先把无敌书读薄,提取要害知识点,造成一个体系化的框架(其实就是IDCF人才成长路线图);而后再将其读厚,每一个知识点的背地,其实都是一套残缺的办法和实际,须要通读多本书籍并加以实际能力把握。本文选取了这54本参考书的重点局部,加以补充,造成IDCF举荐读物。心愿各位历经读薄、读厚,再读薄,再读厚的几个过程,最终造成本人的常识体系。 第一本的推荐书第一本,举荐的是1948年出版的《如何浏览一本书》,至今70余年,经久不衰(五星举荐)。 书中提到,浏览不同读物,依据不同的目标,有不同的办法,须要使用失当的不同速度;依据浏览的目标和形式,浏览又分四个档次,根底浏览、检视浏览、剖析浏览和主题浏览。 根底浏览就是咱们平时习惯的浏览形式,从头到尾、逐字逐句;检视浏览是速读一本书,封面、封底、目录、举荐序和前言是理解一本书主题以及是否值得一读的要害;剖析浏览是详读和把握一本书的形式;主题浏览则是针对一个主题系列常识,旁征博引的查阅一系列书籍。继续交付系列 《凤凰我的项目:一个IT运维的传奇故事》 Gene Kim的成名作,小说体的模式,论述TPS、束缚实践,以及三步工作法。本书致敬的是高德拉特的《指标》一书,而《麻利无敌之DevOps时代》则是致敬两者。 这是一本极好的DevOps入门书籍,尤其适宜举荐给你那些对DevOps不太理解的领导看,没有任何贬义,只是因为这本书易读性较强(简直能够媲美无敌书),配合凤凰我的项目沙盘演练,疗效更佳。 外围的知识点,在本书最初的附录,所以读薄的过程会很容易,但真的想要了解束缚实践、三步工作法,还须要读厚的过程。 《DevOps实际指南》 作者群体被国内戏称/尊称DevOps四大天王,Gene Kim是《凤凰我的项目》等书的作者,Jez Humble是《继续交付》等书的作者,Patrick Debois是DevOps一词的创始人,John Willies是Docker的前CTO。 本书因循了《凤凰我的项目》三步工作法的整体构造,并将其具体开展,联合了40多个案例加以解析,深入浅出,又不至于陷入技术细节,很适宜对DevOps有肯定理解,心愿进一步建立整体理念实际的读者。 (偷懒,用了李智桦老师写的目录构造) 须要留神的是,本书关注的重点是代码交付之后始终到上线的一段,即传统CI/CD一段,这在本书的一开始就有明确阐明,所以不要把本书的内容,当做DevOps的全副。IDCF始终秉承的是端到端的DevOps,CI/CD是工程段的一部分,并且也不是残缺的工程局部。 《继续交付:公布牢靠软件的零碎办法》 Jez Humble的成名作,从提出继续交付概念,到公布这本书,奠定了Jez Humble在DevOps第一颜值担当的位置,当然本书内容相对值得认真研读,Jez的方法论体系在本书就曾经成型。这两位也是DevOps四大天王之列,DevOps Handbook的作者之一。 《继续交付2.0》 乔梁老师作为《继续交付》一书的译者,在多年后出版了本人的书籍,继续交付2.0的理念与IDCF端到端的DevOps统一,本书也是乔梁在这个畛域多年的教训汇总,集体倡议将继续交付的两本书联合起来一起看。 其余扩大浏览: 《继续集成》,理解CI最佳读物,咱们始终讲继续交付是继续集成的天然延长,Jez Humble的继续交付,借鉴了很多本书内容,当然本书目前应该只反对按需印刷,看过继续交付两本书,本书仅做倡议。 高德拉特的《指标》,凤凰我的项目的致敬之作,束缚实践的第一部作品,也是MBA必读教材,他的其余几部作品,放弃了一贯的高水准和很强的浏览感,有工夫且不缺银子能够读一下。 丰田精益系列:《扭转世界的机器》、《丰田套路》、《丰田生产方式》,能够整体理解丰田精益生产的脉络和实际。 《金矿》三部曲,与指标、凤凰我的项目一样都是小说体,作者信息没有考查,可作为对丰田精益生产的补充读物。 精益麻利与看板系列 《看板办法:科技企业渐进改革胜利之道》(看板书,选蓝皮的) David Anderson成名作,也是看板办法奠基之作,看板入门的第一本,还是倡议看原汁原味的蓝皮书。 我是4年前读的,过后关注点都在看板Board、WIP等,回来再看,其实强调的是价值流动,值得重看的经典。 《影响地图》 Gojko Adzic,薄薄的一本书,很容易读,如果买不到,能够看冬哥写得文章。 《用户故事地图》 Jeff Patton,姐夫的User Story Mapping,一句话就是既见树木,又见森林。看前半本书即可,或者读一下徐磊老师和李强老师的几篇文章。 《精益产品开发:准则、办法与施行》 何勉老师的大作,深入浅出,零打碎敲,还有大量的案例。 事实上,如果精益看板外面只看一本,我集体会举荐这本。 “The Principles of Product Development Flow”,Donald G. Reinertsen的力作,将流动的理念讲述的酣畅淋漓,David Anderson在小蓝书中也提到,他是在本书作者的激励和领导下,开始实际看板办法的。只有英文版,据说作者回绝中文版翻译,好吧,谁让你是这样的一本相对好书呢,还是强烈建议啃下来。 ...

April 23, 2021 · 1 min · jiezi

关于测试:炮轰测试左移向软件测试领域的歪理邪说宣战-IDCF

为什么会有这么一个话题呢?很长一段时间,在软件测试畛域,始终弥漫着一种乐观的气氛!比方“测试无用论”,“咱们须要全职的QA吗”,“人工智能将取代测试工程师”,“测试工程师并没有方法为企业发明利益”等等。 因为一些人或组织有心或无心地制作一些焦虑,让软件测试的从业者尤其是刚入行的软件测试工程师,对软件测试自身的意义,以及软件测试职业的倒退、技术门路充斥了疑虑! 在此,作为一个从业20年以上的软件测试工程师,一个ISTQB国内软件测试工程师认证的专家级证书获得者,我想谈谈本人的意识和认识,心愿能给软件测试从业者一些我感觉正确的软件测试理念和观点。 一、什么是“测试左移”第一炮咱们先从“测试左移”动手,谈一谈我对“测试左移”的认识。 所谓的“测试左移”是什么? 通过百度搜寻,国内查到“测试左移”最早的形容起始于2016年底到2017年初。换句话说,“测试左移”是一个新概念。 最后在谈到“测试左移”这个概念的时候,更多是指软件研发过程中的测试流动应尽早染指。 (图一 测试左移) 下面这张图形容了测试左移的基本原理,即软件研发生命周期中的缺点大部分是在编码过程中引入的,但这些缺点通常是在编码之后才逐渐地发现进去。如果在编码过程中发现和修复缺点的老本是1X,那公布给用户后,则发现缺点和修复的老本会增长为640X。这就引出了:如果咱们提前做测试工作即“测试左移”,则发现或修复缺点的老本会显著地升高。这也就是“测试左移”的实践根底。 如果你足够仔细,就会发现这张网络流传的图还有个问题,即它默认缺点的注入是从编码开始的,而实在的状况是只有有人开始参加了研发工作(如需要剖析、设计等),就势必会开始注入缺点,在这里咱们就不累述了。 须要留神的是,最早“测试左移”的概念是指测试工作要提前做,而不是特指测试工程师“左移”即全职测试工程师从编码阶段染指,这两者是有区别的!区别咱们放到前面再论述。“测试左移”尽管提出工夫不长,但这是个新概念吗? 软件工程畛域最驰名的模型毫无疑问是瀑布模型: 大家所相熟的软件工程瀑布模型(waterfall model)概念,起源于 Winston Royce 发表于 1970 年的驰名文章 "Managing the Developmentof Large Software Systems" (Proc. Westcon, IEEE CS Press, 1970, pp.328-339)。 (图二:瀑布模型) 在我看来,所谓的“测试左移”正是在补救瀑布模型的有余,即不要让测试工作只成为交付前的最初且惟一的品质保障伎俩,应该往前提,须要贯通于整个软件研发生命周期中。但请留神,瀑布模型是1970年提出的,距今曾经有50多年了,这么大的一个问题,怎么会几年前才给出个答案? 经典的V模型早把这件事件说完了! V模型是由Paul Rook在1980年率先提出的,在1990年呈现在英国国家计算中心的出版物中,它是对瀑布模型的一种改良。 (图三:V模型) 在这里我不想解释V模型,有趣味的同学能够在网络上自行查问。 我想说的是,测试工作从需要开始,贯通于整个软件研发周期是40年前就提出来的,这压根就不是啥新概念,如果你最近才晓得那是你的问题! 那为什么近期换了个说法,又提出了“测试左移” ? 测试左移一词(shift-left testing)最早呈现在Arthur Hicken的博客里,在他的博客中提到了对测试左移的认识。 (图四:最早谈到“测试左移”) 原文地址:https://www.stickyminds.com/a... 但这篇文章的公布工夫是在2018年,比国内开始议论“测试左移”的工夫晚,有可能这个地址并不是首发地址,但并不影响咱们的探讨。 从字面意义上看,“测试左移”更多的是强调开发工程师应该在软件研发生命周期内尽早地验证本人代码的正确性。留神是开发工程师本人测试本人的代码。 在麻利和继续交付的场景下,这个说法一点问题都没有,任何一个工程化的软件研发模型都在强调尽早验证和确认(这就是驰名的V&V模型),最早能够追溯到40年前的V模型。 那为什么又开始强调“测试左移”呢?很简略,始终没做呗!没做什么?比方:单元测试、继续集成、单功能点验证等。留神以上这些测试,最合适的执行人员是开发工程师自己。 为什么始终不依照要求做呢?除了怕麻烦、对交付品质要求低、后续还能够让测试工程师代劳以外,还能有什么起因?这也是在麻利流动中,始终在推动开发人员自测、对本人代码品质负责、进行TDD实际等的外围起因! 综上所述,最开始提出“测试左移”的本意只是再次强调开发工程师应该本人做单元测试,对本人的代码负责,这是个陈词滥调的话题。新名词的呈现,只是为了让开发工程师再次器重起来! 二、炮轰“测试左移”,炮轰的是什么?问题1:测试的测试与开发的测试有什么区别?截止到当初,咱们并没有发现“测试左移”的提法有什么问题,尽管“测试左移”实质上只不过从新创造了个名词,换汤不换药 。 可事实上并没有这么简略。 “测试左移”这个提法朗朗上口,随着工夫的推移,“测试左移”被误解成“测试工程师左移”,即测试工程师应该全副变为测试开发工程师,须要具备优异的开发技能,参加到单元测试、集成测试的环节中,或者说间接取代开发工程师来进行代码逻辑和接口的测试,通过编写代码测试代码。 更有甚者甚至宣扬今后将不再须要不懂代码的测试工程师,不会编码的测试工程师将全副就业,不会有将来,手工测试终将被代码测试代码取代。媒体广告中充斥着测试开发工程师、全栈测试工程师的宣传,这一气氛让手工测试工程师感觉低人一等,逐渐被边缘化,一夜之间好像软件测试工作不谈代码、不谈自动化就是政治不正确,就是被行业摈弃的角色。 在和领测老贺聊测试的QQ群中总能看到这样的舆论,以上的提法在软件测试工程师圈子内继续蔓延,随声附和的后果就是制作焦虑,对本人技能的不信赖,对基于功能测试、基于手工测试工作的质疑!面对开发人员不够硬气,总感觉低人一等,由此进入恶性循环! 为了阐明这个问题,我尝试从以下几个方面加以分析: 1)开发工程师和测试工程师的工作指标存在微小差别开发工程师的工作指标是实现性能,指标绝对明确,断定胜利的规范也明确,即指标性能实现正确。 但测试工程师的工作指标是高效地寻找软件缺陷,须要的是危险思维和概率思维,断定测试胜利的规范也不算明确,公布后的评估才是终极审判。留神这里评估测试工作的两个维度:一个是高效;一个是缺点。 2)同样的事件,从组织的角度思考谁做更划算做每件事件都有老本,规范的思考模型应该是两利相权取其大,两害相权取其轻。针对代码逻辑的单元测试谁做老本最低?收效最高?当然是编写代码的本尊了!企业必须用最有效率的计划去获取指标。 3)单功能点验证不是测试工程师眼中的软件测试如果你仔细察看,就会发现大多数具备开发背景的工程师口中的软件测试基本上都是单功能点验证,并且他们保持认为这就是测试的全副。作为一个有20年软件测试教训的测试工程师,我能够很负责任地通知你,单功能点验证通过只是系统化软件测试的入口条件,绝不是测试的全副,或者在严格意义上来说这基本就不是软件测试。业余的软件测试工作钻研的是性能的组合,在无穷无尽的性能组合中寻找以后场景下的最优解才是你应该追寻的指标。什么是最优解?就是在均衡各方利益的状况下,如何最有效率地满足既定的品质指标! 现实状况下,咱们拿到的软件就应该是一个单功能点验证通过的产品。换句话说,单功能点验证应该是开发工程师的职责!只有这样,业余的测试工程师能力施展最大的效用。如果你的公司只做单功能点验证,或者说绝大多数工作都是单功能点验证,我能够明确地跟你说,你做的不是业余测试工作。你测试的产品质量肯定很差! 综上所述,开发的测试和测试的测试根本就是两个概念,单元测试本就应该由开发工程师实现,单功能点的验证不能是测试的全副,业余的测试工程师要具备危险思维,要做基于危险的测试笼罩。 让功能测试工程师个体转型做单元测试,并称为“测试左移”,“不是傻就是坏”! 问题2:测试工程师不须要理解代码吗?软件测试是一个行业,外面有若干工种,随着职位的不同,对把握代码的技能要求是齐全不一样的。例如:同样是厨师,然而面点、中餐厨师,对刀工的要求就远远弱于西餐厨师。 ...

April 22, 2021 · 1 min · jiezi

关于测试:线上问题已经解决这就完事了

1. 前言作为一名自信的 QA,对于测试通过的我的项目,如果有人反馈有问题,脑海中的第一反馈肯定就是:不可能!肯定是操作有问题。入职以来经手大大小小的我的项目也有 40 多个,始终没出过问题,也让我在年度的总结上自信地写到:所有我的项目按时按质发版,未呈现线上问题。 然而,这种自信让我漫不经心,使得微信小程序 SDK 的第一个线上问题也随之而来了。 对于线上问题,可能很多人都认为把问题解决了就完事了,并不器重对问题的复盘。事实上,复盘的作用可能远大于解决问题自身。 在神策的企业文化中重要的一项就是复盘,每一个问题对于咱们来说都是一笔贵重的财产。通过对于问题的复盘,总结经验教训,可能更好地促成咱们成长。 上面咱们来看下对于这个问题是如何进行复盘的。 2. 回顾指标神策微信小程序 SDK 的指标是实现对于支流小程序开发框架的全埋点性能。然而,在测试过程中发现因为 Taro3.0 框架从新定义了标签点击行为的逻辑,使得一次点击行为会触发 SDK 的两次点击事件 $MPClick,造成了埋点数据反复。 因而,这次公布的 v1.14.3 版本旨在解决 Taro3.0 框架下点击事件反复触发的问题,实现神策微信小程序 SDK 真正意义上的无框架阻碍全埋点采集。 3. 评估后果3.1. 合乎指标解决了 Taro3.0 框架下点击事件反复触发的问题;实现了神策微信小程序 SDK 真正意义上的无框架阻碍全埋点采集。3.2. 低于指标本次公布的版本存在重大的线上问题。4. 剖析起因4.1. 回顾过程2020 年 12 月 17 日 19 : 05 微信小程序 SDK 公布了 v1.14.3 版本,新增了 $MPClick 事件可自定义属性,修复了 Taro3.0 框架下点击事件反复触发的问题;2020 年 12 月 18 日 16 : 27 技术顾问收到客户反馈:微信小程序 SDK 更新到 v1.14.3 版本后,测试过程中发现 SDK 篡改了他们办法的返回值,属于破坏型 proxy;2020 年 12 月 18 日 16 : 30 技术顾问查看代码发现这个问题以前在支付宝小程序呈现过,并和 QA 一起复现了问题;2020 年 12 月 18 日 16 : 35 问题同步给研发和 QA 组长,并调配下一步具体工作:QA 去 GitHub 上删除对应版本代码,研发组长帮助删除 npm 上的版本,研发开始修复问题;2020 年 12 月 18 日 16 : 37 研发组长和 QA 实现版本删除;2020 年 12 月 18 日 16 : 45 研发修复实现,交由 QA 测试;2020 年 12 月 18 日 18 : 05 QA 测试实现,并公布了最新的修复版本 v1.14.4,实现了线上验证;2020 年 12 月 19 日 11 : 31 技术顾问组长找出了所有应用问题版本 v1.14.3 的客户并同步给技术顾问;2020 年 12 月 19 日 15 : 00 技术顾问告诉了所有应用 v1.14.3 的客户,告知他们存在的问题并揭示他们更新版本。整个问题的生命周期从 2020 年 12 月 17 日 19 : 05 发版,到 2020 年 12 月 19 日 15 : 00 所有客户告诉实现,总共历时 44 个小时。能够分为如图 4-1 中的 6 个阶段: ...

March 30, 2021 · 3 min · jiezi

关于测试:SDK音频测试流程

概述在上篇文章中,给小伙伴们讲述了sdk模板在渲染中的流程,咱们简略来回顾一下,次要讲述了数据创立、素材替换、音频、文字等四局部,在上次讲述中也因为工夫于起因没有特地认真的去讲述他们。上次咱们说到最为简单的局部测试要属于咱们音频这一块了,因为除了增加素材,去渲染生成的视频中去对她们的成果去进行比照成果之外另外还要从数据中去比照工夫播放点与播放内容的准确性,这一块相对来说是比较复杂一点的,更多的是急躁,所以明天咱们次要就解说在音频在模板的测试中留神点与数据更换。  音频功能测试素材替换还是和之前一样在测试之前咱们要去筹备筹备咱们的音频数据替换,首先看看是否已替换提成 如图显示,在标记处的中央是已替换的音频数据,能够看出在数据中显示带有后缀的局部是 mp3作为后缀的,如果咱们此时把音频的数据中去替换咱们的视频/图片素材,在渲染进去之后模板是不显示该素材的,如果在渲染完之后还显示阐明此次渲染进去进去的与数据设置不合乎这时须要去排查问题了   设置播放的时段除了咱们要确认素材替换后可能播放进去和音频内容正不正确之外,另外还要确认的就是播放持续时间,在数据中设置播放的工夫点。比方说我想在这段模板的10s的时候显示这段音频,所以把工夫设置为10,设置实现后进行渲染,咱们留神在渲染之后听一下音频的播放的工夫是否正确    继续时长设置继续时长就是咱们在这段模板中如果想让播放工夫更久一点,就设置咱们要播放的继续时长就行 比如咱们想播1s这个音频咱们设置1s就能够了,而后咱们再从渲染的模板去查看是否设置实现   设置音频播放段这一部分就比拟重要了,次要就是用于设置音频的播放时段,比方说咱们想截取这段音频的12-30s这个时间段的,那咱们就把数据设置为12-30就能够了,如下图所示: stsrtTime是开始工夫,也就是这段音频的第12s这段音频,endTime是完结工夫,就是这段音频的第30s的声音,就在这段模板中显示该音频的第12s到30s就会会完结掉。说到这个时候必定会有小伙伴产生疑难了,就是假如我的时长设置超出了这个音频播放的工夫的怎么办,别着急当初就为各位解说到   循环播放后面说到咱们设置的继续时长如果超过了咱们设置的音频播放的工夫的会怎么样呢,这时会继续播放这段音频,当然也会进行,这就须要咱们去设置他的播放状态了 标红的第一处是循环loop,如果咱们把loop设置true,那么自身理论继续时长(inPoint)超过这段视频的自身时间段,那么就会循环播放,直到播到设置的继续的工夫就会进行,如果将loop设置为false那么播放到这段音频的时间段就会进行了,当如如果继续时长设置的比音频的工夫的段,那么音频不论设置工夫多长,也只会播放继续时长的那个工夫上进行,如果咱们把继续设置为0,也就是没有播放工夫限度,咱们能够将一段音频播放残缺,如果想一直播,就把loop设置为true就能够了。最初那个volume是设置音量的,能够调试声音的大小   总结以上就是咱们咱们测试一段的音频的过程,可能对于一些小伙伴们来说较为简单的中央就是这个这个继续时长的中央,因为设置的中央也比拟多。简略为大家总结一下,如果咱们想始终循环音频就那么继续时长设置为0,lopp设置为true,如果只想播一段音频不想循环,loop就设置为false,如果想有工夫限度就从inPoint当中去设置时长就能够了。以上这些能够多多了解,有不分明的中央小伙伴都能够提出来,大家共同进步。

March 29, 2021 · 1 min · jiezi

关于敏捷开发:大话敏捷测试-IDCF

麻利测试 从狭义上来讲,测试是整个麻利团队的流动,而不仅仅是测试同学的流动,因为原则上咱们冀望的麻利团队的产出是通过代码编写+代码集成+代码测试之后的增量,所以开发同学也须要在这个指标指引下,如果测试有积压,开发同学须要针对故事进行测试,以便实现整个麻利团队的交付承诺,而不仅仅是编码,仅仅编码不是用户和公司冀望的,而通过测试的代码才是冀望的;而从广义上来讲,麻利测试,首先从测试同学角度,在麻利开发的环境和上下文下,如何进行测试,思维和办法有何转变。一、什么是麻利测试? 起源:老话题新讲解:到底什么是麻利测试? 在麻利环境里,测试要想生存,须要转变认知,测试不再是传统意义上的测试阶段,而是变成了测试流动,从而才能够进行继续测试。 起源:https://www.luxoft-training.c... 二、麻利测试人员《麻利测试》: 麻利测试人员:业余的测试人员,适应变动,与技术人员和业务人员开展良好合作,并了解利用测试记录需要和驱动开发的思维。麻利测试人员往往具备优良的技术能力,晓得如何与别人单干以实现自动化测试,同时也善于探索性测试。他们心愿理解客户在做什么,一次更好地了解客户的软件需要。麻利测试人员成为麻利团队中的一员,通常麻利团队采纳最风行的Scrum框架,那么团队包含负责产品方向和ROI的产品负责人,负责引领麻利Scrum的团队服务型领导Scrum Master,负责将产品愿景和需要实现的开发团队(蕴含所需各种技能的团队成员,例如开发前端技能,开发服务端技能,测试技能,测试自动化技能等等)。 三、麻利测试思维《麻利测试》:以客户为核心,重视后果,勤于耕作、合作、富裕创造力、乐于学习和适时地发明业务价值。 麻利测试前提是麻利开发,那么须要在认同和执行麻利宣言的价值观和12准则前提下,从测试技能、测试流动角度,应该具备的思维,就是麻利测试思维。 四、麻利测试十大法令起源:《麻利测试》,强调态度和心态比特定技术能力更重要。 1、提供继续反馈反馈需要以便形容分明每个用户故事;和团队独特将每个用户故事转化成可执行的测试;和同队独特执行测试,一直接管有价值的反馈2、为客户发明价值聚焦要害门路,确保最小外围性能首先实现,边边角角简单完满性能逐步迭代上线。麻利测试人员不仅从利益相关者角度思考软件系统,也会理解开发面对的技术限度和施行细节。尽早常常地向客户、产品负责人、开发提出问题,把他们的答案塑造成正确的测试。自动化黄金流程/罕用门路的测试;稍后减少负面测试和边界测试。如果一个利用关注安全性,减少负面测试是必要的;在迭代打算会议上,须要评估测试工夫,确保迭代按计划公布安全可靠的利用3、进行面对面沟通麻利测试人员和开发,产品负责人,业务代表甚至用户,面对面沟通4、勇气有勇气防止期待所有性能代码实现再测试,有勇气推动麻利转型,一个用户故事一个用户故事测试。有勇气践行测试后行,推动测试自动化和继续集成,无论是自动化单元测试,还是自动化其余各种类型测试,每个迭代继续积攒自动化测试脚本。有勇气容许犯错,从而继续改良。有勇气说咱们,而不是说我,说你。5、简单化从简略着手,开发进行简略设计编写简洁代码,测试人员采纳轻量的工具和技术恰到好处地进行测试。对测试分层,采取必要的测试策略。6、继续改良继续改良是整个麻利团队的外围,也是麻利测试人员的外围,继续学习,继续改良,尝试更杰出的工作,只有能可继续的高效的为用户、客户的发明价值、交付价值,并且晋升测试的业余。7、响应变动测试人员和开发人员一起适应和响应变动,在专一和变动之间找到均衡,自动化测试是一个要害。8、自我组织所有的产品施行交付流动都是团队的职责,麻利团队贯彻麻利测试理念,继续关注测试和自动化测试。最高优先级的问题须要整个团队解决。9、关注人麻利团队成员相互尊重并认可集体成就,并有机会进步和倒退各自畛域的技能,也进行跨界扩大技能畛域的广度,所有人是平等的,仅仅是具备不同技能的人而已,整个麻利团队关注一个一个的用户故事的交付,任何人只有具备相应的技能,都能够奉献。只有测试工作失去执行,不肯定要指定某些成员为测试人员。10、享受乐趣所有成员合作,整个团队负责品质和测试,从而激发和珍视麻利测试人员对工作的激情,因为从测试角度,对团队和客户产生了真正的价值,而不是成为最初甩锅对象,呈现问题,被各种人逼问,为啥测试没有把关好,把问题测试进去?五、麻利过程的测试策略因为麻利中落地实际最间接的是迭代,并且在迭代中是围绕一个故事一个故事进行开发和测试:故事设计->故事开发->故事测试->故事验收->故事上线 。 所以就能够防止在迭代内做成小瀑布,测试人员在迭代前期期待大批量故事累积在一起之后再进行测试。这样就很好的践行了测试左移、继续测试、测试后行的麻利理念。 这里的test first,是说测试后行,或者说测试动作/流动后行,而不用等到迭代前期测试。而TDD, Test Driven Development测试驱动开发,是开发人员先写函数/单元的测试代码,导致测试失败,再写性能代码,让测试通过,再重形成简洁代码的过程。 从用户视角,ATDD(验收测试驱动开发,Acceptance Test Driven Development)/BDD(行为驱动开发,Behavior Driven Development),是整个麻利团队一起进行的测试用例辨认和测试用例自动化的办法。 那么什么叫做一个故事一个故事进行开发测试呢?如下图最下边的状况,跨职能个性团队进行迭代,针对每个故事进行DBT,定义产品计划、构建开发、测试。 迭代内的进一步形容如下: 起源:《麻利测试》 起源:《深刻麻利测试》 六、麻利测试和传统测试的比照 起源:到底什么是麻利测试和摸索式测试? 起源:爆肝全面分享什么是麻利测试? 七、麻利测试象限 起源:你被“麻利测试四象限”蒙蔽多少年了? 八、自动化测试金字塔自从Mike Cohn在2003年提出测试自动化金字塔之后,在自动化测试畛域,对测试自动化的打算很有帮忙,咱们须要思考在哪一层进行自动化测试。 起源:《深刻麻利测试》 Alister Scott为了更加强调探索性测试,在自动化测试金字塔上减少了上帝之眼(摸索式测试)。 起源:《深刻麻利测试》 Sharon Robson扩大了测试金字塔,展示了多种品质维度、工具和测试类型。 1、在左边减少了针对测试类型和测试人员抉择进去的测试工具。用户验收测试:通明、易装置、易于从新运行,比方捕获回放零碎:特定的流动或技术、打桩和驱动、命令行单元:特定的技术,集成到继续集成环境2、在右边,减少了测试类型或零碎属性,保障能够思考到解决方案所需测试的各个方面,例如功能性、非功能性。用户交互的易用性、功能性底层的可靠性、性能、易维护性3、同时在最外围,对任何零碎属性进行回归,把回归作为测试的一部分来思考。 起源:《深刻麻利测试》 九、麻利测试宣言 起源:http://www.growingagile.co.za... 起源:麻利测试宣言与准则解读 起源:老话题新讲解:到底什么是麻利测试? 起源:麻利测试宣言与准则解读 起源:老话题新讲解:到底什么是麻利测试? 作者:IDCF社区特约讲师 赵卫

March 18, 2021 · 1 min · jiezi

关于测试:自动化测试系列一自动化测试体系概述

当今强烈的商业竞争中,企业中的服务和产品须要更疾速的版本迭代和高质量的软件交付,同时缩小实现我的项目所需的老本和工夫,不少企业引入了DevOps概念来晋升软件研发交付效率。DevOps是开发和经营的联合,代表着一种文化和实际,强调了软件开发人员(Dev)和信息技术(IT)经营与保护(O&M)业余人员(Ops)的合作和交换,同时促成了软件交付和基础架构变更。它旨在建设一种文化和环境,使软件构建,测试和公布能够更加不便,频繁和牢靠地进行。DevOps中的测试是自动化的,不同于传统的手工测试,自动化测试通过测试工具或者框架,录制编写测试脚本,对软件性能进行测试,可能疾速检测谬误并查找可能对用户体验产生负面影响的问题,从而更快的公布高质量产品。 本文通过介绍自动化测试体系概念,带你理解自动化测试在实现高质量产品方面的重要作用。具体内容如下: 什么是自动化测试为什么要进行自动化测试手工测试和自动化测试之间的区别自动化测试如何与DevOps相适应Choerodon猪齿鱼如何进行自动化测试什么是自动化测试?自动化测试是应用工具、脚本和软件对反复、预约义的操作来执行测试用例的过程。因为自动化测试是通过自动化工具实现的,因而在减少总体测试覆盖率的同时,它在探索性测试中破费的工夫更少,在保护测试脚本时破费的工夫更多。 自动化测试的基本概念是测试金字塔。它演示了如何解决我的项目的自动化测试:形成金字塔根底的哪些局部首先要进行测试,以及在金字塔最初阶段剩下什么? 依照测试金字塔的模式,首先是单元测试层,即开发人员在编写代码时常常执行的代码测试。而后是API测试所属的服务器层。稍后,以后端实现时,将进行UI测试。 图:三层测试自动化金字塔 自动化测试的类型 冒烟测试: 针对每个版本或每次需要变更后,在正式测试前,对产品或零碎的一次简略的验证性测试;单元测试: 对软件中的最小可测试单元在与程序其余局部相隔离的状况下进行检查和验证的工作;集成测试: 是组装软件的零碎测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口无关的各种谬误;功能测试: 是黑盒测试的一方面,它查看理论软件的性能是否合乎用户的需要,比如说逻辑功能测试,界面测试,易用性测试,装置/卸载测试,兼容性测试等;性能测试: 通过自动化的测试工具模仿多种失常、峰值以及异样负载条件来对系统的各项性能指标进行测试回归测试: 指批改了旧代码后,从新测试以确认批改没有引入新的谬误或导致其余代码产生谬误;数据驱动测试: 一种在软件测试过程中应用的办法,用于形容间接测试的输出、可验证输入的条件表,以及测试环境的设置还有管制编码的过程;黑盒测试: 又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点登程的测试次要测到的谬误类型有:不正确或脱漏的性能;接口、界面谬误;性能谬误;数据结构或内部数据拜访谬误;初始化或终止条件谬误等等。为什么要进行自动化测试?自动化测试是软件开发生命周期的重要组成部分,被动修复谬误须要对根底代码进行的每个小更改都进行测试和从新测试。随着工夫的流逝,回归测试的数量将会减少,测试人员将接受很大的压力,而翻新和增长的工夫会越来越少。此外,至多有四个因素导致测试成本上升: 跨设施、零碎和平台进行测试的需要一直减少。 将测试范畴从例如一个Web浏览器扩大到两个或扩大到蕴含挪动设施会影响工作量。测试用例的数量一直减少。 随着每次产品更新,涵盖更多功能所需的测试用例数量都会减少。新性能会影响须要从新测试的现有性能;常见的回归测试问题。 公布管道的成熟。团队不心愿仅进行一次回归测试,而是心愿在公布管道的多个阶段运行测试。这有助于为开发人员提供最快的反馈,但同时也须要大量测试。管理层心愿减少公布数量。为了放弃其最新产品的市场位置,企业心愿确保软件品质并更疾速的迭代产品。面对测试老本的减少,为了扭转测试不可继续的场面,团队能够引入自动化测试以加重测试人员的反复、不可预测、繁琐的工作。 通过自动化测试能够带来以下益处: 进步生产率:能够高精度执行更多测试,产品功能测试的范畴更广;疾速反馈:在软件开发生命周期(SDLC)中更快,更早地执行测试时,反馈也能够更快地提供给开发人员;放慢产品版本迭代:更快的测试执行和间断的反馈循环能够缩短总体SDLC,并进步公布频率;老本效率:优化资源后,能够降低成本;更高的敏捷性和市场响应能力:较短的公布周期使企业能够更好地响应变动并确定资源的优先级;升高人为谬误的危险:自动化测试可满足回归测试需要,将人为谬误的危险降到最低;进步交付品质:高效测试可最大水平地扩充测试范畴,进步产品质量;更高的工作满意度:因为打消了高度反复的工作,测试人员能够体验到更高的工作满意度。手动和自动化测试之间的区别在疾速且间断的产品开发中,手动测试是验证终端用户工作流程的最无效办法。但理论状况是,手工测试并不能齐全做到重测每个性能,继续测试工作中须要编写疾速且频繁运行的自动化测试,找出生产版本中的缺点。 通过以下比照,让咱们来理解测试工作中手工测试与自动化测试之间的区别: 特色手动测试自动化测试准确性和可靠性精度低,手动测试更容易呈现人为谬误应用工具和脚本的准确性很高所需工夫手动测试比自动化慢,手动运行测试耗时多自动化运行测试用例的速度显著快于人力资源投资老本成本低初始老本比手动测试高用法实用于探索性,可用性和长期测试实用于回归测试,性能测试,负载测试体验首次应用手动测试执行测试用例很顺利,但面对频繁变动的需要,捕捉回归缺点能力无限能疾速适应代码频繁更改的测试自动化测试如何与DevOps相适应DevOps中继续测试是软件产品交付管道中执行自动化测试的过程,其目标是获取无关最新构建或预公布的版本中业务危险的疾速间断反馈。而后,能够应用此信息来确定软件产品是否已筹备好在任何给定工夫通过交付管道进行降级。因为测试提前开始并间断执行,因而缩小了发现和修复缺点所需的工夫和精力,能够进步交付高质量软件(满足对可承受危险程度的冀望的软件)的速度和频率,并缩小技术累赘。 继续测试包含对性能需要和非性能需要的验证,均与自动化测试无关。对于功能测试,继续测试通常波及单元测试,API测试,集成测试和零碎测试。非功能性测试波及诸如动态代码剖析,安全性测试,性能测试等实际。 Choerodon猪齿鱼如何进行自动化测试Choerodon猪齿鱼目前反对的自动化测试有:API测试、性能测试、流量回归测试、UI测试,容许测试人员通过要害测试信息来实现测试操作,无需编程。 ChoerodonAPI测试模块通过集成Jmeter,实现了API用例的增加、归集、治理与执行的性能。其中反对基于接口URL或Swagger文档疾速编排接口测试用例,而导入或增加API测试用例的整个过程免代码编写,技术门槛低,适宜麻利团队中各个角色应用。 Choerodon性能测试也是通过集成Jmeter测试工具,反对用户在已有的测试工作根底上调整执行参数(线程数、预热时长、循环数)来对系统的各项性能指标进行测试,从而发现性能瓶颈与性能缺点,以便更好地优化零碎或产品的整体性能。 Choerodon流量回归测试实用于:批量录制产品界面操作并将失去的用例进行集中管理,以便后续进行批量的回归测试。此性能通过应用Goreplay录制产品界面中的操作生成流量文件,而后将其导入Choerodon平台生成用例进行治理与执行。 ChoerodonUI测试实用于:测试人员通过插件录制web利用的界面操作,生成对应的测试用例与步骤;而后便能间接执行对应的测试文件来对界面UI操作进行测试。 论断自动化测试可能进步测试人员的工作效率并且优化测试速度,进步软件产品的准确性和稳定性,代替人工实现各种业务场景,使资源最大化利用,减少软件的信任度。心愿以上对于自动化测试的概念对你有所帮忙。 对于猪齿鱼Choerodon猪齿鱼作为开源多云利用麻利全互连技术平台,是基于开源技术的Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益麻利,继续交付,容器环境,微服务,DevOps等能力来帮忙组织团队来实现软件的生命周期治理,从而转变,更代替地交付更稳固的软件。 更多内容 大家能够通过以下社区路径理解Choerodon猪齿鱼文档,最新动静,产品个性: 【Choerodon官网】 https://choerodon.io/zh/ 【汉得开放平台】 https://open.hand-china.com/ 【汉得凋谢论坛】 https://openforum.hand-china.com/ 也能够退出Choerodon猪齿鱼官网社区用户交换群,交换猪齿鱼应用心得,Docker,微服务,K8S,麻利治理等相干实践实际心得,群同步更新版本更新等信息,大家能够加群探讨交换。 ①-Choerodon猪齿鱼官网交换(已满); ②-Choerodon猪齿鱼官网交换(可加);【微信号发至客服邮箱choerodon@vip.hand-china.com,经营小伙伴拉您入官网交换群】 欢送退出Choerodon猪齿鱼社区,独特为企业数字化服务打造一个凋谢的生态平台。

February 5, 2021 · 1 min · jiezi

关于测试:APP专项测试弱网测试

本文首发于:行者AI在当今挪动互联网流行的时代,网络的状态除了有线连贯,还有2G/3G/4G/5G/WiFi等多种手机网络连接形式。不同的协定、不同的制式、不同的速率,使挪动利用运行的场景更加丰盛。目前挪动端产品的应用用户所处的网络并非齐全晦涩的网络环境,因挪动端产品应用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。毕竟思考到各种场景的客户端展现及容错,能极大晋升产品印象和用户体验。本文就和大家分享一下如何上手弱网测试,弱网测试工具的应用。 1. 什么是弱网测试?弱网测试作为健壮性测试的重要局部,对于挪动端测试来说必不可少。从测试角度来说,须要额定关注的场景就远不止断网、网络故障等状况了。对于弱网的数据定义,不同的利用所界定的含意是不一样且不清晰的,不仅要思考各类型网络最低速率,还要联合业务场景和利用类型去划分。依照挪动的个性来说,个别利用低于2G速率的都属于弱网,也能够将3G划分为弱网。除此之外,弱信号的WiFi通常也会被纳入到弱网测试场景中。 1.1 弱网的功能测试这一部分次要是在各种不稳固的网络环境下进行的功能测试,同时模仿高提早、高丢包的异样网络下进行健壮性测试。2G/3G/4G/5G的网络能够通过应用电话卡挪动/联通/电信等网络进行模仿,关注游戏界面的响应工夫、界面出现是否残缺统一等。 弱网功能测试倡议将整体的性能测试用例在弱网环境下进行一轮测试,雷同的模块下的性能能够分多个网络条件进行测试。这部分发现的问题可能会有:界面图片在弱网环境下加载不进去(这就须要对图片加载逻辑进行优化)、界面排版构造凌乱(这就须要界面在布局是在弱网环境的加载进行优化)、界面长时间响应没有任何显示(这就须要在显示逻辑进行优化,以及引入重试机制)等。 1.2 无网状态测试无网状态测试则是在切换网络的状况下进行的测试,次要关注界面的显示、用户交互、本地数据的存储断网性能的应用等。常常该局部也须要与网络切换局部协同进行。通常来说: 断网状况下申请一个非本地数据时须要设定肯定的工夫期待下限,及时提醒玩家网络异样以及重试机制; 断网状况下申请一个局部本地数据的界面须要察看本地数据的局部是否加载显示失常,待申请的局部是否合乎用户交互给的缺省款式; 断网状况下申请一个齐全本地数据的界面是否显示失常。这里还须要思考本地数据存储的状况,有些须要联网后上报服务器的数据本地是否正确的存储,联网后这些数据是否失常上报。 无网状态测试倡议依照页面划分进行,针对每个页面独自测试无网状态的显示,界面间跳转的显示,界面性能的点击和显示,同时关注无网到有网时的页面复原显示状态、数据上报状况是否失常。 1.3 网络切换测试这部分次要是进行几个不同网络场景的切换,包含WiFi到2G/3G/4G/5G、WiFi到无网、2G/3G/4G/5G到WiFi、无网到2G/3G/4G/5G、无网到WiFi等。次要关注页面的显示与交互、尤其是弱网到WiFi、WiFi到弱网的状况,是否会有crash以及显示的错乱、客户端服务器数据的一致性、申请沉积的解决等。 1.4 用户体验关注弱网测试的最重要的目标就是尽可能保障用户体验。关注的关键点包含: 界面响应工夫是 否可承受,包含热启动、冷启动工夫,界面切换,前后台切换,首字显示工夫,首屏显示工夫等; 界面出现是否残缺统一; 超时文案是否合乎定义,异样信息是否显示失常; 是否有超时重连机制; 平安角度:登录ip更换频繁、单点登录异样等; 大流量事件危险:是否会在弱网下进行更新apk包、下载文件等大流量动作。 2. 如何做弱网测试?对于测试人员来说,要高效的进行弱网测试,就须要借助第三方工具搭建出各种弱网的环境,模仿一个弱网环境即可。 2.1 弱网工具介绍目前在测试挪动设施上进行弱网络专项测试的计划次要有3种: 第一种:通过设施连贯到PC上进行弱网络测试,比方Fiddler,Charles,Network Emulator Toolkit等。以Charles为例,基本思路是在PC上装一个Charles网络抓包工具,而后再将设施的网络代理到PC上,通过在PC上的Charles设置延时来进行弱网络模仿。 如下图所示:关上设置界面进行罕用的网速模仿设置第二种:在专有服务器上构建弱网络WiFi,挪动设施连贯该WiFi进行弱网络测试,相干的技术计划有Facebook的ATC和腾讯的Wetest-WiFi。以(Augmented Traffic Control)ATC为例,原理理论是利用了Linux流量控制系统,通过纯Python的网络库pyroute2调用netlink的API管制,它是搭建在Linux服务端的Web服务,通过挪动设施拜访web服务来抉择测试的网络环境。 如下图所示:关上Web网页进行网络测试环境抉择第三种:以独立 app 的形式,为用户提供弱网络模仿服务。比方腾讯 wetest 服务平台推出的弱网测试工具QNET,在Android设施上间接装置应用。 如下图所示:用户依据本人的测试需要自定义弱网参数模板 2.2 弱网工具的优缺点比照第一种通过设施连贯到PC上进行弱网络测试的抓包工具Charles、Fiddler。 长处:抓包工具PC端装置不便,反对网络协议抓包;依据本人的测试需要自定义弱网参数,配置更为灵便;反对多零碎平台。 毛病:挪动设施网络代理连贯PC时须要装置相应证书,较麻烦;Fiddler不反对丢包、抖动等弱网环境。 第二种在专有服务器上构建弱网络WiFi的形式。 长处:在手机上通过Web界面就能够随时切换不同的网络环境;多个手机能够连贯到同一个WIFI下,相互之间模仿的网络环境各不影响。 毛病:搭建老本高,须要筹备反对AP模式且有驱动的网卡和Linux服务器,有专门的技术人员反对;切换到网络模仿界面改参数,而后再切回被测APP,影响被测APP的操作连贯性。 第三种以独立 app 的形式提供弱网络模仿服务。 长处:装置简便,利用界面简洁易上手;反对用户依据本人的测试需要自定义弱网参数模板,有比拟好的灵活性。 毛病:目前只反对Android平台设施。 以上各计划都是比拟成熟的弱网测试工具的应用,可依据理论状况进行抉择。 下方是不同网络环境下速度的图片,测试时可参照设置:

February 4, 2021 · 1 min · jiezi

关于测试:回首来路携手前程-IDCF社区年货清单

旧年已逝,新年将至,每到月末月初、年末年初,习惯性回首去路、祈愿前程。总结也好、打算也罢,大多是为了“典礼感”吧,总感觉应该做些什么,让这个时刻有别于其余时刻。 因而提笔梳理社区的成绩,记录心底与有荣焉的喜悦和骄傲。也为与咱们一道成长的你,奉上一份年货清单,包含:120+文章干货、46期【冬哥有话说】直播、认证体系、DevOps人才成长地图、12门精品课程,6期案例钻研分享、8期DevOps黑客马拉松、1个开源共创,还有那些线上线下的精彩霎时。 一、120+篇干货文章阳光透过玻璃窗,书桌上的《麻利无敌》正好翻到阿捷和赵敏滑雪场的“英雄救美”,故事仍旧在持续...... 以上故事桥段源于IDCF社区“无敌三人组”著述的滞销图书《麻利无敌之DevOps时代》。 除图书出版外,2020年社区产出原创+转载干货文章120+篇,主题包含麻利办法与工具、DevOps实践与实际、数字化转型、高效团队打造、用户增长与产品布局等,关注优良工程实际和组织效力晋升。 局部文章速览(全副文章请查看公众号历史音讯) 高效研发组织的七个习惯 | IDCF对于“研发效力冷思考”的冷思考 | IDCF如何搭建一支拖垮公司的技术团队?| IDCF2020版Scrum指南更新比照全面解析 | IDCFMartin Fowler三万字解读源代码分支管理模式 | IDCFKnightmare,DevOps正告故事 - 4亿资产的骑士资本如何在45分钟内因部署失败而破产 | IDCF二、46期【冬哥有话说】四季轮回,光影沉寂,岁月有情,心念有声。我喜爱春风吹醒百花的浪漫,喜爱夏蝉伴着热风鸣叫的冷落,喜爱秋风吹过麦穗,喜爱冬雪伴着北风飘洒,一年像一个轮回,不论经验好坏,短暂的保持终归会带来或多或少的成长。 每周四晚8点,IDCF直播间,固定工夫固定地点,专属于IDCF粉丝们的团聚,【冬哥有话说】更像一种陪伴。 46期直播,46位讲师,46个话题,解析工具者有之:OKR、Jira、Spring、Jumpserver、Jenkins、麻利测试等;分享实践者有之:银行业/金融机构/传统企业数字化转型/麻利转型实际、拼多多等用户增长实际、大数据时代下的产品摸索实际等;畅谈成长者有之:做个高兴斜杠青年、像经营公司一样经营本人的职业生涯等。 三、认证体系&人才成长地图回顾最不能漠视的是里程碑式的事件,而后一点点抽丝剥茧缓缓串联。 IDCF社区的大事件不能不提FDCC-ADCC-PDCC-MDCC认证体系和DevOps人才成长地图的公布,交融了社区几位导师总龄27的智慧与数十年积攒的行业教训。 DevOps人才成长地图 IDCF的全称是International DevOps Coach Federation,定位于造就端到端的DevOps教练与人才,DevOps人才成长地图包含超过18个角色和职业,每个DevOps的爱好者都能够在外面找到本人的一席之地,和将来的倒退方向。(点击返回IDCF官网查看大图) IDCF认证体系 FDCC - Fundamental DevOps Capability Certification【根底认证|⽩腰带】ADCC - Advanced DevOps Capability Certification【资深认证|黄腰带】【分管理、工程两个方向】PDCC - Professional DevOps Capability Certification【业余认证|绿腰带】MDCC - Master DevOps Capability Certification【巨匠认证|⿊腰带】IDCF认证体系,更器重能力的造就,而非一次性的认证考试。四层的构造,心愿认证的过程是一个降级打怪的过程,有方向,有乐趣,又不失谨严。时至今日,曾经有不少同学通过FDCC和ADCC认证。 FDCC认证学员作品(局部)关注公众号回复“FDCC”可加入认证 从番茄工作法到麻利项目管理 | IDCF FDCC认证学员作品敢问路在何方?—麻利模式下项目经理的富丽转身 | IDCF FDCC认证学员作品如何用“站会18 key”玩转每日站会 | IDCF FDCC认证学员作品品质内建七步法 | IDCF FDCC认证学员作品麻利开发就肯定优于瀑布式开发吗?我拥护  | IDCF FDCC认证学员作品四、12门精品课程2020年一路趔趔趄趄坎坎坷坷,然时光不倒退,咱们自前行。“常常嗅一嗅奶酪,这样你才晓得它是否仍旧陈腐”,都说惟一不变的是变动,一直学习适应变动而变动是找到新的奶酪的惟一路径。 ...

February 4, 2021 · 1 min · jiezi

关于测试:欲善其事先利其器-IDCF第6期DevOps案例研究回顾附视频

2021年,会有哪些“意想不到”在期待咱们? 2021年,会有哪些“变与不变”在期待咱们? 这些,都未可知。 借假修真,惟一可知的是过来有哪些值得咱们借鉴与学习,并帮忙咱们更好后退的教训。 2021年开始,「IDCF第6期DevOps案例深度钻研」如期而至,31位案例研究员通过1个月的精心打磨,1月24日全天在线直播分享各自的研究成果。(回放视频文末获取) 本期案例钻研以“研发过程与DevOps工具钻研”为主题,31名成员分成4组,别离对继续运维、继续测试、CICD、合作研发4个专题进行深度开掘与洞察。王立杰、徐磊、姚冬、许舟平4位老师全程参加并领导了各小组的案例钻研工作。 牛转乾坤——继续运维整体而言,继续运维小组的分享,有机地交融了ITIL、DevOps与SRE等体系,并且对继续部署、继续运行、继续反馈与改良、混沌工程等理念进行了详实的论述。 继续运维小组的分享,从运维的倒退历史开始介绍,让大家对运维的初衷与目标有一个残缺的意识。同时对比剖析了服务与产品的个性异同,强调要把运维做好,决不能单单从产品的角度思考问题,更应该重视服务的特点。 与此同时,他们还提出了“当咱们谈继续运维时谈些什么?”的灵魂拷问,详实地介绍了继续运维的三个档次:继续部署、继续运行和继续反馈与改良,并别离从以上三个档次进行了详尽的论述和剖析。尤其是其中事变响应的各类MTTx指标之间的关联和整体串联,让咱们对一个事变的生命周期有了活泼的意识;对于事变响应各阶段所能采纳的实际和办法有粗疏的形容;故障注入与混沌工程的联合也更易了解。 继续反馈与改良局部旁征博引,对反馈是什么、如何建设、如何改良、案例与工具等方面进行了残缺解读。“一人一狗”模型生动活泼,令人印象粗浅。 总结局部的“用简略的继续运维服务,去连贯人、资源、产品”实为点睛之笔,整体案例晦涩精美,残缺详实,是整体小组业余态度的残缺体现! 撬动宇宙——合作研发价值晋升之道协同开发小组聚力于一孔,专一在“需要”这一个点,将其讲透。围绕需要的不同维度进行剖析,从如何开掘到如何剖析和拆解,再到需要的利益相关者剖析等,由浅入深,实践联合实际,再落地到工具。包含需要模式、需要的访谈调研、设计思维、利益相关者剖析、影响地图、用户故事地图等多个知识点,将一个需要残缺串联起来,这是一个残缺能落地的流程体系。 尤其值得指出的是,协同开发小组所驳回的案例,都是本人公司实在的案例,本身经验过的场景,联合到理论化的框架中,更为活泼,易于了解。该小组的钻研成员仅有4人,远少于其余小组,但依然实现了全程的钻研工作与成绩输入。 降龙十八掌——CICDCICD小组对DevOps流水线进行了全面的介绍,从CI/CD对企业的价值动手展示了施行继续交付流水线的残缺幅员。对于多种CI/CD工具的比照帮忙咱们对业界罕用CI/CD工具的缺点有了肯定的理解。 CICD小组的分享最大的亮点在于剖析了CI/CD施行过程中的最佳实际和反模式,对于须要引入DevOps继续交付流水线的团队特地有参考价值。 测之以恒——代码精进而不觉本小组分享从测试的倒退历程登程,再到数字业务的暴发和DevOps的宽泛驳回,对测试提出了新的要求---即继续测试,而且越来重要;通过5W1H,帮咱们了解了为什么要继续测试(Why),什么是继续测试(What),从何处着手(Where),什么时候动手(When),谁来做(Who),如何做(How)。 通过将工具与产品生命周期相结合,论述了单测、接口测试、契约测试、UI自动化测试、性能测试、平安测试及测试报告等各种能够抉择的工具。 为大家阐释了“度量之美”,譬如常见度量指标集、度量陷阱、基于度量的继续改良机制等。 最初对测试进行了瞻望,提出测试的将来会朝着DevSecOps及AITest倒退,同时也指出了测试人员的将来职业倒退方向。 4个小组的分享内容都很精彩,通过缓和的比拼和角逐,最终继续测试小组被评为“最佳案例小组”。 (DevOps案例钻研的精力-一直精进) 结语在案例钻研的过程中,每一个小组沿着自组织自治理的思路,成员踊跃地、被动地去收集材料,提炼材料,互相分享与观点碰撞,一直地演练,有时继续到夜里12点多。在这个过程中,可能取得案例最佳,当然是最好的,但最重要的其实是钻研的过程,毕竟过程比后果更重要。通过深度钻研,大家从0到1对这一畛域会有更深层次的感悟与认知,这才是案例钻研的最重要的价值,咱们说“站在伟人的肩膀上,能力看得更远,爬得更高”,2021 IDCF与你一起精进。 ——IDCF社区发起人,DevOps案例深度钻研发起人&导师 王立杰 「DevOps案例深度钻研」是IDCF发动的一项系列性流动,在过来6期,咱们深入研究了20+个主题案例,积淀了十分多的贵重教训和材料,这个流动带给咱们更多价值的,是案例钻研的过程自身。 案例钻研流动将持续发展,也心愿有更多气味相投的敌人退出咱们,一起精进成长。 IDCF第6期DevOps案例深度钻研分享视频已上线,点击查看 作者:IDCF DevOps案例深度钻研主委会

February 2, 2021 · 1 min · jiezi

关于测试:敏捷下的测试Cypress-IDCF

一、引言在目前的软件开发畛域,麻利、DevOps 是最热门的‘词’了、当初大多数的公司都在进行着 “麻利”转型。业界有很多所谓麻利开发流程,比方Scrum,Kanban等,然而其中测试相干的内容绝对较少,并且不够系统化和细节化,所以业界就呈现了很多测试人员,他们总结了测试人员应该在麻利开发中如何进行测试工作。因为很多测试人员也是公司或者团队在Scrum和Kanban的转型中接触和学习到麻利,而后通过无限的材料以及自悟在团队中进行麻利测试,又在只知其一;不知其二上来宣传麻利测试或者去抵制麻利测试,导致麻利测试甚至麻利自身在国内乱象丛生。 首先麻利测试肯定是麻利开发方法的一部分,所以麻利开发方法论里应该须要包含麻利测试的相干内容,然而当初业界中所谓的一些规范的麻利开发流程里却很少蕴含系统化的测试实际。因为麻利测试实际或者说麻利实际的外围就是缩短反馈周期,逐渐优化整个零碎。并且因为每个团队的状况都是有差距的,所以通过同一种规范的形式去要求所有的团队,会产生很多负面的成果。 当初业界曾经有不少通用的麻利测试实际,以及一些在特定条件下的经典流程(前面会介绍一个经典的麻利测试治理流程)。其次对于大规模麻利开发中的麻利测试来讲,其外围还是在开发团队里正当应用各种麻利测试实际,缩短测试反馈周期。 因而不论麻利开发还是麻利测试里的麻利都没有一个所谓对立的最终麻利,应该是须要越来越麻利的状态才是最好,而后最终达到本人我的项目的一个稳固麻利状态就能够。【援用】“ThoughtWorks的麻利测试” 二、实际看完了他人的介绍,也要开始咱们本人的实际、就如上文中说到的“麻利中的测试是一个新开始、要致力尝试的过程”。 介绍一下背景。咱们是一家在数字化转型中的公司,公司2019年开始进行数字化转型,也是从那一刻开始、“麻利”从一个名词进入到大家的“工作中”。 瀑布模型下的专职测试人员也要开始本人的转型了。通过一年的致力咱们播种到一些成绩,当初给大家分享一下。首先看看咱们的流程图,不是最规范,却是最适宜咱们现状的。 上面咱们针对流程中的每个阶段进行阐明,只解释和测试相干的,除此之外的不在本文做更多的论述。 2.1 需要分析阶段这个阶段咱们次要定义二个事项: 基于组织的“测试标准化文档“进行测试相干工作的相干追踪跟进机制的确认,并和相干人员达成共识,同时确认本次冲刺须要收集的度量数据。欠缺性能级的DoD 验收规范,最终造成的一个在线查看清单,这个查看清单次要面对是用户或者PO层面、产品展现会议进行之前,会首先确认查看清单是否曾经实现,所有查看我的项目是否曾经全副通过。也是咱们麻利流程中品质内建第一把锁。2.2 冲刺布局阶段在冲刺布局会议测试人员会参加对用户故事的DoD 探讨和制订、确保开发人员和测试人员能在后续的工作中放弃在同一个频道。 2.3 冲刺阶段目前咱们的现状是有跨我的项目的测试人员,负责多个我的项目的测试工作。为了能最大化测试人员的效力,引入自动化测试工作必不可少(前面针对于自动化测试工具做对应介绍)。尽管麻利流程举荐是缩小文档,但测试用例从目前阶段来看是一个必须存在的文档信息。针对于测试用例咱们会应用走查的形式进行验证,例如导入导出相干的用户故事是开发A负责,当针对于这个用户故事的测试用例实现后,会同开发A进行第二次的确认,确认咱们还在同一个频道中。 测试人员会基于编写好的测试用例进行自动化测试脚本的编写,测试脚本会同开发的代码寄存在同一级的代码管制库中。 开发人员实现用户故事的开发后,通过CICD流水线进行部署,同一时间测试脚本会主动被执行。 测试人员会进行一次的测试报告的剖析确认,确认测试脚本是能够满足相干性能,同时针对于测试报告中的bug更新到我的项目管理系统中,并指派对应人员进行修复。开发人员在进行修复后反复之前的公布流程,而后通过自动化测试的报告确认问题曾经被修复。当然如果测试人员发现测试脚本不能满足测试的需要时,会同步更新测试脚本到代码库,以确保自动测试是能够被正确执行的。 2.4 回顾阶段在产品演示阶段测试人员会收集到用户最新的需要及对于零碎目前应用中须要改善的Bug,以便于在下阶段中进行改善的跟踪确认(需要实现对应的自动化测试流程)。 在冲刺回顾会议中测试人员会听取开发人员针对本冲刺中测试所提供性能及计划的反馈,某中水平来讲测试人员也是开发,只是咱们开发进去产品的使用者是开发人员而已。说完了咱们的流程,上面也分享一下咱们为什么采取Cypress 做为测试框架。 三、技术栈从技术角度,团队中的测试人员大多数是从前端开发转换过去,或者是一些非技术出身的人员来负责,当咱们面临应用Selenium还是Cypress 的抉择时,最初大家还是抉择了Cypress 。绝对于Selenium 来讲Cypress 的学习曲线更平化、更容易让咱们在短期内达成指标。 3.1 所见即所得能够在一个页面同时查看脚本执行日志信息及执行后果。 3.2 规范报告反对内置的标准化的报告模板、间接生成测试报告进行展现。 3.3 同样的TDD作为一个测试框架怎么能少得了对于TDD 反对呢。 3.4 最省心的存档cypress 反对主动录制执行过程,主动截取运行后果图片。 四、总结麻利开发过程是一个一直循环的过程、做为外围之一的品质内建也是一样,致力冲刺。 作者:IDCF社区FDCC认证学员 李国有

January 27, 2021 · 1 min · jiezi

关于测试:警惕一个针对安全研究人员进行攻击的组织出现了

编译:袁钰涵 前段时间,威逼剖析小组发现了一个流动组织,通过几个月的致力,确认该组织会针对在不同的公司和组织中从事破绽钻研和开发的平安钻研人员进行攻打。 这个组织的参与者是位于朝鲜的政府派,在过来一段时间中,他们采取了多种手段来锁定钻研人员并发动攻打。 后文是编译内容,将讲述他们用了什么办法来锁定钻研人员。心愿这篇文章能揭示平安钻研界的敌人,现在他们成为了这群朝鲜政府反对派的攻打指标,而没有和这群人接触过的人,日后须要保持警惕。 如何分割钻研人员?为了与平安钻研人员取得分割并骗取他们信赖,该组织建设了一个钻研博客以及多个 Twitter 账号,借用以上两者与潜在指标进行互动。 他们用这些 Twitter 账号公布指向博客的链接,同时宣称博客中有人发现了破绽并对破绽以利用,做出了一个个应用破绽攻打网站的视频,用多个账号转发视频扩充其影响力,还在其余用户的帖子下公布这类内容。 这个组织所领有的 Twitter 账号 组织建设的博客中蕴含了已公开披露的破绽文章和剖析,还有一些平安钻研人员的“来宾”帖子,而这些钻研人员对此却齐全不知情,组织如此做可能是为了在平安钻研人员中取得更高的信任度。 组织对公开披露的破绽进行剖析的示例。 只管咱们无奈验证他们公布的所有破绽的真实性与工作状态,但在组织宣称他们发现了无效破绽并使之运行时,咱们能够晓得他们所说是假。 2021 年 1 月 14 日,组织管制的账号通过 Twitter 分享了他们的 YouTube 视频,视频宣称能够利用 CVE-2021-1647(一个最近修复的 Windows Defender 破绽)让它产生 cmd.exe shell,人们仔细观看视频后确认这是一个虚伪破绽。 YouTube 上也有多条评论示意该视频是虚伪伪造视频,基本没有可利用的破绽。 但组织不顾 You Tube 上的评论,用他们所领有的其余 Twitter 帐号转发原帖,并评论“不是混充视频”。 组织对多个账号的“利用” 如何锁定平安研究员?这个组织对平安钻研人员建设最后的分割后,他们会询问钻研人员是否心愿在破绽钻研方面进行单干,而后为钻研人员提供 Visual Studio 我的项目。 Visual Studio 我的项目中蕴含利用此破绽的源代码,以及将通过 Visual Studio 生成事件并执行的其余 DLL。 DLL 是一个恶意软件,它会与组织管制的 C2 域进行通信,下图显示了 VS Build Event 的示例。 生成 VS Project 文件时执行的 Visual Studio 命令 除了通过骗取信任取得单干等一系列口头锁定攻打指标,有时该组织会间接在平安钻研人员拜访其博客后马上攻打。 钻研人员通过 Twitter 链接传送到 blog.br0vvnn [.] io 托管的文章不久后,会发现零碎被装置了歹意服务,零碎中的货色会被传送到组织管制的服务器中。 ...

January 26, 2021 · 1 min · jiezi

关于测试:功能测试用例设计方法分享

本文首发于:行者AI测试用例能够用来掂量一个我的项目测试品质,因而在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都须要并且十分纯熟的编写测试用例,能在编写测试用例中尽可能的笼罩任何异样的测试点;如何能编写优良的测试用例,就须要测试人员把握更多的用例编写技巧以及思考出更多的测试点。针对于游戏测试,大多更偏差于性能方面的测试,依据性能测试用例逐项测试,查看产品是否达到了策动的需要。功能测试次要采纳黑盒测试策略设计测试用例,进行测试。次要功能模块测试的测试用例设计办法包含:等价类划分、边界值剖析、谬误揣测法、因果图和断定表、场景法、正交实验法。上面就以上几种办法进行一些分享。 1. 等价类划分法等价类划分,指的是一种典型的、重要的黑盒测试方法。其就是解决如何抉择适当的数据子集来代表整个数据集的问题,通过升高测试的数目去实现“正当的”笼罩,以此发现更多的软件缺陷,统计好数据后由此对软件进行改良降级。 举例一: 设有一个认证条件,要求玩家输出以年月示意的日期。假如日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位示意年,后2位示意月。现用等价类划分法设计测试用例,来测试程序的"日期查看性能"。 首先,划分等价类并编号,下表等价类划分的后果 设计测试用例,以便笼罩所有的无效等价类,在表中列出了3个无效等价类,编号别离为(1)、(5)、(8),设计的测试用例如下: 为每一个有效等价类设计一个测试用例,设计后果如下: 举例二: 登录账号的时候,邮箱地址输入框输出数据,程序检测,判断用户输出的邮箱地址是否非法。现用等价类划分法和边界值分析法设计测试用例: 对输出的要求: a.用户名只能用小写字母和数字还有‘.’组成 b.邮箱用户名首位必须是小写字母或者数字 c.用户名长度在6-30个字符之间 d.必须要有 @ 符号和必须要有 ‘.’ e.@前面要以_._完结(*为任意字符串) 等价类表: 笼罩等价类的测试用例: 2. 边界值分析法其实边界值能够算是为了配合等价类而加的一个限度条件,个别会依据略小于最小值、略大于最大值、等于最小值/最大值进行边界值的一些验证;一般来说,对于区间型数据边界值的测试,大多都是略小于最小值和略大于最大值是不满足要求的,两头的数据是满足需要的。 边界值左近的数据确定的几种办法: 举例一: 还是以下面要求玩家输出以年月示意的日期来作为例子。假如日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位示意年,后2位示意月。现用等价类划分法设计测试用例,来测试程序的"日期查看性能",上面是对于边界值须要检测的点。 举例二: 购买一个宝箱,一次性最多只能购买5个,以边界值的规范可选取5个(正好等于)、6个(刚刚大于)、4个(刚刚小于),3个(正常值)作为边界值来测试。 3. 谬误揣测法没有确定的步骤,很大水平上是凭教训, 联合以往测试教训和直觉设计软件在性能和流程上可能存在的各种谬误,进行容错性测试。例如输出数据为零或输入数据为零时容易产生谬误的状况,所以可抉择输出值为零的例子,以及使输入值为零的例子;又如输出表格为“空”或输出表格只有一行是较易出谬误的状况,所以可抉择示意这些状况的例子。依据字面意思,也就是列出可能呈现问题的点,猜想哪些状况可能会有问题。 举例一: 如面购买宝箱的例子,针对于需要,仅是对于给出的数据进行了测试,然而在理论状况中,理论要求中须要留神的点。依据平时测试,呈现过问题的中央,所以又应该思考到以下的测试点: a.尝试购买-1个宝箱 b.尝试购买0个宝箱 c.屡次购买小于5个宝箱 d.屡次购买5个宝箱 e.购买宝箱后重启客户端/服务器 f........ 举例二:对于游戏中,须要做屏蔽词性能,须要思考到以下玩家会进行操作的性能点进行测试(多多自走棋为例),咱们须要思考到所有可能呈现玩家输出信息的中央,依据对平时对我的项目的相熟以及本人的教训,想到一些可能会呈现问题的中央: a.创立账号(玩家填写角色名称) b.聊天性能(世界聊天、好友私聊、队伍聊天、发送邀约信息、制图工坊、房间队伍聊天、局内战斗聊天、局内私聊、局内观众、局内裁判、观战发送聊天信息) c.个人信息(玩家批改昵称) d.自建房间(玩家创立/批改房间昵称) 4. 场景法百度百科对场景法的解释是:通过使用场景来对系统的性能点或业务流程的形容,从而进步测试成果的一种办法。用例场景来测试需要是指模仿特定场景边界产生的事件,通过事件来触发某个动作的产生,察看事件的最终后果,从而用来发现需要中存在的问题。咱们通常以失常的用例场景剖析开始,而后再着手其余的场景剖析。场景法个别蕴含根本流和备用流,从一个流程开始,通过形容通过的门路来确定的过程,通过遍历所有的根本流和备用流来实现整个场景。场景次要包含4种次要的类型:失常的用例场景,备选的用例场景,异样的用例场景,假设揣测的场景。 在一个游戏性能中,将大性能拆分为一个个小性能,而这些小性能就能够视为一个个小场景,这些小场景的汇合就成了这个残缺的功能模块。 举例,比方多多自走棋的通行证每周挑战性能: 依据这个界面,咱们能够分为以下几个局部: a.每日处分 b.教训等级 c.具体任务信息 d.购买等级 e.处分展现 f.视频播放 g.帮忙按钮 h.购买等级 ...

January 5, 2021 · 1 min · jiezi

关于测试:PlayStation4功能介绍及测试应用

本文首发于:行者AI对于不少人来说,在日常生活中游戏是重要的娱乐路径,随着科技的倒退以及人们消费水平的进步,人们畅玩游戏的姿态也是多种多样,大抵分为:PC、手游(iOS、Android)、主机(PS4、Xbox、Switch)。本文次要针对PS4的性能进行介绍以及游戏测试工程师想要在主机上进行游戏测试须要做哪些筹备,将从以下五个方面进行解读: PS4测试罕用界面介绍无线控制器的应用PS4测试罕用设定Neighborhood for PS4工具的罕用性能PS4测试利用1. PS4罕用界面介绍主画面上有功能区、内容区及内容信息区这3个区域。 1.1 功能区/性能画面会显示最新资讯及在线敌人的数量等等。按下上方向键,会显示性能画面。 1.2 内容区会由左至右显示最近启动的内容,若要确认所有内容,抉择 进行查看。 1.3 内容信息区/内容信息画面会显示与内容相干的最新信息。按下下方向键,会显示更多信息。 显示我的项目会因内容而异。 2. 无线控制器的应用按下控制器的PS键,抉择用户。 首次应用时,需配对设施。最多可同时应用4台控制器。按下PS键,光条会依照蓝色、红色、绿色、粉色的程序亮灯,配置各控制器。2.1 配对首次应用控制器或想要在其余PS4™主机上应用控制器时,需与主机进行配对。在主机电源启动时请应用USB连接线将控制器连贯至主机。 应用2台以上的控制器时,请别离进行配对。 2.2 充电PS4™的电源启动时或处于待命模式中,应用USB连接线连贯PS4™和控制器,即可为控制器的电池充电。继续按住PS键,可在画面上确认电池的残余电量。 待命模式中,光条会迟缓闪动桔灯,充电实现后会熄灯。 2.3 根本按键操作按键详情PS键启动PS4™的电源(PS4™的电源敞开时/待命模式时)显示主画面(PS4™的电源启动时)PS键(连按2次)切换启动中的应用程序PS键(长按)开启快捷菜单会依目前情况显示可操作的我的项目方向键/左操作杆抉择我的项目○键确定抉择的我的项目×键勾销操作SHARE键关上分享菜单OPTIONS键开启选项菜单会依目前情况显示可操作的我的项目2.4 根本的触摸操作操作详情轻触应用手指轻触双击间断2次轻触拖拽应用手指继续触摸后,再放开手指滑碰应用手指轻拨长碰继续长碰拉近/拉远应用2根手指同时往近或往远拉动点击按下触摸板键点击两下间断点击两次2.5 变更设定可设定控制器的喇叭音量与触动性能等。 在性能画面抉择 ,再抉择[周边设备]>[控制器]。 局部游戏或应用程序可通过控制器的喇叭输入成果音等声音。 亦可从快捷菜单中选择[声音与周边设备]以设定喇叭音量等。 3. PS4测试罕用设定3.1 首次创立账号抉择[第一次应用PlayStation™Network吗?请先创立账号吧。]创立账号。 创立账号时,需输出Email地址、登记者的出生年月日、真名、地址等个人信息。 账号创立后,所注销的Email地址会收到零碎函件,依照函件批示进行确认。 3.2 账号降级可将儿童账号降级为成人账号。降级后,便可享受更好的PlayStation®应用体验,并不再受视听者限度的束缚。 当儿童账号的儿童达到特定年龄时局部我的项目才可用。 3.3 登陆 ID(Email地址)可确认/变更Email地址。变更后,Email会发送至变更后的Email地址。 3.4 平安可设定明码等爱护账号的相干性能。 3.5 明码可变更明码。请依照以下内容正确输出两次明码。 明码中必须蕴含: 不可蕴含您的登陆 ID 或在线 ID明码中含有有效字符至多 8 个字符不得有间断3个字以上的雷同字母或数字(例如:333 或 BBB)至多需蕴含2种下列的字符类型:字母、数字、符号不得应用3个以上有程序的字母或数字(例如:345 或 ABC)3.6 平安问题和答案可设定平安问题和答案。 3.7 手机可增加/治理手机。 3.8 2步验证可设定/确认2 步验证。 ...

January 5, 2021 · 1 min · jiezi

关于测试:Mac配置Pyqt5

~~Mac上配置开发环境始终是一件很头疼的事,我在配置pyqt5环境的时候也踩了不少坑。顺便写一篇文章来记录下装置和配置步骤,免得今后用到。 一、装置Qt Designer下载地址(40M):https://build-system.fman.io/qt-designer-download下载后间接装置关上须要在隐衷里赋权二、装置 PyQt5pycharm里装置好pyqt5插件 装置好后能够执行上面代码测试下 import sys #这里咱们提供必要的援用。根本控件位于pyqt5.qtwidgets模块中。 from PyQt5.QtWidgets import QApplication, QWidget if __name__ == '__main__': #每一pyqt5应用程序必须创立一个应用程序对象。sys.argv参数是一个列表,从命令行输出参数。 app = QApplication(sys.argv) #QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。 w = QWidget() #resize()办法调整窗口的大小。这离是250px宽150px高 w.resize(250, 150) #move()办法挪动窗口在屏幕上的地位到x = 300,y = 300坐标。 w.move(300, 300) #设置窗口的题目 w.setWindowTitle('Simple') #显示在屏幕上 w.show() #零碎exit()办法确保应用程序洁净的退出 #的exec_()办法有下划线。因为执行是一个Python关键词。因而,exec_()代替 sys.exit(app.exec_())也能够应用Qt Designer生成UI文件通过上面代码间接加载ui文件来显示 from PyQt5 import uic from PyQt5.QtWidgets import QApplication Form, Window = uic.loadUiType("untitled.ui") app = QApplication([]) window = Window() form = Form() form.setupUi(window) window.show() app.exec_() 三、在Pycharm中设置External Tools关上Pycharm,进入设置实现QtDesigner 配置后,即可通过如下,关上设计界面 ...

January 5, 2021 · 1 min · jiezi

关于测试:面试软件测试所需要掌握的7个技能

摘要:软件开发和软测试是非亲非故的,很多人晓得软件开发,然而对软件测试的理解不是很多。怎么能力成为一名业余的软件测试人员呢?IT互联网的飞速发展,很多人抉择从计算机方面开发着手,在整个计算机行业的,不同岗位所须要具备的能力是不同的。软件开发和软测试是非亲非故的,很多人晓得软件开发,然而对软件测试的理解不是很多。怎么能力成为一名业余的软件测试人员呢? 一、测试用例的编写1.在测试中最重要的文档,他是测试工作的外围,是一组在测试时输入输出的规范,是软件需要的具体对照。编写测试用例,是测试人员的基本功,真正能写好的人并不多。 2.测试用例蕴含的内容:用例编号,用例名称,测试背景,前置条件,优先级,测试数据,测试步骤,预期后果,理论后果,备注。 3.当测试小伙伴拿到第一个需要文档的时候,进行剖析,提取测试点,编写测试用例,而后叫上开发,产品以及相干人员进行用例评审。 4.编写测试用例罕用的办法:等价类划分法,边界值分析法,谬误推断法,流程图法等, 5.学会质疑需要,不要齐全依照需要来写测试用例,要从用户角度去了解需要,看到需要之外的性能和体验。 二、http与https协定1、http协定原理HTTP协定是Hyper Text Transfer Protocol(超文本传输协定)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协定。----自行百度补脑 2、TCP和UDP区别TCP和UDP是OSI模型中的运输层中的协定。TCP提供牢靠的通信传输,而UDP则常被用于播送和细节管制交给利用的通信传输.。—自行百度补脑 3、get和post区别1)Get,它用于获取信息,它只是获取、查问数据,也就是说它不会批改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是能够批改数据的,所以这也是两者差异之一了。 2)Post,它是能够向服务器发送批改申请,从而批改服务器的,比方说,咱们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是能够仅仅获取数据的。 三、业务理解能力首先明确一点肯定要理解业务,只有理解业务,能力把功能测试做好,并且会有肯定的进步。 什么时候接入自动化-----当你的零碎趋于稳定的时候。 什么时候染指接口测试-----当接口开发结束的时候。 什么时候染指性能测试-----当呈现促销的时候,或者抢购的时候等等。 四、测试工具的应用1、接口测试工具:apipost应用apipost进行接口测试,输出url地址,申请办法,参数点击发送查看接口是否正确。 2、性能测试工具:jmeter应用jmeter对系统进行性能测试,对系统进行压力测试、负载测试、稳定性测试等 五、自动化测试代码编写能力1、ui自动化编写a、web自动化:个别是应用python+selenium对web网站进行ui自动化脚本的编写 b、app自动化:个别是应用python+appuim对挪动端进行ui自动化脚本的编写 2、接口自动化编写个别是应用python+requests进行接口自动化测试的 六、纯熟应用SQL1.罕用的sql语句,如增删改查。 2.理解数据库的事务,会编写存储过程,纯熟罕用的零碎函数。 3.理解并能够进行数据库的备份,迁徙,还原,镜像等。 4.对sql语句进行调优,并对能够运行的语句监控查看性能。 5.理解数据库的集群。 七、Linux1.Linux是测试人员的基本功,不须要把握太难或者很不常见的Linux命令,失常能做到查看日志,定位问题就能够了。 2.高级测试人员工作是常常遇到,发现bug,开发不抵赖或者不违心解决的状况,测试人员怎么解脱这样的问题呢? 依据发现的bug日志级别,来查看日志,定位问题,那这里首先要说一下日志级别。日志级别越高,输入的信息越少。 info:代码info信息,不包含sql语句等一些debug信息。 warning :代码正告信息。 error : 程序自身报错信息 个别不合乎需要的bug在debug中,程序自身报错的在error中。 本文分享自华为云社区《软件测试所须要把握的技能》,原文作者:奔四码农 。点击关注,第一工夫理解华为云陈腐技术~

January 4, 2021 · 1 min · jiezi

关于测试:云上可靠性测试让我们一起给开发找点事儿

摘要:在产品上云之前,云上数据的可信(安全性、可靠性等)成为大家关注的重点。引言疫情之下,科技撑持引人注目,多个产业迎来逆势增长。科技翻新赋能的“云技术”,不再仅仅是战“疫”的重要工具,更将带动全社会的数字化转型,对产业倒退产生深远的意义。而在产品上云之前,云上数据的可信(安全性、可靠性等)始终是大家关注的重点。 近年来,云上可靠性事变的案例层出不穷。如: 2018年7月XX云因存储空间使用率过高发动搬迁扩容。为加快速度,运维人员手动敞开了搬迁过程的数据校验,并在搬迁实现后立刻开释了源数据空间。因为物理硬盘固件版本缺点导致的静默谬误,文件系统元数据损坏,导致租户数据失落;2018年9月4日凌晨因雷电导致XX云中南美Region机房制冷异样,引起局部设施损坏/主动敞开,大部分云服务器中断超24小时;2018年10月21日晚,GitHub对故障的100G光纤设施保护更换导致东海岸数据中心网络中断43秒,由此引发数据库异样,服务降级继续24小时11分钟;2019年X月,XX云某region因代码缺点导致包周期EIP呈现大量退订,引起客户业务故障引发客户强烈不满。复原失落资源约破费XX分钟。“云技术”带来了数字化改革,但云上的可靠性问题又一次次让客户胆战心惊,上面重点谈谈如何做云上的可靠性测试。 1 什么是可靠性测试可靠性测试就是采纳特定的办法激活零碎中的各种故障(FAULT),通过观察生效(FAILURE)的产生状况来对系统容错能力(故障定位、故障复原、故障报告等)进行评估并利用该评估后果来推动产品继续缩小生效的一种测试流动。 产品的可靠性能力次要体现在防错能力、容错能力和纠错能力。因而可靠性测试也次要围绕产品的这三大能力进行测试。 防错能力次要考查服务的故障预警能力,如CPU、内存、磁盘等的容量监控告警能力。容错能力次要考查服务故障后的故障隔离、故障自复原的能力以及隔离工夫。纠错能力则次要考查业务故障后告警能力以及故障修复文档的可操作性。2 可靠性测试设计可靠性测试设计次要从产品故障模式库和业务流程两方面着手进行剖析: 故障模式思考的因素包含内部因素和外部因素。外部因素包含软件,硬件,网络和数据。内部因素包含人,负载,劫难,电力,环境等。 流程驱动次要从异样逻辑、异样事件、业务运行环境三方面来剖析: 异样逻辑次要包含(1)流程解决逻辑后果不合乎预期;(2)流程解决逻辑过程中所产生的非冀望事件。异样事件对业务流程的影响最终也会体现到逻辑上来,产生异样或不产生异样与切入点无关,须要通过屡次重复操作减少抵触几率。业务运行环境不稳固对业务的影响,次要指周边服务/链路状态不稳固,系统资源占用不稳固等对业务流程的影响。无论从哪个角度登程,均属于抽取式剖析。无奈达到故障模式和业务流程的齐全组合笼罩。产品故障模式库实例化无奈思考所有业务流程,业务流程可靠性剖析也不会思考所有故障模式。故障场景剖析即是将测试对象剖析后果与故障模式相结合,将系统结构、组网架构、业务场景和要害数据融入到故障模式和业务流程的剖析中,别离生成故障模式用例、功能测试异样用例、性能测试异样用例,独特形成可靠性用例。 3 可靠性测试框架一个残缺的可靠性测试框架次要由四局部组成,业务背景流量、激活故障的平台或工具、被测对象及故障后的监控平台(次要用于监控故障注入后的告警、隔离复原工夫)。 可靠性测试框架: 业务背景流量是由业务的基本功能或性能场景组成的,次要是用来在故障注入前和故障注入后检测业务是否失常,故障注入前需保障业务0谬误能力精确看到故障注入后零碎的反馈;故障注入后查看业务背景流量次要是为了察看故障后业务的隔离复原工夫。 激活故障的形式有两种,(1)通过业务场景的结构触发故障天然产生;(2)故障注入测试:间接模仿某种故障,属人为产生故障。 业务场景结构测试方法:压力测试:通过使零碎达到肯定的负荷状态(或超过其设计的最大负荷),用以测验零碎在资源利用率高的状况下的工作情况; 长稳测试:在肯定的压力情况下零碎继续较长时间运行能力的测试; 异样业务场景测试:通过异样操作、业务配置、异样业务流量等结构异样业务场景进行测试,次要有:主备倒换、插拔网线、触发时序类问题等。 故障注入测试方法:网络级故障注入:笼罩网络组网相干的接口、链路、物理连贯、工夫时钟等故障对象的故障模式; 零碎级故障注入:笼罩单零碎内的链路、工夫时钟等故障对象的故障模式的模仿; 资源类故障注入:笼罩过程在应用内存类(动态内存、音讯包、音讯队列)、CPU、硬盘/FLASH等系统资源类故障对象的故障模式; 数据类故障注入:笼罩数据库、文件等数据类故障对象的故障模式; 接口健壮性测试:笼罩零碎中的各种接口协议音讯及其对应的故障模式; 硬件故障注入:笼罩硬件平台中的单板、硬盘、内存、网卡芯片、CPU、总线、控制器等故障对象的故障模式。 被测对象零碎即为将要注入故障的受体。 故障后的监控伎俩通常也叫做运维可靠性次要包含告警、故障复原工夫、故障复原指南、日志定位能力等,用于检测零碎在故障后的纠错能力。 4 结束语可靠性测试的要害是理解业务组网、架构和业务场景。基于业务组网和架构抉择适合的故障模式,在正当的点注入故障,而后失去预期的成果。可靠性测试剖析既要求测试人员理解客户利用场景,又要求相熟零碎业务流程,所以须要测试人员和开发人员共同完成。 从客户利用的角度进行:客户利用场景是测试人员善于的,对领导测试也比拟间接。次要有:大业务压力、长时间运行、业务叠加、多服务同时操作设施、流量模型、异样报文、业务配置程序、异样操作等。 从零碎实现的角度进行:须要开发和测试团队单干进行剖析。次要有:时序问题、内存透露、组件生效、CPU过载等。 本文分享自华为云社区《浅谈云上可靠性测试》,原文作者:xiongJ 。点击关注,第一工夫理解华为云陈腐技术~

December 29, 2020 · 1 min · jiezi

关于测试:重要说明QA

重要阐明Q&A: 1、 PerfDog无奈检测到手机? Android平台: 1) 请开启Debug调试模式(华为设施,须要先开启开发者选项中的 "仅充电"模式下容许ADB调试选项 ,再开启usb调试)。 2) 以上还不行,请从新关上PerfDog软件及重启手机。 3) 以上还不行,请确认PC上ADB可能被独占(自动化测试框架、Android Studio工具等),请敞开工具及ADB.exe。 4) 以上还不行,请用手机管家或手机助手检测下。 非凡机型:https://bbs.perfdog.qq.com/detail-127.html iOS平台: 1) Windows零碎及Mac10.15之前零碎 a) 须要手机信赖。 b) 以上还不行,请用最新itunes版本软件检测下是否能够连贯检测到手机。 c) 以上还不行,请重启手机。 d) 以上还不行,请换USB线(可能USB线老化)。 2) Mac10.15及之后零碎 a) finder左侧地位设施确定信赖申请。 b) 终端设备确认。 3) 请事后下载应用最新itunes(若有装置iTools软件,请敞开iToos软件) 2、 Windows & Mac OS X平台PerfDog客户端版本都反对用户对iOS和Android设施进行测试。PC上PerfDog可多开,单PC可同时测试多台手机。 3、 PerfDog反对挪动平台所有应用程序(游戏、APP利用、浏览器、小程序、小游戏、H5、后盾零碎过程等)、Android模拟器、云真机等性能测试。 4、 反对APP多过程测试,如Android多子过程及iOS扩大过程APP Extension。 5、 IOS平台:iPhone小圆点/辅助触控(AssistiveTouch)及iPhone x刘海手机的小白条/疏导式拜访(Guided Access)影响PerfDog(性能狗)采集数据准确性,请敞开。 注:利用、游戏中敞开小白条/疏导式拜访(Guided Access)办法: 1、点击【设置】-【通用】-【辅助性能】-【疏导式拜访】 2、开启【疏导式拜访】,进入游戏后,连按三下电源键,可彻底暗藏home键。 3、若想复原home键,再按三下电源键即可复原。 6、 截屏记录、Log日志收集各影响性能(整体FPS影响<=1。小米5:CPU=1%左右。iPhone7P:CPU<2%),若无需请不要开启截屏或Log日志收集。 7、 提醒网络连接失败问题 可能是PC网络设置了网络代理或启用了抓包软件,请敞开。 8、 iOS手机内存采集始终为0,请重启手机,Energy采集始终是0,请重启测试的APP利用或者游戏。 9、 如何收集更多性能参数? UI右下方+号按钮,自定义性能参数。勾选示意收集,选中对应框示意显示。 10、 为什么我看不到GPU信息? Android平台,目前只反对局部高通GPU手机,前期陆续补全。 11、 为什么手机无奈测试电量功率? 只能在WIFI模式下测试电量,USB模式有充电测试无意义。iOS平台下,有无线充电性能手机临时不反对。 12、 Android手机WIFI模式连贯失败或无奈测试? ...

December 29, 2020 · 1 min · jiezi

关于测试:App性能测试揭秘Android篇

阿里云 云原生利用研发平台EMAS 李嘉华(千瞬) 简介: 性能测试在挪动测试畛域始终是一个大难题,它最直观的体现是用户在前台应用 App 时的主观体验,然而决定体验优劣的背地,波及到了许许多多的技术变迁。浏览此文,带你揭秘App性能测试。前言性能测试在挪动测试畛域始终是一个大难题,它最直观的体现是用户在前台应用 App 时的主观体验,然而决定体验优劣的背地,波及到了许许多多的技术变迁。 当咱们习惯于诺基亚时,智能机呈现了;当咱们学会native开发时,hybrid来了;当各种 hybrid 框架下的巨型利用偏向成熟时,小程序呈现在了咱们眼前;紧接着直播、iot、ar、vr、人工智能,新的技术与利用场景正在以无奈设想的速度向前倒退。性能测试技术在疾速变动的场景与开发技术背后,面临着微小的挑战,当咱们还在纠结如何测试 a 时,b 就曾经进去了。性能测试自身,有倒退日渐成熟的解决方案,如线上性能监控APM、线下性能采集工具;有基于各个利用场景衍生的测试技术,如压力测试、稳定性测试、功耗测试等;也有基于各项性能指标(内存、cpu、电量、流量)而来的各种专项测试能力。咱们致力于打造线上线下一体的性能解决方案,心愿可能帮忙开发者发现、定位与解决一系列挪动端性能问题。本文将着重介绍 EMAS 性能测试平台的能力与布局,还是那句话:性能决定当初,性能决定将来。 通常咱们在采集 Android 设施性能数据时,都是通过 adb shell 获取各项零碎数据,对采集效率、数据准确度等影响很大。阿里云挪动测试做了大量技术优化翻新,目前性能测试采集距离为1s,并且同时做到了无侵入、低提早、低功耗。 在介绍技术计划之前,这里将本文的计划(app_process)与 adb shell 的计划做一组简略的数据比照。 采集的所有性能数据为:cpu、memory、fps、network开发环境: java + ddmlib测试电脑:MacBook Pro (Retina, 15-inch, Mid 2015) 上进行测试测试设施:OPPO R17/Android 8.0 只管比照的样本数不多,且不同实现形式也会有些许差别,但基于 app_process 的性能采集计划仍然有很显著的劣势: 性能数据误差更小。相比之下性能与精度的晋升是不言而喻的,在局部手机上app_process的cpu开销甚至低于1%;数据采集更及时、响应更快。因为 app_process 接口的高效性,咱们在每一秒钟都会监控被测利用的 pid,实际上性能数据对 APP 重启等动作的响应是实时的;兼容性更好。ps、top等命令在不同的设施上可能存在数据格式上的差别,这类不同机型的适配问题在本文计划中是不存在的。1. APP_PROCESS在Android零碎中,zygote 通过 fork()调用一个app_process过程作为App的载体,咱们同样也能够通过app_process运行一个一般的 java 程序,这个java程序能够像 App 一样通过 binder 跨过程与 system_server 通信,实现并调用一些 Android 零碎服务的接口,同时,通过app_process启动的程序领有shell等同的权限,这样能够实现一些 app 无权限然而 adb 可能实现的命令。 通过下图咱们简略了解一下 Android Binder 与本文的基本原理,更多细节能够自行搜寻学习。通常来说,如果咱们的 App 可能获取到一个 Manager(如 ActivityManager),那么 System_Server 中必然存在对应的 Service(如 ActivityManagerService),那么咱们就能够通过 ActivityManagerProxy 与它通信。 ...

December 22, 2020 · 11 min · jiezi

关于测试:线上沙龙WeTest携手微信testerhome共探DevOps下的质量保障

线上沙龙邀请函 WeTest携手Testerhome,与微信等专家一起来和大家独特探讨DevOps下的品质保障。 本期次要议题:1、 DevOps中的测试实际 2、 DevOps下的接口全生命周期治理与测试 3、 微信终端DevOps实际 工夫:2020年12月27日 地点:线上

December 18, 2020 · 1 min · jiezi

关于测试:云上的移动性能测试平台

1. 性能决定当初,性能决定将来性能测试在挪动测试畛域始终是一个大难题,它最直观的体现是用户在前台应用 App 时的主观体验,然而决定体验优劣的背地,波及到了许许多多的技术变迁。 当咱们习惯于诺基亚时,智能机呈现了;当咱们学会native开发时,hybrid来了;当各种 hybrid 框架下的巨型利用偏向成熟时,小程序呈现在了咱们眼前;紧接着直播、iot、ar、vr、人工智能,新的技术与利用场景正在以无奈设想的速度向前倒退。性能测试技术在疾速变动的场景与开发技术背后,面临着微小的挑战,当咱们还在纠结如何测试 a 时,b 就曾经进去了。性能测试自身,有倒退日渐成熟的解决方案,如线上性能监控APM、线下性能采集工具;有基于各个利用场景衍生的测试技术,如压力测试、稳定性测试、功耗测试等;也有基于各项性能指标(内存、cpu、电量、流量)而来的各种专项测试能力。咱们致力于打造线上线下一体的性能解决方案,心愿可能帮忙开发者发现、定位与解决一系列挪动端性能问题。本文将着重介绍 EMAS 性能测试平台的能力与布局,还是那句话,性能决定当初,性能决定将来。 2、云上的性能测试工具通常咱们在进行专项测试(内存、cpu、电量、流量等)时,须要筹备测试机型、测试包、测试环境、测试数据,会遇到以下问题: 机型样本数不够多。debug包不肯定实在反馈生产包的性能,但Android Studio须要debug包能力测试。Android/iOS 测试环境的搭建与跨平台艰难。大量测试数据整顿剖析。以上这些问题很容易导致整个测试效率的低下,甚至无奈施行落地。 基于EMAS云真机的调试能力,MQC在云上提供了更加完满便捷的性能测试工具。 云真机人造提供多达600+款测试机型,反对调试测试所有已装置利用,不依赖任何本地环境配置,测试数据一键上传统计。 同时,EMAS性能测试工具有以下特点: 基于 app_process 与 instruments 协定实现的挪动双端、跨平台性能采集;无侵入、短距离(采集距离稳固1s),低提早(性能数据提早小于100ms)、低功耗(对设施性能影响低于1%);利用+过程的测试计划,满足hybrid、小程序的测试需要。 云上数据看板========== 性能数据的意义在于它将咱们常见的各种问题通过技术的伎俩进行度量与量化,能够帮忙咱们在产品性能上线前,尽可能的发现潜在的性能问题和危险。MQC性能测试平台将存储于云上的数据,以尽可能多的维度可视化给用户,把好版本公布前的关口。 3.1 工作用户应用云真机进行的每一次测试工作与性能数据,都会间接保留成测试工作,不便再次查看与确认历史数据。 3.2 用例在理论的测试过程中,咱们很容易发现,不同利用场景的性能数据是齐全没有可比性的,在统计办法上只看性能数据的平均值也很难间接给出定性和定量的判断,没方法影响开发、产品的决策。 即使看似雷同的场景,不同的产品决策也可能带来很大的性能数据差距:比方大多数云盘的相册基于流量与性能的思考,显示的都是压缩后的图片;而咱们的本地的一些相册软件,显示的根本都是原图,这样产品上的抉择便导致了内存开销上微小的差别。 数据看板在最后设计的时候就汲取了性能自动化用例平台时的建设教训,将每一次性能测试工作分用例存储,并且依照不同的用例维度对性能数据进行统计。在 EMAS 挪动测试 控制台,不同子账号查看和治理雷同的app与用例,满足多用户云端合作的需要。 3.3 多维度聚合在用例维度的根底上,MQC 性能测试平台提供了多个维度的数据统计、聚合与剖析能力。 • 设施分级 依据设施硬件性能打分,划分为高、中、低三个级别。因为不同等级机型对 APP 理论性能指标的影响较大,这个因子能够较大水平缩小硬件性能对指标置信度的影响。 • 利用版本 对于性能指标来说,通常有三种问题判断规范: 基于行业技术教训定义的基线指标,这通常是技术决策者基于用户体验、性能要求、大数据分析给开发提出的底线规范;同行业 APP 性能指标横向比照,学习行业内优良的技术实现始终是互联网疾速倒退的重要起因之一;同 APP 不同版本间的纵向比照,疾速的发现新版本的优化成果,新性能对 APP 的影响等。• 指标散布 指标散布能够帮忙开发者疾速判断指标区间,定位可能的异样工作与异样指标区间,更加有针对性的去查阅工作报告。 4、将来布局• 丰盛指标:咱们将持续欠缺更多性能指标的采集计划,如电量、GPU、温度等;• 行业指标:MQC 将基于云上开发者数据、专家测试数据,整顿并统计各个行业性能指标作为参考分享进去;• 性能基线:上文提到,通常性能指标的察看规范有三,同行业APP性能指标;同APP不同版本性能指标;基于技术计划与行业数据的性能规范。性能基线的定义能够更好的束缚开发者对极致性能体验的谋求,最大可能升高性能问题呈现的概率,如OOM、ANR问题。 最初附上演示视频,请点击下方链接查看https://developer.aliyun.com/live/245866

December 11, 2020 · 1 min · jiezi

关于测试:怎样在测试过程中快速定位一个bug技巧

作为测试人员,和咱们最常打交道的,莫属bug。然而测试不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防计划也是要把握的技能。 如何疾速定位一个bug,就须要对性能、产品的流程、开发计划、开发人员十分相熟。 遇到一个bug的时候,咱们要去定位发现这个bug的起源是属于前端还是后端,能够应用fidder进行抓包剖析或者浏览器的f12开发者工具。 在拜访数据的是否抓取申请数据,比对申请数据是否正确,在服务器响应时咱们能够抓取响应数据,并比对信息查看响应数据是否正确。数据比照的时候能够应用接口测试工具,如:apipost、jmeter 如果是申请数据谬误,那么该bug属于前端的谬误,如果是响应数据谬误,那么该bug属于后端(数据库)的谬误。 如果申请数据和响应数据都没有问题,那么就能够思考是不是浏览器的解析呈现的问题,咱们就能够换一个浏览器再次进行测试一下。 fiddler下载地址:https://www.telerik.com/fiddlerwww.telerik.com apipost下载地址: www.apipost.cn jmeter下载地址:jmeter.apache.org

December 4, 2020 · 1 min · jiezi

关于测试:测试接口时怎样在json中引用mock变量

在测试接口的时候,有的接口须要测试随机传入大量数据,查看数据库是否失常,然而大量的随机数据全靠本人手写会很慢,而且是通过json传递的数据。 这里咱们就能够应用mock生成随机变量,而后在json中援用mock变量 首先看一下mock能生成那些随机数据 等前面还有很多,你们能够依据本人的需要进行抉择。 而后在json中援用mock,援用格局"变量名":"mock变量名",间接复制内置mock变量名字就能够了。 查看随机生成的数据 在咱们须要大量生成随机数据进行测试的时候就能够应用流程测试。 这里运行10次

December 2, 2020 · 1 min · jiezi

关于测试:破旧立新精准测试之道

前言第一次听到精准测试是在几年前了,那一瞬间就对这个流派充斥了好奇和摸索的欲望,最近几年逐步失去了各畛域各行业中测试人员的宽泛关注,那么问题来了: 什么是精准测试;精准测试的意义和价值在哪里;精准测试整体计划如何落地;传统测试的痛点 测试效率低下惯例的测试类型包含功能测试、回归测试、自动化测试、接口测试等,十分依赖于测试人员的测试教训,基于人工主观剖析的黑盒测试,借助惯例的用例设计办法来确保产品质量。 依据收益递加法则,尽管大量的人力投入,一直的执行测试,然而漏测率还是居高不下。两头的有效测试和反复测试也节约了大量的测试老本。 测试范畴无奈评估多分支代码合并到主分支,批改哪个文件哪个行,测试不可控;代码更新影响哪些性能无感知;大部分的测试还是基于对业务的了解,与实在业务数据还有差距,准确性难以保障,盲测,危险大;测试过程中的质量标准无奈掂量怎么样断定测试实现,怎么样断定测的怎么样?品质管制贯通于整个品质保障流程。 用例执行实现;探索性测试实现;开发人员缺点修复实现;回归测试实现;自动化执行通过;上述步骤实现意味着咱们的产品质量是合格的吗? 上线之后的非一致性老本逐步增高,测试过程没有数据量化的评定,无奈掂量,只能依赖线上缺陷率,线下缺点数,千行缺陷率等比拟飘的指标来评定,测试治理难度大。 麻利模式和散布式微服务架构下的挑战 迭代周期短,尤其是互联网行业,日常版本的周期根本两周一个迭代,对于工夫老本的管制要十分准确;需要频繁变更,每次变更都须要回归全副用例,大量的重复劳动;软件系统越来越简单,服务和服务之间的调用逻辑关系没有脉络,无奈精准的预估范畴和定位缺点;基于上述痛点,咱们冀望从以下方面解决: 迷信地评估代码变更影响到的性能点,须要对这部分代码做精确的针对性的测试,使测试更加的精准,回归测试所需的工夫更短,回归的范畴更精确。开释人力老本,将更多的工夫和老本投入到更深,更底层的测试工作中;对代码的逻辑进行粗浅的了解,哪些分支代码被笼罩到,哪些分支代码没有被笼罩到,进行具体的剖析,找出漏测的中央,须要准,缩小重复劳动,从经验型的主观判断向精准的数据可视化转变精准测试的概念精准测试是一套计算机测试辅助剖析零碎。应用用例和代码两个要害因子,进行品质综合考量和剖析的翻新测试实践办法体系,外围组件蕴含软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率剖析、缺点定位、测试用例聚类分析、测试用例主动生成零碎,这些性能残缺的形成了精准测试技术体系,大大加强了测试的深度与广度,突破了测试部门的成长天花板,为测试过程自身的价值开掘和测试数据资产的增值,提供了必要而充沛的条件。 外围个性之一双向追溯通过零碎采集程序代码执行逻辑,建设测试用例与程序代码之间的逻辑关系,造成正向和逆向的双向追溯机制,实现了精准无误的数据可视化。 正向追溯:测试人员执行一个测试用例当前,精准测试能够主动的记录和显示这个测试用例的代码外部执行细节。每个测试用例都能够进行量化剖析和统计,这些量化数据既能够用来对测试人员进行工作的考量,也能够提供开发人员和测试人员之间进行信息化的交换。逆向追溯:测试人员依据开发批改的代码,剖析代码关联的调用逻辑关系,疾速准确的定位测试范畴,极大缩小有效,反复的测试工作,使测试覆盖率达到最大化。精准的数据来断定,所有数据由零碎主动、原生录入,数据不可篡改,产生测试数据可间接用于测试的过程治理和实效剖析。反对测试数据的精准度量以及全面的、多维度的测试剖析算法,将白盒测试的视角从覆盖率扩大到智能测试剖析。 用例的智能筛选基于用例和代码的追溯关系在进行运算之后全自动得出的。用例和代码精准的追溯机制,使数据开始能够施行大量的智能测试算法。 设计思路 一、增量代码 diff精准测试的外围个性之一是双向追溯,前提是基于变更代码的双向追溯,因而变更的代码是整个零碎最重要的一个输出。 通过 JGit 来获取代码差别;解析到办法级别,作为调用链路推演的输出; 二、源码动态构造剖析函数调用分析方法:动态形式基于字节码的解析(ASM/bcel/Javassist 等),动态分析调用链路(应用 javaagent 对外部办法进行代码织入等),这里应用的是 JavaParser+JavaSymbolSolver 基于动态代码失去残缺的调用链路。联合代码增量取得变更代码调用链: 依据 Controll 层 Mapping 注解,取得变更代码影响的下层业务相干的 Http 接口;依据 Dubbo XML 配置文件,取得变更代码影响的外部 Dubbo 协定调用接口; 要害代码: 获取 Java 文件的符号推理器 获取 Jar 文件的符号推理器(微服务架构下,跨服务的面向过程调用) 到此,要害的一步受影响的接口曾经取得,有了上述的能力,咱们能够晓得通过哪些接口能够去测试这次改变的代码,然而面对大量的接口列表,置信大部分测试人员是一脸懵逼的。 三、增量代码覆盖率价值: 通过增量代码覆盖率的统计,对系统的外部执行逻辑深入分析,筛选剖析未笼罩或者覆盖率较低的办法,依赖上述的调用链路能够获取到影响的接口来进行用例的补充和测试;通过研发效力平台继续集成,进行覆盖率卡点,当覆盖率低于预期值将无奈通过测试;计划: 增量覆盖率的设计方案这里不过多介绍,请自行查阅相干材料,演绎成以下几点: Jacoco 做相应的革新,减少增量代码的数据统计;JVM 启动参数配置 Agent,TCP 形式启动;Dump 覆盖率文件和 class 文件解析后失去报告;如何防止一次测试过程中,服务屡次重启和部署,导致覆盖率失落,有几种解决方案: 定时 Dump 覆盖率数据进行汇总;通过 shutdown 事件,触发 Dump 覆盖率数据;整体框架: ...

November 25, 2020 · 1 min · jiezi

关于测试:转帖软件测试系统学习流程和常见面试题

在学习软件测试的时候你是否会感觉到不知从何下手? 明天教诲你们软件测试学习的零碎流程和面试常见的问题。 学习流程一、必备技能编程根底,能看懂前端页面,把握一门语言:php/python/java等2.数据库常识,倡议筹备好sql语言,能把握高级查问应用根本能够应答了。 3.软件测试实践,这个大家都不生疏,也是必考的了,应该能够轻松应酬。要留神筹备下web和app测试和性能测试这块,当初做web、app和微信小程序的公司好多。 4.依据公司具体的职位要求能够筹备的有linux的命令,CMMI的基础知识,TCP/IP的基础知识等。 二、学习流程1.功能测试学习 性能是软件测试最根底最实质的工作,就和地基一样,所以功能测试根底肯定要打好。在理解根底的功能测试的时候能够看一看《软件测试的艺术》这本书对才学习软件测试的人真的很有用。 2.接口测试 接口是前后端数据交互的通道,接口测试也是测试中很重要的一部分,接口测试的学习包含测试工具的学习:apipost、jmeter、loadrunner等。通信协议,http协定也须要重点学习,举荐看一下《图解网络-小林coding》,能够帮忙咱们根底理解互联网通信,前端如何传递数据到后端。 3.性能测试 性能测试个别是接口测试的一部分,通过接口对服务器进行的测试,查看服务器各种数值,性能测试包含很多分类测试重视点也不一样,如:压力测试、负载测试、稳固姓测试等。 4.自动化测试 自动化测试能够分为:接口自动化测试和ui自动化测试。 学习自动化测试,须要把握一门语言,php/python/java等。接口自动化测试要把握requests框架,ui自动化测试须要把握:web端须要把握selenium、app端须要把握appium。 5.Linux操作系统 学习Linux操作系统是为了本人部署测试环境,不便于本人测试。学习好Linux shell语句也很重要,学习书籍能够看看《鸟哥的linux私房菜》。 6.前端、后端和数据库语言 可能看懂前端页面,晓得前端页面是如何编写进去的,ajax传值的办法,后端会一门后端语言,php/python/java等。会数据库根本的sql语句的编写。 常见面试题一、功能测试1.说说你以前公司的测试流程。必答题。次要联合本人的我的项目教训置信讲一个本人做过的我的项目,从立项到测试完结,当然偏重测试和本人所做的内容。这里面试官个别都会依据你说的再发问。 2.功能测试次要有那些测试方法? 等价类划分、边界值、因果图划分、正交、场景、随机、谬误推断、测试纲要 A:等价类划分法: : 1:无效等价类: 2:有效等价类: 案例:比方一个登陆输入框,规定只能输出中文,同时长度为6-10, 通过等价类设计测试用例: 测试用例中重要的三步: 输出 操作 预计后果 如果与预期后果不合乎就是bug 无效等价类: 输出:输出长度为6的中文,输出的为王小明,这就是无效等价类 有效等价类: 1: 输出长度为4的中文,输出位小名,点击登录,预计后果长度不符合要求 2: 输出长度为6,然而是英文的,点击登录,预计后果 请输出中文 3: 输出长度为4,而且不是中文的,是数字,1234,点击登录,预计后果请输出中文并且长度为6-10位 4:输出长度为12而且不是中文的,比方qwertyuiopas,点击登录,预计后果请输出中文并且长度为6-10位 B:边界值法: 利用场景:边界值往往和等价类划分法一起应用,造成一套更为欠缺的测试计划,找到无效数据和有效数据的分界点, 注解边界值个别和无效等价类划分法配合应用: 案例:比方一个登陆输入框,规定只能输出中文,同时长度为6-10, 下面输入框的边界的:如果固定大于等于6,并且小于等于10, 那左边界就是 5和 6 右边界是:10 和 11 测试用例: 1:输出的为王小明,这就是无效等价类和边界值的联合应用 2:输出小名,这就是边界值为5,同时无效等价类 3:输出欧阳致远家,这就是边界值10,同时等价类无效 4:输出欧阳致远啦啦,这就是边界值为11,同时无效等价类 C:因果图及断定表法: 利用场景:在一个界面中有多个控件,如果控件之间有组合关系或者限度关系,不同的控件组合会产生不同的输出后果,为了弄清楚不同的输出组合会产生咋样的输入后果,能够应用因果图及断定表法: 判断是儿童还是青年还是成年人: 条件1:年龄 age 条件2:身高height 条件3:体重weight ...

November 24, 2020 · 1 min · jiezi

关于测试:详解接口测试文件上传使用pythonrequests

在做接口测试的时候,往往会有须要文件上传的接口,明天教大家应用apipost接口测试工具和python+requests脚本进行接口测试。 一、应用python+requestspython+requests进行文档上传的接口测试的时候,须要调用files,不过须要留神读取文件上传的时候形容门路的格局,因为window 读取文件能够用,然而在字符串中是被当作转义字符来应用。 三种解决办法: 1.本义的形式 'd:img.jpg' 2.显式申明字符串不必本义 'd:rimg.jpg'3.应用Linux的门路/ 'd:/img.jpg' python+requests接口测试脚本 二、应用apipost接口测试工具进行文件上传关上apipost,输出url,把body外面的text改为file,抉择须要上传的文件。点击发送就能够进行接口文件上传申请了。

November 17, 2020 · 1 min · jiezi

关于测试:可用性可维护性可靠性有什么区别

咱们生存在一个用户依赖于对服务的统一拜访的可靠性时代。在相互竞争的服务之间进行抉择时,对用户来说,没有比可靠性更重要的个性了。然而可靠性是什么意思呢? 为了答复这个问题,咱们将依据可靠性工程中的其余度量来合成可靠性:可用性和可维护性。辨别这些术语并不是语义问题。理解这些差别能够帮忙您更好地将开发工作的优先级放在客户的满意度上。 可用性可用性是可靠性最简略的组成部分。此度量形容服务运行的工夫百分比,这也被称为服务的“失常运行工夫”。可用性能够通过间断查问服务并以预期的速度和准确性确认返回的响应来监控。 服务的可用性是用户感知可靠性的次要因素。思考到这一点,设定一个100%失常运行工夫的指标是很迷人的。然而SRE通知咱们失败是不可避免的;导致停机的事变总是产生在工程预期之外。可用性通常用“9”示意,示意失常运行工夫的百分比能够达到多少位小数。一些次要的软件公司会吹牛本人的“5个9”或者99.99%的失常运行工夫,但永远不会有可确保的100%的失常运行工夫。 此外,用户是能够容忍甚至无奈留神到服务的某些畛域呈现宕机。致力于改善超出预期的可用性的开发资源并不会减少客户的满意度,把这些资源用在可维护性上会更好。 可维护性可靠性的另一个次要组成部分是可维护性。通过形容停机工夫的产生和解决形式,将可维护性因素思考到可用性中。当产生导致停机的事件时,可保护服务能够疾速修复。事件越早失去解决,服务就越快复原可用。 可维护性有两个次要组成部分:主动式可维护性和反应式可维护性。 主动式可维护性包含构建易于了解和更改的代码库。随着开发的进行,会呈现与现有代码不兼容的问题。如果工程师写的是面条式代码,而不是优先思考可维护性,就容易出问题,并且很难发现和解决问题。被动保护还包含质量保证和测试等程序。 反应式可维护性形容了服务在事变产生后被修复的能力。这受服务的事变响应过程的影响。大型事变的反馈和防备是必要的,如果事变响应程序牢靠,团队将迅速解决事件。适当的事变反馈也有助于缩小复发。高度可保护的服务容许工程师无效地吸取这些经验教训。 可维护性反映在可用性指标中。缩短停机工夫或停机频率能够进步可用性。然而,可维护性不是实现可用性的惟一伎俩。采取这种办法可能导致倒退资源分配不当。在可维护性方面的投资可能不会立刻带来更好的失常运行工夫。当您重构旧代码以解决技术债权时,服务的性能将与以前雷同,并具备雷同的可用性。直到事件产生,您才会看到这种高可维护性的益处。可维护性应该被看作是可靠性方面的投资,而不仅仅是可用性的一个组成部分。 可靠性可靠性能够定义为当用户拜访服务时,服务按预期运行的可能性。这仿佛与咱们定义可用性的形式雷同,但有要害的区别。可用性查看服务是否工作,用户是否正在拜访它。如果用户在所有工夫、所有性能上对立拜访服务,可用性将决定可靠性。个别状况下,这不可能产生。以两种情景为例: 服务A:用户登录页面的可用性为97%目录搜寻的可用性为97%站点设置页面的可用性为97% 服务B:用户登录页面具备可用性为99%目录搜寻的可用性为98%网站设置页面的可用性为90%仅从可用性度量来看,服务A胜出。然而如果登录页面被100%的用户应用,目录搜寻被90%的用户应用,而站点设置页面只有30%的用户应用,那么服务B就会被认为更牢靠。可靠性须要思考理论应用状况,将可用性指标转化为客户满意度的度量指标。 通过了解零碎的可靠性,开发人员能够避免浪费工夫来改良超出客户预期的可用性。服务级别指标将提早和可用性等指标捆绑到更无效的度量中。而后将服务水平指标设定在顾客不称心的阈值。这种办法从客户的角度来看可靠性,因为对他们来说,服务的可靠性比它的可用性更重要。 可维护性也能够通过这种规范来评估。响应事件所破费的工夫耗尽了服务失常运行工夫的谬误估算……SLI和SLO能够帮忙调配开发工作,以改良可维护性和最影响客户满意度的事件响应过程。 可靠性不仅仅是度量的汇合或代码库的品质。这是一个全局概念,蕴含了用户的观点、变动和增长的偶然性以及开发代码的人员。这种整体办法是SRE的根底,是实际的汇合,也是进步服务可靠性的文化课程。

November 11, 2020 · 1 min · jiezi

关于测试:API-测试利器-WireMock

之前写了一篇介绍 HttpClient 的两种重试机制, 但是否真的会依照预期进行重试咱们不得而知。 他人提供给咱们的 API 往往都是失常的,很多谬误并不能稳固重现,这也造成了咱们无奈进行全面的测试。正是这种状况下,理解到了 WireMock。 本文不打算做一个入门教程,重点在于如何用 WireMock 解决理论的问题。 初始化调用端首先初始化一个HttpClient public ZwroksApi(){ RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000).build(); DefaultServiceUnavailableRetryStrategy serviceUnavailableRetryStrategy = new DefaultServiceUnavailableRetryStrategy(); httpClient = HttpClients.custom() .setServiceUnavailableRetryStrategy(serviceUnavailableRetryStrategy) .setDefaultRequestConfig(requestConfig) .build();}进行了如下配置 异样重试默认开启,重试3次。应用了默认的服务不可用重试策略,会重试1次,距离1秒。设置 SocketTimeout 为1秒,用于模仿超时。异样重试超时首先来模仿一下超时,设置了固定的 delay 2秒,所以肯定会超时,依照预期会重试3次,所以一共是申请4次。 @Testpublic void testSocketTimeOut() { stubFor(get(urlEqualTo("/test")) .willReturn(aResponse() .withStatus(HttpStatus.SC_OK) .withHeader("Content-Type", "text/xml") .withBody("ok") .withFixedDelay(2000))); zwroksApi.test(); verify(4, getRequestedFor(urlEqualTo("/test")));}然而后果呢 Expected exactly 4 requests matching the following pattern but received 1具体的起因在之前那篇文章也曾经提过,SocketTimeoutException 是 InterruptedIOException 的子类,不会重试。 如何超时也进行重试,在上一篇中也有讲,这里就不赘述了。 谬误返回WireMock 中提供了几种谬误返回,应用也很简略 @Testpublic void testBadResponse() { stubFor(get(urlEqualTo("/test")) .willReturn(aResponse().withFault(Fault.CONNECTION_RESET_BY_PEER))); zwroksApi.test(); verify(4, getRequestedFor(urlEqualTo("/test")));}这里在运行时会抛错 java.net.SocketException: Connection reset,这种异样是会进行重试的,所以这里测试能够通过。 ...

November 5, 2020 · 1 min · jiezi

关于测试:测试攻城狮必备技能点一文带你解读DevOps下的测试技术

【摘要】本文将从DevOps模式下对测试人员的流动的变动,以及罕用的测试技术层面进行解读。我的项目的软件开发模式次要经验瀑布模型、麻利开发和DevOps这几个阶段,其中DevOps次要解决开发和运维、经营之间的隔膜,更强调自需要设计至生产部署的端到端协同运作,更强调精益、高效;更强调想尽办法剔除每个环节的节约,极致谋求每个环节的高生产率,达到疾速、高质量上线的目标。本文将从DevOps模式下对测试人员的流动的变动,以及罕用的测试技术层面进行解读。 1、为什么会有DevOps?我的项目的软件开发模式次要经验了以下几个阶段: 瀑布模型解决了分工协作艰难的问题,然而一年1~2次的公布流程太慢,且无奈满足日益变动的需要变更。 麻利开发解决了需要频繁变更、上线慢的问题。然而未解决开发和运维的鸿沟,甚至给开发和保护之间减少了十分多艰难和争议。 DevOps在麻利的根底上,从E2E的角度来考量。次要解决开发和运维、经营之间的隔膜,更强调自需要设计至生产部署的端到端协同运作,更强调精益、高效;更强调想尽办法剔除每个环节的节约,极致谋求每个环节的高生产率,达到疾速、高质量上线的目标: 2、DevOps模式给软件测试带来了哪些变动: 一个DevOps流动的流程如上图所示,能够看到测试曾经融入到DevOps流程中的一环,DevOps模式下的测试流程也会发生变化。以咱们团队为例,看下在DevOps模式下罕用的测试方法和流动: 能够看出, 1、全流程测试:测试流动曾经贯通到DevOps全环节,DevOps模式下测试并未隐没,而是嵌入到全流程的阈值评估点中。 2、测试向左挪动:开发团队也要承当起测试的工作,测试团队也会接入到开发阶段的测试及测试领导流动 3、自动化权重减少:接口自动化、契约自动化测试、性能自动化被大量应用,用来进步上线测试进度 4、UT弱化,API和契约测试更被违心承受:UT自动化仍旧存在,因为UT保护工作量微小,且需要变动快,导致UT的投入产出不成比例,UT自动化权重降落,应用API和契约、Mock等测试代替。 5、测试菱形模型:有专家指出,DevOps模式下,测试的倒三角模型仍旧存在,然而测试层仍旧很重要,甚至要做厚测试层,出现菱形模型,集体认可这种菱形模型。 6、部署自动化,灰度公布越来越受欢迎:服务的部署曾经齐全被自动化工具替换,测试基于部署的环境进行自助测试。同时,灰度公布和A/B测试很好的解决了流程过快导致的全局性危险,降级和回退成为惯例流动。 7、测试人员仍旧必要:服务测试和解决方案测试仍旧很重要,同时也是DevOPS流程中发现问题最多的环节,是DevOps环节中不可或缺的一环。 8、在线测试和度量衰亡:OPS阶段的测试和在线监控越来越被承受,权重减少,比方在线拨测、在线测试、在线度量。 9、平台工具的重要性:DevOps流程环节买通后,更加依赖平台工具的能力做撑持,比方华为的DevOps平台DevCloud软件开发云、ServiceStage等都提供了很好的流程买通能力,使整个流程得心应手,升高准入门槛。 结语:以上就是DevOps模式下罕用的测试方法和流动,心愿对相干小伙伴的工作带来一些指导意义。下一期,咱们将介绍下具体的DevOps测试技术和测试实际,敬请关注! 点击关注,第一工夫理解华为云陈腐技术~

November 5, 2020 · 1 min · jiezi

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

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

November 4, 2020 · 1 min · jiezi

关于测试:接口测试apipostjmeter和python脚本

一.什么是接口接口就是外部模块对模块,内部系统对其余服务提供的一种可调用或者连贯的能力的规范,就好比usb接口,他是零碎向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的,咱们还的对这个接口怎么进行传输进行进行一些设置和定义。开发所谓的接口是模块模块之间的一种连贯,而测试眼中的接口是一种协定(对接口的性能的一种定义) 二、如何进行接口测试1.应用工具进行接口测试 如:apipost、jmeter等工具进行接口测试。 apipost这款接口测试工具,次要针对于接口验证和接口文档生成。apipost这款接口测试工具,是一款很轻便的接口验证工具,能够通过输出申请办法、url、参数间接进行接口申请拜访,验证接口是否开明,还能够查看返回的响应值查看接口开发是否失常。依据这些接口验证信息,间接能够生成在线文档和离线版的word文档。是一款很棒的接口测试和接口文档生成工具,又不像swagger生成的接口文档都是英文的浏览起来也不太不便。apipost还具备协同工作,能够很无效的实现前端的接口联调。 jmeter能够进行接口测试和性能测试,然而对于做单纯的接口测试jmeter操作起来没有apipost应用起来不便。jmeter重点在于压力测试,稳定性测试和负载测试。针对于接口和程序的稳定性设计的一块以软件性能为主接口测试为辅的接口测试工具。 2.脚本进行接口测试 个别应用的python+requests进行接口测试。实现接口的原理和接口测试工具一样。还是通过url、参数和申请办法进行的接口测试。 调用requests和json,因为参数个别是通过json格局传递的。 这就是接口测试次要的两种实现的形式了,工具应用起来比通过脚本进行接口测试简略的多。所有倡议初学接口测试的人应用apipost等测试工具进行接口测试。 工具下载地址: ApiPost - 可间接生成文档的API调试、管理工具

November 4, 2020 · 1 min · jiezi

关于测试:接口测试apipostjmeter和python脚本

一.什么是接口接口就是外部模块对模块,内部系统对其余服务提供的一种可调用或者连贯的能力的规范,就好比usb接口,他是零碎向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的,咱们还的对这个接口怎么进行传输进行进行一些设置和定义。开发所谓的接口是模块模块之间的一种连贯,而测试眼中的接口是一种协定(对接口的性能的一种定义) 二、如何进行接口测试1.应用工具进行接口测试 如:apipost、jmeter等工具进行接口测试。 apipost这款接口测试工具,次要针对于接口验证和接口文档生成。apipost这款接口测试工具,是一款很轻便的接口验证工具,能够通过输出申请办法、url、参数间接进行接口申请拜访,验证接口是否开明,还能够查看返回的响应值查看接口开发是否失常。依据这些接口验证信息,间接能够生成在线文档和离线版的word文档。是一款很棒的接口测试和接口文档生成工具,又不像swagger生成的接口文档都是英文的浏览起来也不太不便。apipost还具备协同工作,能够很无效的实现前端的接口联调。 jmeter能够进行接口测试和性能测试,然而对于做单纯的接口测试jmeter操作起来没有apipost应用起来不便。jmeter重点在于压力测试,稳定性测试和负载测试。针对于接口和程序的稳定性设计的一块以软件性能为主接口测试为辅的接口测试工具。 2.脚本进行接口测试 个别应用的python+requests进行接口测试。实现接口的原理和接口测试工具一样。还是通过url、参数和申请办法进行的接口测试。 调用requests和json,因为参数个别是通过json格局传递的。 这就是接口测试次要的两种实现的形式了,工具应用起来比通过脚本进行接口测试简略的多。所有倡议初学接口测试的人应用apipost等测试工具进行接口测试。 工具下载地址: https://www.apipost.cn/?dt=20201103

November 3, 2020 · 1 min · jiezi

关于测试:10个自动化测试框架测试工程师用起来

摘要:疾速实现品质是必要的,因而质量保证失去了很多关注。为了满足卓越的品质和更快的上市工夫的需要,自动化测试将被优先思考。对于微型、小型和中型企业(SMEs)来说,自动化本身的测试过程是十分必要的,而最要害的方面是抉择正确的自动化测试框架。软件行业正迈向自主、疾速、高效的将来。为了跟上这个高速后退的生态系统的步调,必须放慢应用程序的交付工夫,但不能以就义品质为代价。疾速实现品质是必要的,因而质量保证失去了很多关注。为了满足卓越的品质和更快的上市工夫的需要,自动化测试将被优先思考。对于微型、小型和中型企业(SMEs)来说,自动化本身的测试过程是十分必要的,而最要害的方面是抉择正确的自动化测试框架。 什么是自动化测试框架?自动化测试框架是为自动化测试脚本提供执行环境的脚手架。框架为用户提供了各种劣势,帮忙他们无效地开发、执行和报告自动化测试脚本。它更像是一个专门为自动化组织的测试而创立的零碎。简而言之,咱们能够说框架是各种指导方针、编码标准、概念、过程、实际、我的项目档次、模块化、报告机制、测试数据注入等因素的建设性混合,以此撑持自动化测试。因而,用户在自动化应用程序以利用各种生产性后果时能够遵循这些领导准则。 这些劣势能够是不同的模式,如易于编写脚本、可伸缩性、模块化、可了解性、过程定义、可重用性、老本、保护等。因而,为了可能取得这些益处,倡议开发人员应用一个或多个自动化测试框架。此外,当有一群开发人员在同一个应用程序的不同模块上工作时,以及当咱们心愿防止每个开发人员实现本人的自动化办法的状况下,须要一个对立的规范测试自动化框架。 自动化测试框架的类型市场上的自动化测试框架可能因反对不同的关键因素(如可重用性、易维护性等)而有所不同。如以下几种类型: ●基于模块的测试框架●测试库架构框架●数据驱动测试框架●关键字驱动测试框架●混合测试框架●行为驱动开发框架 自动化测试框架的劣势除了自动化测试所需的起码的手动干涉外,应用测试自动化框架还有许多长处:●更快的上市工夫:通过容许测试用例的继续执行,应用一个好的测试自动化框架有助于缩小应用程序的上市工夫。一旦自动化,测试库的执行将比手动测试更快,运行工夫也更长久。●晚期缺点检测:对于测试团队来说,软件缺陷的文档记录变得相当容易。它进步了总体开发速度,同时确保了跨区域的正确性能。问题发现的越早,解决老本就越低,采纳自动化测试框架的效益也就越高。 ●进步测试效率:测试占据了整个开发生命周期的重要局部。即便是总体效率的最轻微的改良也会对我的项目的整个工夫框架产生微小的影响。只管最后的设置工夫较长,但自动化测试最终所占用的工夫要少得多。它们实际上能够在无人值守的状况下运行,在过程的最初时刻对后果进行监督。 ●更高的投资回报率:尽管最后的投资可能较高,但自动化测试能够长期为组织节俭收入。这是因为运行测试所需的工夫缩小,从而导致工作品质更高。这反过来升高了公布后的故障概率,从而升高了我的项目老本。 ●更高的测试覆盖率:在自动化测试中,能够对应用程序执行更多的测试,这将带来更高的测试覆盖率。减少测试覆盖率能够测试更多的个性和应用程序的品质。 ●自动化测试的可重用性:在测试自动化中,测试用例的重复性能够帮忙软件开发人员评估程序的反馈,以及绝对简略的设置配置。自动化测试用例能够通过不同的办法来应用,因为它们是可重用的。 十大自动化测试框架1.机器人框架如果是心愿在测试自动化工作中应用python测试自动化框架,Robot框架是最佳抉择。 Robot框架基于Python,但也能够应用Jython(Java)或IronPython(.NET)。Robot框架应用关键字驱动的办法来简化测试的创立。Robot框架还能够测试MongoDB、FTP、Android、Appium等。它有许多测试库,包含Selenium WebDriver库和其余有用的工具。它有很多API来帮忙它尽可能地扩大。Robot框架应用的关键字办法对于那些曾经相熟其余基于供应商的关键字驱动的测试工具的测试人员十分有用,这使得他们更容易过渡到开源。 2.网络驱动(WebDriverIO)WebdriverIO是一个基于Node.js的自动化测试框架。它有一个集成的测试运行器,能够为web应用程序和本地挪动利用程序运行自动化测试。同时,它能够在WebDriver协定和Chrome Devtools协定上运行,使它对基于Selenium WebDriver的跨浏览器测试或基于Chromium的自动化都无效。因为WebDriverIO是开源的,你能够失去一堆插件来满足你的自动化需要。“Wdio装置向导”使安装简单和容易。 3.CitrusCitrus是一个开源框架,您能够应用它自动化任何消息传递协定或数据格式的集成测试。对于任何类型的消息传递,如REST、HTTP、SOAP或JMS,Citrus框架将适宜测试消息传递集成。如果您须要与用户界面交互,而后验证后端流程,那么能够将Citrus与Selenium集成。例如,如果您必须单击“发送电子邮件”按钮并在后端验证电子邮件是否已收到,柑橘能够接管此电子邮件或UI触发的JMS通信,并验证后端后果,所有这些都在一个测试中实现。 4.Cypress Cypress是一个以开发人员为核心的测试自动化框架,它使测试驱动开发(TDD)成为开发人员的事实。它的设计准则是可能打包和捆绑所有货色,使整个端到端测试体验欢快和简略。 Cypress的架构与Selenium不同;Selenium WebDriver近程运行在浏览器内部,而Cypress运行在浏览器外部。这种办法有助于了解浏览器外部和内部产生的所有,从而提供更统一的后果。它不须要您解决对象序列化或在线协定,同时为您提供对每个对象的本机拜访。当您将应用程序拉入浏览器时,Cypress能够同步告诉您浏览器内产生的每一件事件,这样您就能够本机拜访每个DOM元素。它还使得在应用程序中搁置调试器变得很容易,这反过来又使开发人员工具的应用变得更容易。 5.Selenium web应用程序最风行的开源测试自动化框架之一。Selenium还能够作为许多其余测试工具的根底,因为它具备跨平台和跨浏览器的性能。Selenium反对多种编程语言,如Java、C#、PHP、Python、Ruby等。它易于保护,因为它领有最大的在线反对网络之一。Selenium能够通过宽泛的库和api进行高度扩大,以满足每个人的需要和需要。Selenium是测试人员的首选,因为它能够编写更高级的测试脚本来满足各种复杂程度。它为测试编写提供了一个回放工具,无需学习特定的脚本语言。 6. Cucumber 它是一个跨平台的行为驱动开发(BDD)工具,用于编写web应用程序的验收测试。Cucumber能够疾速且容易地设置执行,并容许在测试中重用代码。它反对Python、PHP、Perl、.NET、Scala、Groovy等语言,以易于浏览和了解的格局实现函数验证的自动化。一个好的个性是标准和测试文档都被上传到一个最新的文档中。Cucumber使不相熟测试的业务涉众更容易浏览代码,因为他们能够轻松地浏览代码,因为测试报告是用商业可读的英语编写的。该代码能够与Selenium、Watir、Capybara等其余框架一起应用。 7.Gauge 它是一个开源工具无关的测试自动化框架,实用于Mac、Linux和Windows。从事TDD和BDD工作的人会喜爱Gauge专一于创立动静/可执行文档。标准——量规自动化测试是在现有的ide(如visualstudio和Eclipse)中应用C、Java和Ruby的提价语言编写的。Gauge的性能也能够通过对插件的反对进行扩大。它是作为一个BYOT(自带工具)框架开发的。因而,您能够应用Selenium,也能够应用任何其余工具来驱动测试UI或API测试。如果你想要一个可读的非BDD办法来实现自动化,你应该试试Gauge。 8.Serenity 如果您正在寻找一个与cumber和JBehave等行为驱动开发(BDD)工具集成的基于Java的框架,那么Serenity可能是适宜您的工具。它的目标是使编写自动化验收和回归测试更容易。它还容许您将测试场景放弃在较高级别,同时在报告中包容较低级别的实现细节。 Serenity充当Selenium WebDriver和BDD工具的包装器。它形象了许多您有时须要编写的样板代码,这使得编写BDD和Selenium测试变得更容易。Serenity还提供了大量的内置性能,例如解决并行运行的测试、WebDriver治理、截屏、治理步骤之间的状态、促成Jira集成,所有这些都不须要编写一行代码。 9.CarinaCarina应用风行的开源解决方案构建,如Appium、TestNG和Selenium,这缩小了对特定技术栈的依赖。您能够测试挪动应用程序(本机、web、混合)、web应用程序、REST服务和数据库。Carina框架反对MySQL、sqlserver、Oracle、PostgreSQL等不同类型的数据库,提供了MyBatis ORM框架实现DAO层的惊人体验。它反对所有风行的浏览器和挪动设施,并且在IOS/Android之间重用测试自动化代码高达80%。API测试基于Freemarker模板引擎,它在生成REST申请方面提供了极大的灵活性。Carina是跨平台的,能够在Unix或Windows操作系统上轻松地执行测试。 10.ZTFZentao Testing Framework,简称ZTF,是一款开源自动化测试治理框架。与市面上已有的自动化测试框架相比,ZTF更聚焦于自动化测试的治理性能。ZTF提供了自动化测试脚本的定义、治理、驱动、执行后果的回传、Bug的创立以及和其余自动化测框架的集成。ZTF应用go语言开发,能够反对各种平台。ZTF反对常见的编程语言,您能够抉择您喜爱用的语言来开发自动化测试脚本。通过禅道自研的ZTF自动化测试工具,可很好地驱动8种单元测试框架、3种自动化测试框架来执行测试,并把最终后果回传给禅道,进行对立的报告展现。禅道ZTF买通了项目管理和继续集成工具之间的沟壑,贯通继续集成、继续测试、继续部署等DevOps生命周期的不同阶段。 总结以上列出的工具大多是已成熟且风行的,它们应用AI/ML提供了测试自动化性能,以解决组织当初面临的疾速交付及品质的挑战。此列表还包含提供API和服务测试的工具,这些工具对于胜利的DevOps转换至关重要。人工智能、无代码、大数据和物联网测试等新兴技术正在进步测试自动化的效率,同时也为现有的工具和新的参与者发明了机会,使其可能为测试社区带来价值。 自动化工具的抉择不仅应该满足以后需要,还应该关注潜在的趋势和改良。无效的测试自动化工具应该反对根本的优化、数据生成、更智能的解决方案和剖析。到目前为止,组织中的测试自动化程度很低,在14%到18%之间。然而组织正在致力将自动化覆盖率进步到80%。API和服务测试也是将来倒退的趋势。 点击关注,第一工夫理解华为云陈腐技术~

October 20, 2020 · 1 min · jiezi

关于测试:邂逅-CODING-墨刀测试团队实现质的飞跃

墨刀在互联网江湖闯荡的敌人们,谁能没几个趁手的兵器,有的人是 Keynote 走天下,有的人与 XMind 生死相依。而在产品策划工作者的圈子,简直人人都据说过墨刀(如果您之前没听说过,没关系,您当初曾经据说了)。截至 2020 年 9 月,墨刀平台的注册用户冲破 190 万,付费企业数量达到 1.5 万家。 墨刀旗下有四个工具,别离为产品原型工具、矢量设计工具、流程图、思维导图(陆续上线中),每个工具软件都弱小易用,且全方位反对团队协同。操作简便,仅需拖拽连线,就能让产设研疾速高效地实现产品原型和交互设计。 如果须要生存的磨难,无妨试试用 Excel 进行测试治理墨刀的测试负责人通知咱们:墨刀始终致力于做一个“好工具”,这要求墨刀不单单要确保工具的稳固与晦涩,还要提供丰盛的组件以及页面来满足更多用户的需要。作为测试团队,要尽可能守好品质门禁,认真地验证每个应用场景,以确保给用户提供良好的原型设计体验。随着墨刀业务的飞速发展,测试工作在逐步减轻,应用 Excel 进行测试治理也越来越吃力: 首先,应用 Excel 编辑、保护用例极为不不便,特地是波及构造模块操作时,就更加简单。在 Excel 中各种拷贝移动,很容易错位。到了评审用例阶段,须要给多位评审人员群发文件链接,一一记录评审意见,再勤勤恳恳把评审意见汇总好。在执行用例时,不同的测试阶段,须要不同的测试粒度,基于 Excel 很难进行用例抽出以及人员调配。终于测试结束后,量化测试后果也很艰难:测试进度、缺点数量、任务分配是否平衡、测试工作执行的耗时等等,要基于 Excel 统计这些数据,难上加难。邂逅 CODING,测试治理恍然大悟墨刀提倡和推崇的工作理念是「自在、高效和功效」。即便服务着百万用户,团队也放弃着极为精悍的人数(2019 年时团队只有 22 人),这得益于墨刀团队对效率的极致摸索。 在提效摸索中,墨刀邂逅了 CODING,本来繁琐的手工工作流被清晰易用的在线测试治理代替。墨刀测试负责人和咱们细细分享了他对于 CODING 测试治理的感触,很多之前本地操作的问题在应用 CODING 之后迎刃而解: 1. 清晰的树形用例构造用例治理的构造清晰明确,编写与保护用例非常轻松,用例可灵便重复使用。在执行用例相干的操作时,单条用例都能够残缺展现,更直观。 2. 易用的用例评审测试人员总是心愿用例尽可能全面笼罩用户应用形式,这时候须要多方人员从不同角度进行评审。用 CODING 进行用例评审时,多条评审意见可同时展现,还能够间接批改用例,这样测试人员能够及时补充,缩小脱漏。???? 3. 粗疏的测试计划在 CODING 上负责人可创立不同的测试计划,抉择不同的用例并调配成员;每个打算的用例执行进度及通过率实时量化。跟踪测试进度变得非常简单,不用重复轮询各个团队成员进度。测试人员执行用例时,单条用例还能够指定单个步骤的执行状况。这种粗疏的设计让测试人员重测时更有针对性,和开发人员沟通缺点也更加高效。???? 4. 疾速的测试报告CODING 可依据测试计划执行后果一键生成测试报告,用来展现成绩:简略、疾速、好看 。???? 磨刀不误砍柴工,“慢一点”让团队跑得更快墨刀测试负责人总结到:“清晰、易用、直观,这是 CODING 测试治理给我带来的最大感触,CODING 把工作环节中重要的信息都帮我出现了进去。应用 CODING 在线治理用例,咱们的测试管理效率至多晋升了 50% 、工作后果也有了清晰的量化展现、还能够防止机器问题失落数据。我晓得 CODING 除了测试治理合作还有一整套软件研发管理工作流,咱们会持续摸索,心愿可能给团队带来更多价值。” 点击立刻体验弱小在线测试治理性能!

October 16, 2020 · 1 min · jiezi

关于测试:接口测试-接口测试入门

一.什么是接口 接口测试是测试零碎组件间接口的一种形式,接口测试次要用于检测内部零碎与零碎之间以及外部各个子系统之间的交互点。就好比usb接口,他是零碎向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的,咱们还的对这个接口怎么进行传输进行进行一些设置和定义。开发所谓的接口是模块模块之间的一种连贯,而测试眼中的接口是一种协定(对接口的性能的一种定义)。 二.接口的品种和分类 次要蕴含三种测试: Web接口测试,利用程序接口测试,数据库测试。内部接口,外部接口:下层服务于上层服务,同级服务。常见的接口分类http:get,post,delete,put 零碎对外的接口:比方你要从别的网站或服务器上获取资源或信息,他人必定不会把数据库共享给你,他只能给你提供一个他们写好的办法来获取数据,你援用他提供的接口就能应用他写好的办法,从而达到数据共享的目标。 程序外部的接口:办法与办法之间,模块与模块之间的交互,程序外部抛出的接口,比方bbs零碎,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供外部零碎进行调用。 实际上意义就是UI界面到数据库之间,数据流通过的所有过程。 LAMP(Linux Apache MySQL PHP)/LNMP(Linux Nginx MySQL PHP):只有 Web 服务器,没有应用服务器。 Web 浏览器 到 Web 服务器: Web 接口测试,测试 申请和响应。 Web 服务器 到 数据库服务器:利用接口测试,测试 PHP。 Linux / Windows + Java / Asp.net(C#) + Apache/Nginx + Tomcat/IIS + MySQL/Oracle/SQL server Web 浏览器 到 Web 服务器: Web 接口测试,测试 申请和响应。 Web 服务器 到 应用服务器:契约服务,WebService,JavaAPI,WebAPI,WCF,.net Remoting:测试 Java 或者 C# 解决业务逻辑(JavaEE/ ASP.NET MVC),艰深讲测试 Service。 应用服务器 到 数据库服务器:数据处理服务,测试 Java 或者 C# 解决数据,把数据读取到数据库。 ...

October 9, 2020 · 1 min · jiezi

关于测试:测试流程

word,原型图 excel立项(确定我的项目要干啥)-----需要文档-----------------需要评审------------------ ---------------------具体设计(数据库设计)-----------测试用例---- --------用例评审(批改。。。)------------------------编码-------- --------部署环境----------------单元测试(办法)-----------集成测试------ -----功能测试-------bug(治理)---------------测试报告---- ------文档(测试用例测试报告,具体设计,需要文档,war) ------ ---前期线上发现问题(不是特地大的问题)---------回退版本----------- 甲方和乙方领导 (本公司小组人员,项目经理,开发人员,测试人员,需要人员) (本公司小组人员,项目经理,开发人员,测试人员,需要人员) window.linux postman,jmeter 禅道(缺点报告) 测试用例总条数(解决bug,遗留bug) 运维人员依据客户提供问题,提出bug(邮件发送) 以及需要人员探讨

October 6, 2020 · 1 min · jiezi

关于测试:技巧测试时如何获取变量的值

在进行接口测试的时候,有一些参数的值是一个变量值,会依据每一次登录申请之后会扭转。这个变量个别命名为token也有其余的命名,这个变量次要对应的是登录状态,和登录信息。token过期或者更新,就须要从新获取token,不然无奈进行登录之后的操作。 这个就是登录之后,返回的token值。 而后咱们在看看我没有传递token这个参数进行查问操作会怎么样。 申请发送之后,返回给咱们的是code=403,短少token值。所以咱们须要传递token这个值能力实现查问操作。 token这个参数传递过来之后,就实现了查问性能。我这里的token设置的不变,然而个别零碎外面的token会随着登录申请的发送而扭转。如何获取这个变量token,不必随着每次token值扭转而去查问性能接口中去改token这个参数的值。 首先咱们要在这个apipost工具中设置环境。 这就是我设置的环境,而后援用这个test_url,这个是对url的参数化。 这里咱们就援用好了环境和test_url.能够简便咱们输出url,还能够帮咱们辨别开发环境、测试环境和预上线环境。 咱们来援用token值,这里token值在登录性能中,所以咱们要在登录接口页面获取token值,而后别的接口性能页面间接调用就能够了。 在后执行脚本中获取token的值,这句话的意思是设置一个环境变量。变量名叫test_token。使test_token这个值等于response(这个申请)中的json(返回的json数据)中的result中的token。 而后咱们去调用这个test_token 这个token调用的办法和调用环境的办法一样,都是{{}}加名称。这样我如何获取变量token就实现了。 而后咱们这里应用的工具是一款国产接口测试和接口文档生成的工具叫做apipost,感兴趣的人能够下载应用一下。

September 29, 2020 · 1 min · jiezi

关于测试:web自动化测试Firefox安装与配置

web自动化测试—Firefox装置与配置web测试,配置一下环境

September 25, 2020 · 1 min · jiezi

关于测试:音视频测试实战记音视频测试那些事

2020年一开年,疫情打乱了人们的节奏。买货色不能出门了,学校也不开学了,下班也home office了,在这种状况下,直播带货、在线教学、视频会议都被推上了风口浪尖。然而如果直播过程中忽然听不到主播声音或者画面,抑或者声音和画面成果很差,这必定是影响体验的。那么一款产品怎么能力在测试阶段尽可能发现问题和解决问题呢?通过这篇文章,冀望让大家理解到音视频关注的指标,对音视频的评测过程有一个根本的理解。 本文次要从三个方面开展,一是音视频测试的目标,次要说音视频测试能解决的问题,比拟通用;二是从音视频的角度介绍怎么做测试,包含测试维度、评估框架、整体构造和每一部分的具体内容;三是介绍这个框架的组成和施行过程中遇到的问题。 在内容开展之前,先简要介绍一下音视频通话的根本流程: 从这个简图中能够看出,整个流程分为三局部:发送、网络、接管。 发送端各个模块的性能别离是:采集,对应麦克风和摄像头硬件,也有可能是多媒体混音或者屏幕录制的内容;前解决,美颜大家都晓得,3A可能不太熟悉,这里是针对音视频成果做解决的模块。 编码和解码是一对逆过程:编码实现后,打包发送到网络上进行传输,到接收端进行后处理和解码播放。 音视频测试的目标 对音视频通话的流程有了根本理解后,咱们说回为什么要做测试。 这部分其实关系着咱们为什么要做音视频评测以及做了评测后能答复什么问题。大家可能都会收到来自老板的拷问,你感觉这个个性的品质怎么样?能具备上线的条件吗?置信QA同学都碰到过,你可能不是音视频相干的品质保障同学,然而你必定也或多或少遇到过相似的问题。 总的说来是四方面的问题,做的怎么样?有没有进步?进步多少?和竞品差距多少?总结起来是四个字——“知己知彼”,后面三项次要是答复“知己”的问题,最初一项“知彼”,其实也是建设在“知己”的根底之上。 “知己”次要是获取到基线数据,理解以后现状,这块是根底。在版本迭代过程中,基于这个数据来纵向比拟版本间是进步了还是好转了,进步或好转了多少,是版本优化的参考。这些是对本人能力的理解,孙子兵法说,知己知彼屡战屡败,咱们不光要埋头干,还要低头看看路,看看他人做的怎么样,因为最终体现竞争力的还是和竞品之间的差距。当然这里差距蕴含两层意思,正向的差距是劣势,如果是负向的就是要改良了。 对应这些问题,咱们别离须要提供哪些维度的数据作为辅助佐证呢? 要答复这4个问题,对于视频会议,咱们列出了多个维度的评估指标,如上表所示。 会议成果次要从根底成果和其余加强成果两方面来开展,这也是视频会议底层能力的集中体现。根底成果包含稳定性(卡顿,闪退)、清晰度(音画清晰,可懂)和晦涩度(入会工夫过长,提早大,卡顿)等;其余成果次要包含美颜和镜像、背景虚化等,还有像实用性、易用性、性能齐备度等都是间接影响用户体验的点。 除此之外,还有一些影响性能和稳定性的个性如可靠性、安全性、可维护性、可移植性、运行效率、性能的适宜性等,也都对用户体验有着不可漠视的影响,也值得关注。 本文次要针对音视频的成果开展。 如何进行音视频测试 评估维度曾经定好了,那么这些维度的指标怎么去掂量呢?说到评估框架,蕴含了评测的数据分类和汇总,最终从这些数据的演绎和总结去答复后面的问题。 从对应不同的专项来辨别,包含了音频测试、视频测试、QoS测试、性能和兼容性测试。基于这些维度适时地发展竞品比照测试,则能够比拟全面的答复前述4个问题。 音频测试次要分为3块,主观测试、主观测试和POLQA测试。 主观测试次要是主观听,针对音频算法的优化调整,关注单讲、双讲场景下的回声、音量大小以及啸叫等异常现象,还有时延状况,音画同步情况;主观测试和POLQA次要测试记录一些主观指标,如音频参数(码率,时延,音量大小和POLQA分值等),这些维度通常要笼罩不同的网络和业务场景,针对不同的算法调整状况,还要思考对不同设施的笼罩测试。 视频的评估大体也是分为3块,和音频测试相似,次要包含主观测试、主观测试和vMOS,另外针对CoDEC还减少了离线测试。 主观测试包含清晰度和晦涩度,以及时延和音画同步测试。主观参数次要包含视频相干的参数(分辨率、码率、帧率、卡顿统计)以及MOS状况,CODEC离线测试中涵盖了PSNR和SSIM以及现今比拟炽热的VMAF指标。 QoS测试,并非一个独自的评测维度,更多的能够说是一个用户场景的笼罩测试。网络是业务的承载,然而理论用户的网络不可能齐全现实,也没那么坏,最终的测试抓手其实还是音视频的评测指标,以此为根底,笼罩不同的弱网和极其网络,关注音视频成果的同时,关注拥塞管制、带宽探测、以及视频模型之间的配合和调整速度。这一部分输入网络相干的基线和极限能力。 后面提到的音视频评估及QoS评估,最终成果都体现在QoE上。什么叫QoE?说白了就是用耳朵听、用眼看。这部分间接体现在用户体验上,对于实时音视频场景来说,次要包含沟通的实时性也就是端到端时延(端到端时延,首帧工夫)、视频的清晰度和晦涩度、音频的清晰度和晦涩度(对音频的可懂度间接相干)。 人不能总是抬头走路,也要低头看看天,产品也是一样。咱们不光要实现本人的个性性能,也要看看对手们做得怎么样。因为最终决定产品好不好卖,客户买不买账,竞争力才最要害。 很多时候,如果明确的验收规范不太容易给出,同指标和竞品的比照论断是个不错的抉择。如果能战败对手,还是绝对胜利的。如果是落了上风,那要考虑一下如何优化了。事件到这里,看起来都很顺利了,测试的框架都完备了,间接补充数据不就能够了吗?然而实际上还有一些问题须要解决。 评测的维度有了,数据指标也完备了,接下来就是收集数据了,要收集数据就要筹备一套稳固的测试环境。测试环境其实就是模仿了一套端到端的实时音视频通信零碎,蕴含采集,蕴含网络,蕴含渲染和显示,也蕴含观察者(其实就是测试者),这其中的模块都会引入测试误差,这就是测试过程中的坑。 先说采集。同款摄像头几种不同摆放地位的视频画面无奈雷同,这只是采集引入误差的一种,其余如摄像头采集卡顿也会对最终的用户体验评估造成较大影响,导致无奈确认是因为网络导致的卡顿还是采集的起因。 摄像头的不同摆放地位,对焦状态以及光线状况,摄像头的视角和景深对画面的范畴和渲染体现影响最大。 采集带来的体验成果方面的好转包含如下: 1采集卡顿; 2采集变色和含糊; 3过曝等景象导致的图像渐变。 上图所示是不同型号摄像头靠近雷同的摆放地位的画面视角差别。 网络伤害后的视频和摄像头采集稳固的画面比照,阐明卡顿不是因为摄像头引入,而是网络抗性有余导致。提到网络抗性,网络的不同拓扑构造和稳定都会影响测试后果。网络本身的丢包和抖动都会引入额定的体验回退,也不利于问题的跟踪和复现,所以稳固对立的弱网模仿环境尤为重要。 基于此,引入了基于TC的弱网模仿计划(如下图所示)。 显示引入的误差次要因为显示设施的差别导致,从这个图中能够显著的看出不同显示器上同一幅图像的色温差异很大。 音视频最终的成果体现在端到端的体验上,端到端的体验最终必定是体现在人的主观感触上,一千个读者心中有一千个哈姆雷特。观测者的集体视角,过后所处的环境以及集体的情绪稳定都会影响到主观成果的评判。 基于此,咱们思考把波及到主观评估的场景都录一份比照(新老版本/竞品比照)的音视频数据,留待主观评测打分用,基于自验的打分平台,不便的进行线上打分。 基于以上测试框架以及问题,咱们搭建了以下评测框架,打消了可能引入误差的一些模块。 1第一局部,摄像头(麦克风)+复用器,实现了同一路摄像头(麦克风)采集内容被多个PC设施复用的性能,这样每个PC上输出的摄像头内容齐全一样,也齐全同步; 2接收端的显示通过4K视频合路设施投射到一台大屏4K电视上,同时能够通过内部存储保留一份以供备份和后续的主观MoS环节; 3两头的网络和媒体服务器,把他们搭成公有的环境,独自一套测试环境应用,不受进口网络的影响,不受实验室到媒体服务器门路状况的影响,这套框架老本低廉,性价比较高。 置信这些工作做下来,从评测的维度登程,曾经可能很好地答复老板们提出来的问题了。

September 25, 2020 · 1 min · jiezi

关于测试:项目测试流程

研发我的项目中测试人员对产品的测试工作并非简略的用例执行工作,而是要在整个我的项目中均贯通测试的想法,并且疏导开发、帮助需要经理实现客户称心的产品。咱们已最常见的V模型进行剖析,测试人员如何在各个阶段进行测试流动 1、软件开发V模型阶段步骤:客户需要剖析、软件需要剖析、概要设计、具体设计、软件编码、单元测试、集成测试、零碎测试、验收测试。 2、测试人员次要工作及染指工夫测试人员在我的项目中的次要工作内容:需要剖析、测试设计、用例执行和回归、Bug定位 A、需要剖析需要分析阶段次要流程:需要剖析、需要提取、需要评审、更新后的测试需要跟踪。参加总流程的两个阶段:客户需要剖析、软件需要剖析 B、测试设计测试设计阶段次要流程:测试剖析、测试设计、用例设计。参加总流程的阶段:概要设计、具体设计、软件编码 C、用例执行和回归用例执行和回归阶段次要包含:用例执行规范、Bug回归规范、补充用例、品质剖析;参加总流程的阶段:单元测试、集成测试、零碎测试、验收测试。 D、Bug定位Bug定位的定位形式次要:前端定位、后端定位、非技术办法、总结下排除思路;参加总流程的阶段:单元测试、集成测试、零碎测试、验收测试。

September 21, 2020 · 1 min · jiezi

关于测试:分享apipost怎样模拟手机发送请求

一、ApiPost中有专门针对于模拟手机申请发送的参数 首先咱们新建一个接口,拜访www.baidu.com而后点击发送 而后咱们在创立一个接口,这个是拜访挪动版的www.baidu.com不过这里须要设置一下头部参数user-agent 在抉择参数值,这里ApiPost本人给我了两个参数值 Android版本:Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) Chrome/57.0.2987.132 Mobile Safari/537.36 iOS版本:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 这样就实现了挪动端的接口测试了 二、设置User Agent的起因 Web端和挪动端它们发送申请的时候申请是不一样的,如何能力更好的去实现挪动端的接口测试,就须要去理解User Agent。 当初很多网站都同时有web端和挪动端,然而用web浏览器和挪动端浏览关上它们展现的界面并不是一样的。不一样的起因是User Agent的不同。 User Agent···中文含意用户代理,简称为UA。它是一个非凡字符串头,使得服务器可能辨认客户应用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 Web端罕用的User Agent:1.Chrome目前应用的User Agent:MAC:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 Windows:Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 ...

September 15, 2020 · 2 min · jiezi

关于测试:测试发布文章

测试第一章1、第一大节垂直分步程度分步

August 29, 2020 · 1 min · jiezi

关于测试:测试用例难写来试试-Sharness

简介: Sharness 是一个用 Shell 脚本来编写测试用例的测试框架。本文将具体介绍 Sharness 的构造及测试用例的编写格局,以及语法标准和技巧,教大家如何应用 Sharness 编写测试用例,同时还分享了 Sharness 的扩大性能和我的项目实战。 参加过 Git 我的项目的测试用例开发,为其测试框架的简洁、高效而折服。已经尝试将 Git 测试用例用于其余我的项目:《复用 git.git 测试框架》[1]。不过从 Git 我的项目中剥离测试用例框架还是挺麻烦的。 一次偶尔的机会发现曾经有人(Christian Couder:Gitlab 工程师,Git我的项目的领导委员会成员之一)曾经将 Git 的测试用例框架剥离进去, 成为独立的开源我的项目 Sharness。 有了 Sharness,写测试用例不再是苦差事。 一 Sharness 是什么?Sharness 是一个用 Shell 脚本来编写测试用例的测试框架。能够在 Linux、macOS 平台运行测试用例。测试输入合乎 TAP(test anything protocol),因而能够用 sharness 本身工具或 prove 等 TAP 兼容测试夹具(harness)运行。是由Junio在2005年为Git我的项目开发的测试框架,由 Christian Couder (chriscool) 从 Git 中剥离为独立测试框架。地址:https://github.com/chriscool/sharness二 Sharness 测试框架的长处简洁如果要在测试用例中创立/初始化一个文件(内容为 “Hello, world.”), 看看 sharness 实现起来有如许简略: cat >expect <<-EOFHello, world.EOF如果要对某利用(hello-world)的输入和预期的 expect 文件进行比拟, 雷同则测试用例通过,不同则展现差别。测试用例编写如下: ...

August 25, 2020 · 6 min · jiezi

关于测试:测试面试题集锦五-自动化测试与性能测试篇附答案

简介: 本系列文章总结演绎了一些软件测试工程师常见的面试题,次要来源于集体面试遇到的、网络收集(欠缺)、工作日常探讨等,分为以下十个局部,供大家参考。如有谬误的中央,欢送斧正。有更多的面试题或面试中遇到的坑,也欢送补充分享。心愿大家都能找到称心的工作,共勉之!~ 本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群。本系列文章总结演绎了一些软件测试工程师常见的面试题,次要来源于集体面试遇到的、网络收集(欠缺)、工作日常探讨等,分为以下十个局部,供大家参考。如有谬误的中央,欢送斧正。有更多的面试题或面试中遇到的坑,也欢送补充分享。心愿大家都能找到称心的工作,共勉之!~ 软件测试工程师面试题测试常见问题与流程篇测试工具篇计算机网络常识与数据库篇Linux 与 Python 编程技能篇自动化测试与性能测试篇软素质篇(10 大灵魂拷问)与反诘面试官篇自动化测试相干蕴含 Selenium、Appium 和接口测试。1. 自动化代码中,用到了哪些设计模式?单例模式工厂模式PO模式数据驱动模式2. 什么是断言?查看一个条件,如果它为真,就不做任何事,用例通过。如果它为假,则会抛出 AssertError 并且蕴含错误信息。3. UI 自动化测试中,如何做集群?Selenium Grid,分布式执行用例Appium 应用 STF 治理多设施Docker+K8S 治理集群4. 怎么对含有验证码的性能进行自动化测试?万能验证码测试环境屏蔽验证其余操作不举荐5. 如何优化和进步 Selenium 脚本的执行速度?尽量应用 by_css_selector() 办法by_css_selector() 办法的执行速度比 by_id() 办法的更快,因为源码中 by_id() 办法会被主动转成 by_css_selector() 办法解决;应用期待时,尽量应用显示期待,少用 sleep(),尽量不必隐式期待;尽量减少不必要的操作:能够间接拜访页面的,不要通过点击操作拜访;并发执行测试用例:同时执行多条测试用例,升高用例间的耦合;有些页面加载工夫长,能够中断加载;6. 接口测试能发现哪些问题?能够发现很多在页面上操作发现不了的 bug;查看零碎的异样解决能力;查看零碎的安全性、稳定性;前端轻易变,接口测好了,后端不必变;能够测试并发状况,一个账号,同时(大于 2 个申请)对最初一个商品下单,或不同账号,对最初一个商品下单;能够批改申请参数,冲破前端页面输出限度(如金额);7. Selenium 中暗藏元素如何定位?如果单纯的定位的话,暗藏元素和一般不暗藏元素定位没啥区别,用失常定位办法就行了(这个很多面试官也搞不清楚);元素的属性暗藏和显示,次要是 type="hidden" 和 属性来管制的,接下来在元素属性外面让它暗藏,暗藏元素能够失常定位到,只是不能操作(定位元素和操作元素是两码事,很多初学者傻傻分不清楚),操作元素是 click,clear,send_keys 这些办法;JS 操作暗藏元素;8. 如何判断一个页面上元素是否存在?办法一:用 try…except…办法二:用 elements 定义一组元素办法,判断元素是否存在,存在返回 True,不存返回 False办法三:联合 WebDriverWait 和 expected_conditions 判断(举荐)9. 如何进步脚本的稳定性?不要右键复制 xpath(十万八千里那种门路,必定不稳固),本人写相对路径,多用 id 为节点查找;定位没问题,第二个影响因素那就是期待了,sleep 期待尽量少用(影响执行工夫);定位元素办法从新封装,联合 WebDriverWait 和 expected_conditions 判断元素办法,本人封装一套定位元素办法;10. 如何定位动静元素?动静元素有 2 种状况,一个是属性动静,比方 id 是动静的,定位时候,那就不要用 id 定位就是了;还有一种状况动静的,那就是这个元素一会在页面上方,一会在下方,飘忽不定的动静元素,定位办法也是一样,按 f12,依据元素属性定位(元素的 tag、name的步调属性是不会变的,动的只是 class 属性和 styles 属性);11. 如何通过子元素定位父元素应用element.parent办法12. 平时遇到过哪些问题? ?如何解决的能够把平时遇到的元素定位的一些坑说下,而后说下为什么没定位到,比方动静 id、有 iframe、没加期待等因素;13. 一个元素明明定位到了,点击有效(也没报错),如果解决?应用 JS 点击,Selenium 有时候点击元素是会生效;14. 测试的数据你放在哪?对于账号密码,这种管全局的参数,能够用命令行参数,独自抽出来,写的配置文件里(如 ini);对于一些一次性耗费的数据,比方注册,每次注册不一样的数,能够用随机函数生成;对于一个接口有多组测试的参数,能够参数化,数据放 YAML,Text,JSON,Excel 都能够;对于能够重复应用的数据,比方订单的各种状态须要造数据的状况,能够放到数据库,每次数据初始化,用完后再清理;对于邮箱配置的一些参数,能够用 ini 配置文件;对于全副是独立的接口我的项目,能够用数据驱动形式,用 excel/csv 治理测试的接口数据;对于大量的静态数据,比方一个接口的测试数据,也就 2-3 组,能够写到 py脚本的结尾,十年八年都不会变更的;15. 什么是数据驱动,如何参数化?参数化的思维是代码用例写好了后,不须要改代码,只需保护测试数据就能够了,并且依据不同的测试数据生成多个用例;16. 其余接口都须要登录接口的信息,怎么去让这个登录的接口只在其余接口调用一次?应用单例模式应用自定义缓存机制应用测试框架中的 setup 机制pytest 中 fixture 机制17. 接口产生的垃圾数据如何清理?造数据和数据清理,需用 python 连数据库了,做增删改查的操作测试用例前置操作,setUp 做数据筹备后置操作,tearDown 做数据清理18. 怎么用接口案例去笼罩业务逻辑?思考不同的业务场景,一个接口走过的流程是什么样的,流程的逻辑是什么样的,什么样的参数会有什么样的后果,多场景笼罩;性能篇1. 性能测试指标包含哪些最大并发用户数,HPS(点击率)、事务响应工夫、每秒事务数、每秒点击量、吞吐量、CPU 使用率、物理内存应用、网络流量应用等。前端需次要关注的点是: ...

August 14, 2020 · 1 min · jiezi

关于测试:优质单元测试的十大标准你有遵循吗

优良的测试套件能够让人在更改代码时感到平安,从而使工作更为轻松;蹩脚的测试套件会让人痛苦不堪,且节约大量工夫。编写好的、可保护的单元测试存在着一些特定规定,可使单元测试品质更高、更具效率。 1、尽可能简短因为咱们测试的是由单个代码单元交付的单个性能,所以测试应该相当短是有意义的。至于具体须要多短就取决于多种因素,但通常不会超过几行代码。 2、切忌自我反复良好的编码实际利用于测试代码的形式与利用于生产代码的形式雷同。从实践经验上来说,单元测试中最容易违反的规定之一是“Dont Repeat Yourself”。有些人甚至宣称单元测试基本不应该共享任何代码。那是全然的废话。当然,咱们心愿尽可能放弃测试的可读性,然而复制粘贴不是解决方案。 3、抉择组合而非继承一旦理解了后面的两点,你可能会想要为本人的测试创立一些蕴含罕用代码的基类。如果的确如此,请立马进行!这样的基类就像磁铁一样吸引着各种不相干的共享代码,并且增长十分迅速,直到接管你的我的项目、迭代、产品……为保障这些不被它逐渐侵蚀,务必应用组合形式! 4、使其速度更快单元测试简直能够始终运行。出于这个起因,肯定要模仿内部依赖项和其余可能会减慢测试速度的货色,这通常是数据库、内部零碎或文件操作。同时,不要做得太过——齐全隔离被测单元也不是一个好的解决方案。 5、使其具备确定性每当听到有人领有了95%的可用测试套件,并认为这曾经足够好到能够投入生产时,我总是啼笑皆非,因为单元测试应该必须保障100%可工作性。只有100%通过测试才意味着一切正常(对于单元,您还须要其余类型的测试)。如果你的单元测试看起来不牢靠,请确保找到根本原因并尽快修复它。 6、不要为测试标注“可疏忽”在第四条和第五条的根底上,必须要提及的是给测试增加“可疏忽”正文,这并不是修复测试套件的办法,反而会使测试套件更加不牢靠,因为它并不能防止回归Bug之类的问题。 7、测试你的测试这一条不是说为你的测试编写测试,而是指进行如渐变测试、测试驱动开发或频繁地在代码库中“随机更改货色”这样的实际,以查看是否有测试失败。还能够常常做一些脑力练习,试图找出本人的测试中无奈发现的对代码的潜在更改。 8、正当命名测试只管我不置信每个我的项目都应该为测试应用一些花哨的命名约定,但正当的命名可能通过只读失败的测试用例的名称来判断代码的哪一部分被毁坏了。 9、每个测试仅蕴含一个逻辑断言为了实现仅仅通过读取失败测试的名称就能够判断出谬误的指标,须要的不仅仅是好的名称。一个测试查看也必须限度一些事件。因而,一个好的单元测试应该只蕴含一个逻辑断言,即只查看被测试方法的一个输入/副作用。 10、设计你的测试这是一个元技巧,它涵盖了本文中所有其余技巧以及在这里没有提到的技巧。看待测试要像看待/编写代码一样审慎。思考良好的设计准则和指标,如测试代码和生产代码之间的低耦合,以及代码的反复、死代码等。 请记住,一个好的测试套件能够使您在更改和重构代码时感到平安,从而使您的工作更加轻松,而蹩脚的测试套件则会使您痛苦不堪,节约大量的工夫,并使代码简直不可能更改。 以上十个规范不肯定须要全副遵循,可依据团队、集体状况进行选择性取舍。 作者:陈琦,资深麻利测试参谋,作为国内出名项目管理软件——禅道的团队成员,次要负责开源自动化测试治理框架——ZTF的开发工作。领有十多年的麻利过程实践经验,现致力于测试自动化和DevOps相干畛域的实际和钻研。

August 12, 2020 · 1 min · jiezi

关于测试:成功的9大步骤从手动测试转为自动化测试

您或您的团队目前是否手动测试并尝试采纳自动化测试?在本文中,咱们将概述小型QA团队如何从手工测试到无代码测试再到齐全自动化的测试。这个过渡不会欲速不达,但胜利实现要比预期的容易得多。 1、对枯燥反复的手动测试说不违心对单调乏味的重复性手动测试说不,就是迈向自动化测试的第一步。作为测试团队,须要抵赖手工测试常常受到重复性的困扰,并且容易出错。任何团队最终都会因为一次又一次地做同样的事件而陷入困境,从而影响团队的效率和积极性。一些团队将通过自动化一些小块的重复性工作来克服这个挑战。例如,将测试数据导入数据库的脚本,生成随机测试数据的实用程序。 2、理解切换到自动化测试的阻碍一旦确认了团队须要转移到自动化测试,下一步就是要晓得是什么妨碍着团队做出这一转变。在大多数状况下,这个妨碍是对自动化所波及的复杂性的恐怖,比方学习编程,脑海中容易浮现出“咱们能学习一种新的编程语言并施行一个胜利的测试自动化我的项目吗?”诸如此类的问题。团队应该从小处着手,抉择适宜他们测试需要的正确工具。例如,如果团队的应用程序大量应用iFrames,那么在抉择一个不能很好地与iFrames配合应用的工具之前就须要斟酌;或者,如果测试团队没有任何自动化教训,那么在开始自动化测试前先构建自动化测试框架。 3、从小处做起,但务必要胜利好的开始是胜利的一半。当您的团队刚接触自动化测试时,抉择简略而小型的测试用例是十分重要的。抉择您常常手动测试但容易测试的测试用例。简略和小型的测试用例易于自动化、调试、保护和重用。不要先从那些耗时或简单的开始,否则会让开局就变得更艰难,升高胜利的可能性。例如从登录、创立用户等简略的测试用例开始。 4、抉择适合的工具和框架简化流程是胜利的要害,抉择工具和框架的组合会更容易做到这一点。是的,你没听错,必须是工具的组合,依附繁多的工具很难取得自动化测试的胜利。Selenium执行可能会成为根底,因为它是用于不同编程语言的最风行和最不便的工具。从构建在Selenium之上的无代码测试工具开始。无代码测试工具能够笼罩大多数简略到中等简单的手工测试。 国产项目管理软件禅道自研的ZTF自动化测试工具,可很好地驱动8种单元测试框架、3种自动化测试框架来执行测试,并把最终后果回传给禅道,进行对立的报告展现。禅道ZTF买通了项目管理和继续集成工具之间的沟壑,贯通继续集成、继续测试、继续部署等DevOps生命周期的不同阶段。 5、学习并实际编程抉择团队最相熟的编程语言。无代码测试可能可能笼罩大部分手动测试,然而对于简单的步骤或测试,您将须要编写脚本。仅仅学习是不够的,你应该把你的学习付诸实践来了解和编写好的代码。请记住,作为一个团队,你的指标是通过自动化反复的手工测试来确保软件的品质。 6、明确自动化内容团队必须优先思考哪些测试须要自动化。自动化测试的新常识并不能利用于所有的事件——事实上,自动化所有测试是不可能的,还有许多测试更适宜手动实现。试图自动化简单且不罕用的测试是失败的公式,不值得团队付出致力。每当新个性公布时,依然须要应用手动和探索性测试技能。运行危险剖析来确定应用程序中应该自动化的局部。此外,还须要留神一些细节,比方如果应用程序是基于web的,那么将须要创立一个对特定测试套件至关重要的浏览器和设施列表。 7、对不牢靠的自动化测试零容忍就像你作为手动测试人员一样,要回绝对失败的测试感到称心,不应该容忍有时通过而有时失败的自动化测试。不牢靠的测试将以致团队失去信念,是失败的垫脚石。例如,如果在一个简短的测试用例的初始步骤中就呈现失败,就无奈确定该步骤之外是否没有谬误。这样的不确定性将不利于鼓励团队士气,也无奈使整个自动化过程轻松无效。 8、不要漠视团队合作任何我的项目的胜利成绩都是由一个合作团队保障的。自动化测试也不例外。团队的所有自动化测试都必须位于一个可随时随地拜访的存储库中。对于可追溯性和可问责性,一个批示谁对哪个测试用例进行更改的变更记录应该始终存在。您所抉择的工具应该容许合作,并且还应该使您能够更容易地对您将在一段时间内创立的100多个测试进行分类、标记、排序和筛选。 9、做好根底工作别忘了测试的基本原理。无论是手动测试还是自动测试,测试概念和基本原理始终实用。 自动化测试在开始时可能会让人望而却步,但真正须要的是始终如一的致力来能使其胜利。利用资源一直学习和练习会有帮忙。大可释怀,专家也并不是什么都懂。无论是如许优良的自动化测试工程师,总有更多的货色须要学习。 参考文献: Sumant Mehta.The 9-Step Success Formula: Switching From Manual to Automated Testing in 2020 [OL].(2020-07-16) https://dzone.com/articles/th...

August 4, 2020 · 1 min · jiezi

关于测试:用例设计-pairwise-testing-测试用例设计-概念篇1

all-pairs testing 或者 pairwise testing ,它是组合测试的一种办法,是软件测试畛域针对黑盒测试提出的一个卓有成效的办法之一。 Pairwise也正是基于数学统计和对传统的正交分析法进行优化后失去的产物。 Pairwise基于如下2个假如: 每一个维度都是正交的,即每一个维度相互都没有交加;依据数学统计分析,73%的缺点(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的,19%的缺点是由3个因子相互作用产生的。因而,Pairwise基于笼罩所有2因子的交互作用产生的用例汇合性价比最高而产生的。 咱们先从一个例子来感触下Pairwise testing。 假如咱们有一个产品,他的组成和值的状况如下。 listbox: 0-9checkbox: checked, uncheckedradio button: on, offtextbox: 1-100如果全笼罩的话,关正向的测试用例就有 1022*100=4000 ,如果包含反向的测试用例的话,则 >4000 条测试用例。 1 应用等价类划分缩小测试用例:对于listbox,能够抉择的值是0-9,因为0最非凡(其余的值要么是负数要么是正数), 所以,对于checklist 咱们把它简化成 0 和 others(1-9) checkbox 和 radio button 曾经无奈再简化了,则持续保留 对于textbox,能够输出的值是1-100,咱们能够把它的值简化成 valid Int,invalid Int and Alpha Special Char 简化后的后果如下: listboxcheckboxradio buttontextbox0checkedonvalid Intothersuncheckedoffinvalid Int Alpha Special Char则有 222*3=24 个testcases,也就是咱们把 4000+的testcases降到了24个testcases 2 应用pairwise的办法进一步缩小测试用例步骤: 变量排序依据第二个变量计算出第一个变量须要的用例数(行数)每减少一列(n),则须要看 1和n,2和n,。。。 n-1和n之间是否笼罩了两列之间所有的组合,如果没有则适当调整高低的地位。直到所有都合乎。如何还是有不合乎的,则适当减少几行。2.1 给变量排序含有值越多的变量放在第一位,第二多的第二位,起码的最初一位,以此类推。 textbox(3)listbox(2)checkbox(2)radio button(2)2.2 填写第一列和第二列依据第一列和第二列值的可能性计算出第一列须要几行,这个例子中,第一列3个值,第二列2个值,所以须要3*2=6行 ...

July 29, 2020 · 1 min · jiezi

关于测试:用例设计-pairwise-testing-测试用例设计-概念篇1

all-pairs testing 或者 pairwise testing ,它是组合测试的一种办法,是软件测试畛域针对黑盒测试提出的一个卓有成效的办法之一。 Pairwise也正是基于数学统计和对传统的正交分析法进行优化后失去的产物。 Pairwise基于如下2个假如: 每一个维度都是正交的,即每一个维度相互都没有交加;依据数学统计分析,73%的缺点(单因子是35%,双因子是38%)是由单因子或2个因子相互作用产生的,19%的缺点是由3个因子相互作用产生的。因而,Pairwise基于笼罩所有2因子的交互作用产生的用例汇合性价比最高而产生的。 咱们先从一个例子来感触下Pairwise testing。 假如咱们有一个产品,他的组成和值的状况如下。 listbox: 0-9checkbox: checked, uncheckedradio button: on, offtextbox: 1-100如果全笼罩的话,关正向的测试用例就有 1022*100=4000 ,如果包含反向的测试用例的话,则 >4000 条测试用例。 1 应用等价类划分缩小测试用例:对于listbox,能够抉择的值是0-9,因为0最非凡(其余的值要么是负数要么是正数), 所以,对于checklist 咱们把它简化成 0 和 others(1-9) checkbox 和 radio button 曾经无奈再简化了,则持续保留 对于textbox,能够输出的值是1-100,咱们能够把它的值简化成 valid Int,invalid Int and Alpha Special Char 简化后的后果如下: listboxcheckboxradio buttontextbox0checkedonvalid Intothersuncheckedoffinvalid Int Alpha Special Char则有 222*3=24 个testcases,也就是咱们把 4000+的testcases降到了24个testcases 2 应用pairwise的办法进一步缩小测试用例步骤: 变量排序依据第二个变量计算出第一个变量须要的用例数(行数)每减少一列(n),则须要看 1和n,2和n,。。。 n-1和n之间是否笼罩了两列之间所有的组合,如果没有则适当调整高低的地位。直到所有都合乎。如何还是有不合乎的,则适当减少几行。2.1 给变量排序含有值越多的变量放在第一位,第二多的第二位,起码的最初一位,以此类推。 textbox(3)listbox(2)checkbox(2)radio button(2)2.2 填写第一列和第二列依据第一列和第二列值的可能性计算出第一列须要几行,这个例子中,第一列3个值,第二列2个值,所以须要3*2=6行 ...

July 29, 2020 · 1 min · jiezi

测试报告与验收

测试方法抉择输出分类选等价给定范畴加边界条件孤立想断定有限穷举取正交业务简单场景法测试充沛全笼罩理论设计的思路任何状况下都必须应用边界值分析方法,教训表明用这种办法设计出测试用例发现程序谬误的能力最强必要时用等价类划分办法补充一些测试用例如果程序的性能阐明中,含有输出条件的组合状况,则一开始就可选用断定表法如果程序业务复杂度比拟高,则适当应用场景法补充一部分测试用例每条测试用例有惟一的测试目标 提测阶段,优先做冒烟测试 冒烟测试工夫不超过整体测试工夫的 10%;选取正向流程; 外围流程冒烟测试,要求100%通过主流程冒烟测试,不能超过30%的场景出现异常摸索式冒烟:半小时随机测试,发现 bug 不超过 10个如果冒烟测试不通过,视为不进入测试阶段,测试大会,须要从新提测,从新冒烟 缺点 理论工作中,在麻利开发的模型下,以口头沟通,进步解决效率与开发人员沟通的正确姿态相熟根本的开发原理,做到业余,清晰,有条理地表白站在开发的角度去了解思考问题同时也要相熟开发人员的沟通习惯我的项目上线须要留神的问题 代码合并有脱漏线上环境和测试环境不同,遗记对哪些配置进行了批改数据库减少配置项时,有配置项脱漏减少,或者减少不正确上线前把控--上线前告诉上下游零碎--非凡状况考量--上线后测试验收--线上问题跟踪--紧急公布测试--继续跟进--补测试用例 我的项目迭代测试报告将测试的过程与后果写成文档对发现的问题和缺点进行剖析,为纠正软件存在的品质问题提供根据为软件验收和交付打下基础测试报告是测试阶段最初的文档产出物优良的测试人员应该具备良好的文档编写能力一份具体的测试报告蕴含足够的信息,包含产品的品质和测试过程的评估测试报告基于测试中的数据采集以及对最终的测试后果剖析内容 报告信息引言测试概要测试后果与缺点剖析测试论断与倡议测试限度验收测试验收测试是部署软件之前的最初一个测试操作 目标:确保软件准备就绪,并且能够让最终用户将其用于执行软件的既定性能和工作 工作: 向将来用户表名零碎可能像预约要求那样工作,也就是验证软件的有效性验证软件的性能和性能如同用户所正当期待的模样 验收测试策略 Alpha测试 由用户在开发环境中进行的测试开发机构外部的用户在模仿实际操作环境下进行的测试是在开发者受控的环境下进行的测试在零碎开发靠近实现时,对利用零碎的测试测试后依然会有大量的设计变更个别由最终用户或其余人员实现Beta测试 由软件的多个用户在一个或多个用户的理论应用环境下进行的测试由用户记录下遇到的所有问题,定期向开发者报告模仿实在的环境从而发现缺点的一种测试

July 10, 2020 · 1 min · jiezi

最主流的APP测试

挪动 APP概念:挪动应用服务,就是针对手机这种挪动连贯到互联网的业务或者无线网卡业务而开发的应用程序服务 设施:智能手机、平板电脑、智能手表 网络:无线、WiFi 平台:Andriod 、IOS 挪动 APP 测试与传统测试的区别用户关注点: 传统web测试:屏幕大,能够同时十分多的显示信息挪动 APP:屏幕小,显示信息无限,有价值信息放在次要地位场合复杂程度: 传统web测试:地点、网络信号固定挪动 APP:静止状态中;网络不稳固,电量问题输出品种: 传统web测试:键盘、鼠标挪动 APP:实体键盘、触屏、电容笔、语音操作准度: 传统web测试:点击是一件精确的事件挪动 APP:触屏的操作准度比拟差,点击误差大,不反对hover事件,点击出错几率高界面布局: 传统web测试:PC端屏幕严惩,布局能够灵便挪动 APP:屏幕绝对窄小,个别是单列,屏幕能够旋转功能测试登录测试 注册测试 本地注册疾速注册登陆测试 多终端登陆第三方登录登记测试运行测试 切换测试 后盾切换删除过程锁屏推送测试 更新测试 手动刷新主动刷新专项测试装置测试从不同的渠道获取安装程序是否失常装置软件在不同的操作系统下装置是否失常软件装置后是否可能失常运行,装置后的文件是否写在指定的目录中软件装置过程是否能够勾销,点击勾销后,是否能够回滚,写入的文件是否如概要设计说明解决装置过程中意外状况解决是否合乎需要(如死机,重启,断电)装置空间有余时是否有相应的提醒装置后是否有生成多余的目录构造和文件对于须要通过网络验证之类的装置,在断网状况下是否能够装置对装置手册进行测试,按照装置手册是否能顺利装置卸载测试间接删除装置文件夹是否有谬误提醒测试零碎间接卸载程序是否有提示信息测试卸载后文件是否全副删除所有的装置文件夹卸载过程中意外状况解决是否合乎需要(如死机,重启,断电)卸载是否反对勾销性能,点击勾销后,软件的卸载状况零碎间接卸载 UI 测试,是否有卸载状态进度条提醒交互测试多个利用同时运行是否影响失常性能利用运行前、后盾切换是否影响失常性能利用运行时发送、收取邮件是否失常利用运行时拨打、接听电话利用运行时发送、承受音讯利用运行时切换网络利用运行时浏览网络利用运行时应用蓝牙传输、接收数据利用运行时应用相机、计算器、手电筒等手机自带设施降级测试客户端有新版本是否有更新提醒升级包下载终端是否反对持续或者从新下载降级渠道验证跨版本升级的可用性强制降级状况下,用户是否还能够失常应用旧版本非强制降级状况下,系统对新旧版本的兼容性性能测试边界测试:在各种边界压力之下(电量、存储、网络)验证APP可否正确响应压力测试:重复/长期操作下,系统资源占用是否异样,APP行为是否失常(自动化)性能评估:在各种典型场景下占用系统资源的状况响应能力测试:各类操作是否满足用户能够承受的响应工夫要求耗费测试:失常运行时内存、CPU耗费,APP 后盾长时间运行时耗电量、耗流量UI 测试界面布局:布局是否正当,界面是否敌对,是否合乎用户习惯图形测试:控件方面是否统一,是否能够自适应窗口,标签格调是否对立,图片是否清晰,色调应用是否让人难受内容测试:文字表白是否精确,是否有错别字,是否有敏感词汇,是否侵权导航测试:是否须要导航,导航帮忙是否精确直观,导航与页面构造菜单格调是否统一测试工具:Appium介绍:是一个开源、跨平台的测试框架,能够用来测试原生及混合的挪动端利用;反对 iOS、Android、FirefoxOS 平台测试 特点 跨设施跨架构跨语言跨APP, 能够在多个 APP 之间交互不依赖源代码不限度测试框架和平台测试工具:MonkeyMonkey 测试,所有的事件都是随机产生的,不带任何人的主观性,能够应用Monkey进行压力测试云测试平台Testin 云测试阿里MQC 贯众云测试 百度MTC 腾讯优测

July 10, 2020 · 1 min · jiezi

全面提升测试技术

白盒测试之代码审查代码审查范畴 合格代码应该具备正确性、清晰性、规范性、一致性和高效性 业务逻辑的审查算法的效率代码格调编程规定代码审查的办法: 互查:在雷同模块或者相近模块的编程人员之间互相查看对方的代码走查:从头到尾将写好的代码查看一遍代码审查 Java 最根本语句的应用重载函数的审查内存调配和治理:确保内存的及时开释和防止缓冲区溢出程序性能的审查 缩小创立用户缩小循环体的执行代码,能放在循环体外的代码要尽量放在循环体外进步解决异样出错的效率缩小 I/O 操作工夫白盒测试方法-逻辑笼罩单元测试:软件测试中最根底的测试,集成测试、功能测试和零碎测试都建设在单元测试之上;其对象是形成软件产品或者零碎的最小的独立单元,如封装的类或者对象、独立的函数、过程、子过程、组件或者模块等 用例设计 对于单元测试用例的设计和程序的实现过程,次要集中在白盒测试方法之上,并力求达到下列测试要求: 对程序模块所有独立的执行门路至多要测试一次对所有逻辑断定,其后果为真、假两种状况至多要测试一次对程序进行边界查看(常见的如数据越界测验)测验外部数据结构的有效性逻辑笼罩法:白盒测试中最次要的测试方法 分类:其根本思维不同,产生的测试用例不同,覆盖范围也有所不同 语句笼罩断定笼罩条件笼罩断定-条件笼罩条件组合笼罩语句笼罩:设计若干测试用例,运行被测试程序,使程序中的每个可执行语句至多被执行一次 有余:不能精确判断运算中的逻辑关系谬误断定笼罩:使每个判断的取真值和取假值都至多经验一次 条件笼罩:使每一个条件的取真值和取假值都至多经验一次 断定-条件笼罩:确保设计足够或精美的自测用例,可使得判断条件中所有的可能取值至多被执行一次,同时所有判断的可能构造也至多被执行一次 条件组合笼罩:设计足够的测试用例,使判断中每一个条件的所有可能至多呈现一次,而且每个判断自身的断定后果也至多呈现一次。 与断定-条件笼罩的差异:条件组合笼罩不是简略地要求每个条件都呈现“真”与“假”两种后果,而是要求让这些后果的所有可能组合都至多呈现一次自动化测试把手工测试转化为用机器,软件,程序来测试产品的过程 作用 缩短软件开发测试周期,能够让产品更快投放市场测试效率高,充分利用硬件资源节俭人力资源,升高测试老本加强测试的稳定性和可靠性进步软件测试的准确度和精确度,减少软件信任度软件测试工具使测试工具绝对比拟容易,但能产生更高质量的测试后果适宜应用自动化测试的我的项目 需要变更有计划性,并且频率不高我的项目周期长,资源丰盛脚本反复利用率高代码标准手工测试更适宜测业务逻辑,自动化测试适宜用来测十分根底、没有业务依赖的根底性功能 平安测试Web 利用的概念: 由动静脚本、编译过的代码等组合而成它通常架设在web服务器上,用户在web浏览器上发送申请这些申请应用 HTTP 协定,由 web 利用和企业后盾的数据库及其他动静内容通信Web 利用平安威逼: 验证:用来确认某用户、服务或是利用身份的攻打伎俩受权:用来决定是否某用户、服务或是利用具备执行申请动作必要权限的攻打伎俩客户侧攻打:用来扰乱或是探测web站点用户的攻打伎俩命令执行:在web站点上执行近程命令的攻打伎俩信息裸露:用来获取 web 站点具体零碎信息的攻打伎俩逻辑性攻打:用来扰乱或是探测 web 应用逻辑流程的攻打伎俩OWASP 10 大安全漏洞: 注入:SQL注入生效身份认证和会话治理跨站脚本:XSS生效的访问控制平安配置谬误敏感信息泄露跨站申请伪造:CSRF应用含有破绽的控件攻打检测和防备有余未受爱护的 APIs流程: 不同测试的先后顺序: 功能测试自动化测试平安测试:在此期间会有较多代码批改,影响性能测试性能测试平安审计自动化审计工具:AppScan, Weblnspect 不倡议依赖审计工具,尽可做长期或紧急应用 性能测试意义:多个客户端同时拜访造成压力 概念:包含执行效率、资源占用、零碎稳定性、安全性、兼容性、可靠性、可扩展性 是形容测试对象与性能相干的特色,并对其进行评估而实现和执行的一类测试。次要通过自动化的测试工具模仿多种失常、峰值以及异样负载条件下,对系统的各项性能指标进行测试性能测试蕴含的事项: 评估生产筹备状态评估性能断定规范比拟多个不同零碎或同一零碎不同配置之间的性能特色找出导致性能问题的源头帮忙进行零碎性能调优确定吞吐量程度外围流程: 确定测试环境: 物理环境、生产环境、测试团队可利用的工具和资源确定性能验收规范 确定响应工夫、吞吐量、材料利用总指标和限度打算和设计测试 确定要害场景确定典型用户的可变性、以及如何模仿这些变动确定测试数据确定须要收集的度量值配置测试环境 随着须要测试的性能和组件的欠缺,逐渐为每一个策略筹备执行所需的测试环境、工具以及资源实现测试设计 依据测试设计逐渐开展性能测试执行测试 执行和监控测试剖析后果、报告以及反复测试 整合并共享后果数据性能测试指标: 评估软件公布筹备评估根底构造是否失当评估已开发软件的性能是否满足要求进步性能调整效率性能测试的品种: 负载测试压力测试容量测试其余:配置测试、并发测试、可靠性测试、稳定性测试性能测试工具:LoadRunner、 Jmeter

July 10, 2020 · 1 min · jiezi

软件测试核心之用例设计

测试设计与测试用例测试设计:将概括的测试指标转化为具体的测试条件和测试用例的一系列流动 测试剖析和设计的次要工作 评审测试根据(需要、零碎架构、设计和接口阐明)评估测试根据和测试对象的可靠性通过对测试项、规格阐明、测试对象行为和构造的剖析,辨认测试条件并确定优先级设计测试用例,并确定优先级确定测试条件和测试用例所需的必要测试数据确定测试条件 根据在测试策动或者测试计划中确定的测试技术通过对策是根据与测试指标的剖析,能够确定须要测试的内容,取得测试条件测试用例: 通过应用在测试计划中确定的测试技术与测试方法,对于已确定的测试条件进行逐渐斟酌,精炼而设计进去的,重点阐明如何具体操作,产生何种后果的文档 特点:可重复性,可验证性,需要可追踪性设计的关键点: 前提条件:如我的项目或部分测试环境的需要,及其交付打算测试步骤:可还原,可检测,不可有歧义测试数据预期后果设计办法: 等价类划分法边界值法因果图设计法断定表设计法正交实验法场景法等价类划分法定义:把程序的输出域划分成若干局部,再从每个局部中选取多数代表性数据当做测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其余值 划分准则: 如果输出条件规定了取值的范畴或者值的个数,则可确定一个无效等价类和两个有效等价类对抗关系:如果一个输出条件阐明了一个 “必须成立”的状况,则可划分一个无效等价类和一个有效等价类如果输出条件规定了输出数据的一组可能的值,而且程序是用不同的形式解决每一种值,则可为每一种值划分一个无效等价类,并划分一个有效等价类如果已明确,已划分的某等价类中的各元素在程序中的解决形式是不同的,则应据此等价类进一步划分成更小的等价类设计步骤 明确测试对象,非测试对象保障正确为每一个等价类规定一个惟一的编号基于等价类划分的用例设计 设计一个新的测试用例,使其尽可能多地笼罩尚未笼罩的无效等价类,反复这一步,最初使得所有无效等价类均被测试用例所笼罩设计一个新的测试用例,使其只笼罩一个有效等价类。反复这一步,使所有有效等价类均被笼罩等价类的特点 测试雷同的内容如果等价类中的一个测试可能捕捉一个缺点,那么抉择该等价类中的其余测试也能捕捉该缺点如果等价类中的一个测试不能捕捉缺点,那么抉择该等价类中的其余测试也不会捕捉缺点如果正确的划分等价类,能够大大降低测试用例的数量,测试会精确无效如果谬误地将两个不同的等价类当做一个等价类,那就会脱漏一种测试状况相同,把同一个等价类看作两个不同的等价类,那么测试就会是冗余的注意事项: 岂但要思考无效等价类,也要思考有效等价类认真划分,审查划分过于粗略可能会遗漏掉软件缺陷组织评审边界值法定义:是一种补充等价划分的测试用例设计技术,它不是抉择等价类的任意元素,而是抉择等价类边界的测试用例 边界值设计的准则 如果输出条件规定了取值范畴,应以该范畴的边界内及刚刚超范围的边界外的值作为测试用例因果图法与断定表因果图法用来解决等价类划分和边界值思考不到的状况,因为这两种办法都是着重思考输出条件,而不思考输出条件的各种组合,输出条件之间的互相制约关系因果图法,适宜用于形容多种条件的组合,产生多个相应动作的测试方法;从程序规格说明书的形容中找出因果关系 断定表定义:是剖析和表白多逻辑条件下执行不同操作的工具 组成部分: 条件桩:列出了问题的所有条件,通常认为列出的条件秩序无关紧要动作桩:列出了问题规定可能采取的操作,这些操作的排序程序没有束缚条件项动作项设计步骤: 剖析软件规格阐明中的因果,并给每个起因和后果赋予一个标识符剖析软件规格阐明中语义的内容,找出起因与后果之间、起因与起因之间对应的关系,依据这些关系画出因果图因为语法或环境的限度,有些起因与起因之间、起因与后果之间的组合状况不可能呈现。为表明这些特定状况,在因果图上应用一些记号表明束缚或限度条件把因果图转换为断定表依据断定表的每一列设计测试用例正交实验法定义:是从大量的试验点中挑选出适量的、有代表性的点,利用根据伽罗卡瓦实践导出的正交表,正当地安顿试验的一种迷信的试验设计办法 相干参数:指标、因子、因子的状态 设计步骤: 提取性能阐明,结构因子状态表加权筛选,生成因素剖析表利用正交表结构测试数据集利用正交表每行数据结构测试用例测试场景设计场景法设计步骤: 依据阐明,形容出程序的根本流及各项备选流依据根本流和各项备选流生成不同的场景对每一个场景生成相应的测试用例对生成的所有测试用例从新审核,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值测试用例综合设计测试用例项划分 测试用例划分的经典办法是瀑布模型,从上到下,逐步细分;大模块包含小模块,小模块包含更小的模块要从更多的角度切入零碎,把零碎切分成一块一块地来进行测试,从而确保测试大项的完整性切面测试 性能点切面:最常见的切面,通常认为页面上的一个按钮就是一个性能点。依据性能的复杂程度,按每一个性能进行用例的撰写隐含切面:残缺业务流程的测试。从需要,业务角度进行编写性能点用例设计 任何状况下都必须应用边界值分析法,教训表明,用这种办法设计出测试用例发现程序谬误的能力最强必要时用等价类划分的办法补充一些测试用例如果程序的性能阐明中含有输出条件的组合状况,则一开始就可选用因果图法如果程序业务复杂度比拟高,则适当应用场景法补充一部分测试用例

July 10, 2020 · 1 min · jiezi

规范的软件测试流程

测试环境搭建准则搭建前确定测试目标 功能测试:不须要大量数据,须要覆盖率高,测试数据要求尽量实在性能测试:可能须要大量存量数据,或者与理论硬件环境尽可能类似的硬件配置测试的软件环境尽可能模仿实在环境 选用适合的操作系统与软件平台理解合乎测试软件运行的最低要求及用户应用的硬件配置连贯用户常用软件,防止发生冲突产品化的测试须要思考兼容性的计划营造独立的测试环境 不同我的项目,不同公司会对测试环境的独立性有不同的要求测试过程中尽量保障测试环境独立,不会受到其余测试人员以及我的项目研发人员的影响构建可复用的测试环境 通过备份或者数据隔离的形式反复使用一套测试环境进行多版本多时间段的测试搭建测试环境过程剖析环境搭建模式 线下搭建:公司本地内 独立测试服务器或者虚拟机测试环境配置(以 Java 为例) 配置Java环境(下载 jdk 并配置环境变量)下载并装置中间件(Tomcat, jetty 及其他)装置数据库并导入初始化脚本测试项目导入Docker 模式:构建属于本人 image;应用时一键 deploy 即可依赖第三方平台环境建设思路思考点:用处,应用老本,保护老本 基础架构: 研发环境:用于研发自测,集成测试测试环境:用于日常单零碎或两两微服务之间测试,可同时集成自动化测试回归联测环境:齐备环境,用于大型联测外联环境:稳固版本环境,用于内部商户联调灰度/沙箱环境:用于生产数据测试,仿真测试测试过程 最终输入:测试计划,测试用例,缺点跟踪记录过程划分: 在逻辑上,测试流动是按程序进行的 在理论测试过程中,是能够重叠或者同时进行的 测试策动进行测试需要的剖析确定须要测试的内容或品质特色明确测试的充分性要求提出测试的根本办法 测试策动的过程: 确定测试的资源和技术需要进行危险剖析和评估根据上述剖析后果制订测试计划依据测试计划发展相应的测试管制流动需要测试益处: 测试工程师参加需要剖析,对需要理解粗浅,缩小与开发人员的交互晚期确定测试用例的编写思路,为测试打好根底能够获取易测的测试数据,为测试用例设计提供帮忙能够发现需要不合理的中央,升高测试老本作用: 明确测试对象以及测试工作的范畴和作用,并作为测试笼罩的根底被确定的测试需要项必须是可核实的,测试需要必须有一个可察看、可评测的后果无奈核实的需要,就不是测试需要包含与客户的交换,用以廓清某些混同明确哪些需要更重要确保危险承担者尽早地对我的项目达成共识对未来产品有一个清晰的意识能够作为制订测试计划的根本根据为设计测试用例提供领导,能无效设计用例需要验证审查需要文档: 对需要文档及相干模型进行仔细检查在需要开发期间做非正式的评审以需要根据编写测试用例 编写简略用户手册起草简略易懂的用户手册,用以形容出所有用户可见的性能,并用它作为需要规格阐明的参考,并辅助需要剖析确定合格规范: 让用户形容什么样的产品才算满足他们的要求和适宜他们应用将确认合格的测试建设在应用场景形容或应用实例的根底之上测试策略定义:是形容测试项目和测试工作之间的关系,用来阐明要测什么,如何测,如何协调测试资源与测试工夫等 测试策略是否高效,会对测试项目的进度产生很大的影响 偏重需要剖析,评估危险,定义测试范畴 确定测试方法,指定测试启动、进行、实现规范和条件测试策略的因素(属于测试计划的一部分): 测试安顿,公布打算:里程碑;明确的完结工夫;布局优先级,保障外围性能测试范畴:按优先级分类测试资源:分为人力和工具两局部测试环境:包含举荐环境解决方案,操作系统要求,软硬件要求测试方法:功能测试用例设计办法文档治理:包含装置,降级文档,用户指南;须要残缺测试能力公布文档风险管理:来自技术,资源或者其余方面上线跟踪验证测试计划制订我的项目测试过程中的测试重点: 各阶段的工作以及工夫进度安顿提出各项任务的危险评估与剖析,能够包含测试策略测试计划 = 测试策略 + 测试任务分配 + 工夫进度安顿 测试计划偏重测试的办法,测试环境的布局 包含测试工具的设计和抉择,测试用例的设计办法,测试代码的设计方案测试计划 = 测试计划 + 用例设计方案 + 工具抉择 + 自动化/性能测试具体计划 测试计划评审疏忽测试计划评审会导致的问题: 仅从文档、沟通获取信息,会造成信息不对称,意识全面,了解谬误或不深刻等问题短少同行穿插评审和开发评审机制,无奈充分发挥个体智慧,集体的思维难以冲破,可能会呈现测试脱漏的状况目标: 出现测试的工作与开发达成共识不同的思维形式碰撞出火花,借鉴他人的思考形式造就团队合作的能力施展团队合作,最大限度施展集体的教训,专长,实现技能互补评审重点: 采纳的测试方法等价类划分的根据测试数据的选取和筹备办法流程测试的门路抉择数据比对选取的对象和数据检查点是否须要模仿数据及模仿数据的办法基于危险的测试取舍

July 10, 2020 · 1 min · jiezi

从软件工程到软件测试

基础知识软件概念:软件是计算机系统中,与硬件相互依存的另一部分,包含程序,数据及相干文档的残缺汇合 程序:按当时设计的性能和性能要求执行的指令序列或者代码构造数据:使得程序能失常操纵信息的数据结构(数据来自数据库)文档:与程序开发,保护和应用相干的图文材料, 是测试所需的根据内容个性 状态个性:有形的、不可见的逻辑实体智能个性:是简单的智能产品,它的开发凝聚了人类的大量脑力劳动,体现了常识实际和人类的智慧,具备肯定的智能。能够帮忙咱们解决简单的计算、剖析、判断和决策问题开发个性:软件开发中依然蕴含相当份量的个体劳动,使得这一大规模知识型工作充斥了个人行为和集体因素品质个性:因为开发个性存在,所以不存在齐全没有缺点的软件生产个性:与硬件相比,软件一旦开发进去,如果须要提供多个用户,其复制非常简略,老本也极为无限治理个性,相比于传统行业,更为独特环境个性:软件对于计算机系统的环境有着不可解脱的依赖性,它的开发和运行都离不开相干的计算机系统环境,包含反对它的开发和运行的相干硬件和软件; 不同语言开发的程序,要搭配不同的运行环境来兼容保护个性:软件投入使用当前,须要进行保护,但与传统产业产品的保护不同,它体现在降级、优化、性能更新等,甚至能够重构废除个性:次要是不能满足市场和用户需要而导致的废除利用个性:利用极为宽泛软件分类 系统软件:负责管理计算机系统中各个独立的硬件,使其能够协调工作 服务性程序语言程序操作系统数据库管理系统应用软件:为了某种特定用处而开发的软件。能够是一个特定的程序,也能够是一组性能分割严密,相互协作的程序的汇合软件的生命周期定义:又称为生存周期,它是按开发软件的规模和复杂程度,从工夫上把软件开发的整个过程(从打算开发开始到软件报废为止的整个历史阶段)进行合成,造成绝对独立的几个阶段 同时每阶段又分解成几个具体的工作,而后按规定程序顺次实现各个阶段的工作并规定一套规范的文档作为各个阶段的开发成绩,最初生产出高质量的软件 软件的毕生 问题定义 -- 可行性剖析 -- 需要剖析 -- 概要设计 -- 具体设计 -- 编码和单元测试 -- 综合测试 -- 软件维护这一个过程会随着我的项目的迭代降级,一直循环 软件开发模型倒退经验: 边做边改 毛病:随着我的项目变得复杂,管控越来越难瀑布模型: 流程:打算--需要剖析--设计--编码--测试--运行保护特点:软件开发的各项流动严格依照线性形式进行;以后流动承受上一项流动的工作后果;以后流动的工作后果须要进行验证毛病: 因为线性开发,减少了开发的危险晚期的谬误可能要等到开发前期阶段能力发现,谬误老本大原型模型:客户与开发公司紧密联系,开发周期长,会受到需要变更的影响 特点:实现客户与零碎的交互;进一步细化待开发软件需要;开发人员能够确定客户的真正的需要螺旋模型:制订打算--危险剖析--施行工程(需要确认、软件需要、软件产品设计、设计确认与需要、具体设计、开发、测试)--客户评估 特点: 螺旋模型是将瀑布模型与疾速原型模型联合起来强调了其余模型所漠视的危险剖析每次螺旋包含4个步骤,一直递进:制订打算--危险剖析--施行工程--客户评估毛病:过于强调危险剖析,但要求许多客户承受并置信这种剖析,减少了操作难度麻利模型:一种以人为外围、迭代、循序渐进的开发方法 特点: 短周期开发增量开发由程序员和测试人员编写的自动化测试来监控开发进度通过口头沟通、测试和源代码来交换零碎的构造和用意测试后行:编写代码前,先写测试代码毛病: 团队的组建较难,人员素质要求较高对测试人员要求齐全把握各种脚本语言编程,能执行单元测试、自动化测试DEVOPS:须要做到更强的继续集成,更强的自动化工具的应用 软件开发文档需要剖析文档概要设计文档 具体设计文档 测试设计文档 测试用例 测试报告 我的项目各阶段的测试相干工作编程阶段:单元(白盒)测试,以开发为主,须要测试参加;关注覆盖率 编程实现:开发联调(集成测试),以开发为主 提测:冒烟测试(自动化为主,手工为辅)-测试执行 测试阶段:零碎测试(黑盒功能测试为主,自动化/接口测试为辅,依据我的项目进行性能、平安测试) 验收阶段:验收测试,配合用户或需要 软件测试定义:是应用人工或者主动的伎俩,来运行或测定某个软件系统的过程,其目标在于,测验软件是否满足规定的需要,或弄清楚预期后果与理论后果之间的差异 目标:发现问题,查看零碎是否满足需要 分类 生命周期,各种测试方法比照 软件测试罕用术语C/S : C 代表客户端, S 代表服务器端;这种软件是基于局域网或者互联网的,须要一台服务器来装置服务器端的软件,每台客户端都须要装置客户端软件。 B/S : B代表浏览器, S 代表服务器端;这种软件同样是基于局域网或者互联网的,区别在于不须要装置客户端,只须要浏览器就能够间接应用。例如常见的门户网站 缺点(bug/defect):软件中不合乎用户需要的问题 测试环境:软件运行的平台, 包含软件、硬件、网络的汇合。 测试环境 = 软件 + 硬件 + 网络测试用例(test case):在测试执行之前设计的一套具体的测试计划,包含测试环境、测试步骤、测试数据和预期后果 ...

July 10, 2020 · 1 min · jiezi

测试用例其他相关知识

前后用了不少的篇幅来谈测试用例,包括它的方法、编写原则与标准。 本篇文章来分享关于测试用例的剩余基础知识。 测试用例级别划分描述此部分内容时,以淘宝作为参考对象。 1、极为重要 这一级别测试用例要重点关注,是不允许出一丁点错误的。淘宝中,与支付相关的测试用例,就属于此级别的。 2、重要 这一级别的测试用例主要涉及的是业务功能,比如淘宝中的浏览商品,加入购物车,下单等,这些功能没有处理好,会影响到营收。 3、一般 这一级别的用例主要涉及查询、下载、添加等功能,比如淘宝个人信息中的添加收货地址,虽然此功能会在短时间内对用户造成一定的影响,但是相较于前两种,没那么重要。 4、轻微 主要涉及界面UI,文案类的测试用例。尽管一般情况下,都会将文字的错误划分为轻微级别,但是,对于用户体量大的应用,可以适当提高重要级别。 测试用例评审测试用例是软件测试的依据。 由于测试人员在项目初期,对于需求、设计等理解程度不同,首次设计编写的测试用例质量难免会有不同程度的差异,故对编写的测试用例进行评审是很有必要的。 用例评审的作用是,通过评审过程,能够使测试用例结果清晰化,场景覆盖全面化以及优先级别合理化。 测试用例评审的内容用例设计的结构安排是否清晰合理,是否能够高效的进行需求覆盖用例的优先级是否合理测试用例是否覆盖了测试需求的所有功能点(业务+所有流程+场景+功能)测试用例是否有很好的可执行性,例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确正确性,非法性,特殊情况数据是否都有考虑测试用例是否简洁美观,是否易于管理执行用例评审会议 部门评审:测试团队内部成员参与的评审 项目评审:与项目相关的全体成员参与的评审 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

July 2, 2020 · 1 min · jiezi

用例编写标准

本篇文章分享用例编写的标准。 1、根据公司要求的统一模板编写;有些小公司会用Excel编写测试用例,有些公司会使用商业工具,例如禅道、JIRA 等。其实工具不是最重要的,用例的要素基本相似,重点需要掌握如何写出高质量的测试用例,工具只是在提高工作效率上起到作用。 2、严格按照需求说明书的功能点,以及测试计划进行用例编写,将所有涉及系统的功能点涵盖全面。 3、编写测试用例要逻辑清晰、精简、避免冗余以及重复的功能测试点;这是用例编写的重点,在使用场景法进行分析时,要注意逻辑顺序,再结合等价类划分法与边界值法逐步设计测试用例。 4、设计业务逻辑场景的,要将各个业务场景整理出测试用例,并且要对测试用例评审,确保测试用例的质量以及覆盖率。 5、测试用例既要包括正确数据,也要全面考虑非法数据与特殊数据。 6、遇到客户需求变更,或者测试人员对于需求理解错误的点时,要及时更新测试用例,做好相应的备注。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

July 2, 2020 · 1 min · jiezi

测试用例编写原则

本篇文章分享用例编写的原则。 系统性对系统业务流程,要完整说明整个系统的业务需求、系统由几个子系统组成以及它们之间的相互关系。由此来说明子系统内部功能、重点功能以及它们之间的关系。 连贯性对系统业务流程,要说明各子系统之间是如何连接在一起的,若需要接口,各子系统之间是否有正确的接口;如果是依靠页面链接,那么,页面的链接是否正确;而对于模块业务流程,要说明统计模块以及上下级模块是如何构成一个子系统,其内部功能接口是否连贯。 比如,电商网站,注册之后才能登陆,这是一个连接;登陆之后才能进行购物,这又是一个连接;下单付款之后,商家需要发货配送,用户要跟踪货物在途情况,又需要通过电商网站与物流公司的网站形成信息对接,这又是一个连接。 全面性测试用例应尽可能覆盖各个路径,以及各个业务点,并且要考虑大数据量并发测试的准备,比如特殊数据、非常规数据等。 正确性输入界面后的数据应与测试文档所记录的数据一致,而预期结果也应与测试数据发生的业务吻合。 符合正常业务规则测试数据既要符合用户实际工作中的业务流程,也要兼顾各种业务的变化及当前该业务行业的法律、法规。 这一点在开展国际业务的时候显得尤为重要,字节跳动为了将抖音推广到国外,开发了TikTok。当然啦,Tiktok出海的整个过程,遇到了不少主力,而当地的法律法规就是其中一项。 可操作性测试用例中要写清楚测试的操作步骤,以及不同的操作步骤相对应的测试结果。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

July 1, 2020 · 1 min · jiezi

其他测试用例设计方法错误推测法与正交实验法

常用的测试用例设计方法,前面基本都介绍完了,其中等价类划分法、边界值法与场景法是最常用的。 本篇文章介绍剩余两种测试方法——错误推测法与正交实验法。 错误推测法基于经验和直觉推测程序中所有可能存在的错误,从而有针对性地设计测试用例的方法错误推测法的基本思想:列举出程序中所有可能的错误和容易发生错误的特殊情况,再进行选择测试用例。 要使用好此方法,基于两个要素: 对开发人员的开发习惯很熟悉,你能推断出这位开发人员经常会在哪些地方出错;对同类型项目业务非常熟悉 因此,不建议在设计测试用例时直接使用错误推测法,而是在使用等价类划分法、边界值法与场景法进行全面地分析之后,再用它来作为补充手段,防止人在思维上的惰性。 正交实验法是研究多因素、多水平的一种试验方法,利用正交表对试验进行设计,通过少数的试验来代替全面试验。根据正交表的正交性,从全面试验中挑选适量的、有代表性的点进行试验,并且这些挑选出来的试验点具备了“均匀分散、整齐可比”的特点。 使用场景:时间紧张的时候,采取的不完全测试方法 相关参数指标:判断实验结果优劣的标准因子:所有影响试验指标的条件因子的状态:因子变量的取值设计步骤提取功能说明,构造因子-状态表加权筛选,生成因素分析表利用正交表构造测试数据集,推荐的正交表利用正交表每行数据构造测试用例实例操作对办公软件 Word 的字体进行测试 需求如下: 字体大小:大、中、小字体颜色:红、蓝、绿字体样式:宋体、黑体、楷体 按照常规方法,对所有因素进行排列组合,需要设计3*3*3=27种测试用例。 而使用正交实验法呢,只需要设计3个测试用例,就可以覆盖到这9种因子了: 这3个测试用例分别是: 大、绿色、楷体小、红色、黑体中、蓝色、宋体由于涉及到大学里的线性代数,在此就不展开讲了。 以上两种测试用例方法,其中,正交实验法的思路来源于生物实验,实际工作中很少用到,适用场景很难找。而错误推测法,则是在有了一定的测试经验之后,可以作为用例设计的一种补充手段。 关于测试用例设计方法的分享,到此告一段落。 Leo Never Stop Fighting!

July 1, 2020 · 1 min · jiezi

软件测试用例设计方法因果图法

边界值法是等价类划分法的补充,所以,它们是一对搭档。 那么,判定表法有没有它的搭档呢? 答案是,有的。那就是本篇文章分享的用例设计方法——因果图法。 定义因果图法: 一种描述输入条件的组合及每种组合对应的输出的图形化工具用来处理等价类划分和边界值考虑不到的情况,适用描述多种条件的组合,产生多个相应动作的测试方法;从程序规格说明书的描述中找出因果关系 因果图法,第一时间让我联想到的是,高中数学的排列组合。 关于这个联想,可能看完整篇文章后,你就有恍然大悟的感觉。 基本符号在实例分析之前,有些基本的因果图符号需要说明。 首先是原因与原因之间的关系: 其次是原因与结果之间的关系: 设计步骤需要特别说明的是,因果图相当于特殊的场景法,是判定表的搭档。 对于思维逻辑缜密的测试人员,可以直接写出判定表。 但是,有时候不能直接通过原因得到结果,需要借助中间状态,随着原因、结果不断增多,唯有依赖因果图才能更好地梳理个中关系。 具体的操作步骤如下: 分析程序的规格说明书中,哪些是原因,哪些是结果 原因:指输入条件或输入条件的等价类结果:指输出条件,给每一个原因和结果赋予一个标识符分析程序规格说明书中的描述,确定原因与原因,原因与结果之间的关系,画出因果图;由于语法环境的限制,一些原因与原因之间,原因与结果之间的组合不能直接出现。对于此类情况,在因果图中用记号标明约束或限制条件将因果图转化为判定表根据判定表的每一列设计测试用例实例分析题目:对于提交的作业,作业成绩达到80分或者已经得到老师确认,则允许进行下一课时的学习。1、确定需求中的原因与结果 2、确定因果图中的约束 首先,原因与原因之间,关于分数,A1 与 A2 是互斥关系(O);关于老师是否确认,A3 与 A4 是互斥关系(O)。 分数与老师是否确认之间可以独立存在,属于或关系(I) 其次关于原因与结果,各个原因可以直达结果,或者分数与老师是否确认进行两两组合,形成中间状态,再到达结果。 得到的因果与中间状态列表: 梳理关系得到因果图: 3、讲因果图转化为判定表: 4、根据判定表来写测试用例了。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 20, 2020 · 1 min · jiezi

软件测试用例设计方法判定表法

接下来4篇分享的测试用例方法,实际工作中不常用,但是能够为测试用例提供设计思路。 首先分享的是,判定表法。 等价类划分法和边界值法着重考虑输入条件,但是忽略了输入条件的各种组合、输入条件之间的相互制约关系。 因此,需要判定表法和因果图法作为辅助工具,协助梳理条件间的逻辑关系。 定义判定表法: 分析和表述若干输入条件下,被测对象针对这些输入做出响应的一种工具在遇到逻辑复杂的业务时,可以利用判定表理清期间的逻辑关系。 重要概念条件: 条件桩:需求规格说明书定义的被测对象的所有输入条件项:针对条件桩可能输入数据值 动作: 动作桩:针对条件,被测对象可能采取的所有操作动作项:针对动作桩,被测对象相应的可能取值 在上图的登陆页面中,条件桩指的是手机号输入和密码输入,条件项指的是正确的手机号或者错误的手机号。 另一方面,动作桩指的是输入手机号和密码后,是登陆成功?还是提示错误信息?动作项指的是对应动作桩的取值,假如关于登陆成功这个动作桩,为真时取1,为假时取0,那么点击登录按钮后,这个动作桩的动作项可能是1,也可能是0。 设计步骤理解需求,确定条件桩、动作桩设计及优化判定表填写动作项根据判定表中输入结果的表现,进行判定表的合并(非必须)简化判定表:如果输出相同,在对应输入中,有且只有一个条件的取值对动作不产生任何影响则合并在前面的登陆功能中: 正确的手机号及密码:登录成功手机号或密码为空:提示“手机号或密码不能为空”手机号或密码错误,提示“请输入正确的手机号或密码”根据以上条件桩和动作桩,生成判定表: 简化判定表:由于密码的正确与否,取决于手机号。 一般登录信息的数据库表,都是先到数据库表中找到对应的手机号,在找到手机号的前提下,再去匹配密码是否正确,如果手机号一开始就错了,就不会匹配密码。 其中空值是一种特殊的错误,并且能够覆盖到3个动作桩。 因此,后面3个关于“错误的手机号”的条件项,可以排除掉。 得到简化后的判定表: 最后,根据简化后的判定表,就可以编写测试用例了。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 20, 2020 · 1 min · jiezi

软件测试用例设计方法边界值法

本篇文章分享一个最易学,发现 bug 效率最高的测试用例设计方法——边界值法。 定义边界值法: 它是对等价类划分法的补充,它不是选择等价类的任意元素,而是选择等价类边界的测试用例基本思路正好等于边界值刚刚大于边界值刚刚小于边界值特殊:0与空、N/A、Null 还是之前的例子,这里有两个边界: 100999边界值法就是围绕这两个边界,进行用例设计。 那么涉及到的边界值:99, 100, 101, 998, 999, 1000 另外一个例子,微信中的红包金额。 通过图片底部文字,可以发现两个边界: 0.01200这时候,涉及到的边界值:0, 0.01, 0.02, 199.99, 200, 200.01 分享了2个例子,是不是感觉边界值法通俗易懂,易操作。 涉及到输入框的地方,基本上可以考虑用边界值法。 而且,边界值往往也是发现错误最多的点。 因为开发人员在编写代码时,不小心走神或者对于边界理解不清,就会把 >=,<= 写成 >,<。对于这种情况,用边界值就能发现问题点。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 20, 2020 · 1 min · jiezi

软件测试用例设计方法等价类划分法

本篇文章,来分享大家比较熟悉的测试用例设计方法——等价类划分法。 首先,我们可以使用上一篇文章介绍的场景法来梳理业务流程。 其次,根据流程中的每个节点的需求说明,使用等价来划分来设计用例。 定义等价类划分: 依据需求,将输入域划分为若干部分,再从每个部分中选取少数代表性数据当做测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他值。在同一个等价类中的数据,如果该测试用例通过,则代表该等价类的所有数据都通过测试,否则,都不通过测试。 图片中的输入框,是一个公司的用户 ID 输入框,限制输入3位数的整数。 由此可以分为3个等价类: 100-999少于100大于999第一个等价类 100-999,输入数据:202 通过测试,则代表其他100-999中的其他数据也通过测试。 适用场景对于等价类划分法,一般适用于有无限多种输入,但又不可能完全穷尽测试,此方法可以使得我们用较少的测试用例,尽可能多地将功能覆盖掉。 分类在等价类划分法中,可以将数据分为有效等价类和无效等价类。 **有效等价类: 有意义的输入构成的集合,对于需求规格说明书是合法的前面的例子中,100-999 属于有效等价类。 无效等价类: 不满足需求的集合,对于需求规格说明书是不合法的前面的例子中,后面两项分类,都属于无效的等价类。 设计步骤明确测试对象,非测试对象保证正确为每一个等价类规定一个唯一的编号 基于等价类划分的用例设计: 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步,最后使得所有有效等价类均被测试用例所覆盖设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖等价类的特点测试相同的内容如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷如果正确的划分等价类,可以大大降低测试用例的数量,测试会准确有效如果错误地将两个不同的等价类当做一个等价类,那就会遗漏一种测试情况相反,把同一个等价类看作两个不同的等价类,那么测试就会是冗余的注意事项:不但要考虑有效等价类,也要考虑无效等价类仔细划分,审查划分过于粗略可能会遗漏掉软件缺陷组织评审以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 20, 2020 · 1 min · jiezi

软件测试需求分析

本篇文章将从软件生命周期的第一步——需求分析开始,逐步深入地讲解软件测试实战工作。 需求,是软件项目研发的开始,是组建研发团队后的第一次集体参与讨论的内容,同样也是保障质量的重要一环。 为了让研发团队中各个岗位的人员充分理解需求,可以组织开展需求会议,进行需求澄清。 那么,在做需求澄清之前,先来了解什么是需求? 图片是一个网站的简单注册模块,比如,用户名长度40个字符、密码8-16位字母、数字下划线组合等,就是需求。 明白了什么是需求之后,进行需求澄清的时候,测试人员要深刻理解需求,在需求评审会议中,针对描述不清、不便于设计测试用例、找不准测试点、业务相关知识串联不起来的地方提出来,抛出疑惑,让产品经理给出说明。 比如,产生这样异常情况页面会给出什么提示信息?某个页面跳转后有几种状态,转态之间是如何转换的…… 多问几个为什么,后续的开展工作,可能就会更顺利。 上图中,仅仅针对快捷登录这个页面,就存在右侧的问题点需要了解清楚。 因此,为了需求会议能够达到预期的效果,参会人员都要提前细读需求文档,把问题点记录下来,然后在会议中高效解决。 作为一名测试工程师,你当然希望有一份详细清晰的需求文档。那实际的需求文档,又会是怎么的情况呢? 最差的情况:没有需求或者一句话需求比如:做一个像淘宝那样的电商购物平台。 如果你遇到这样一个需求,真的是运气糟糕到了透顶。在测试中,很重要的一点是,我对需求有一个预期结果,再带着自己的预期来执行测试,对比实际结果是否与预期的一致? 但是现在,连需求都没有,该怎么办? 其实也不必慌,遇到这种情况,可以组织开需求评审会议,共同来完善需求文档;其次公司内部也会有相应的业务学习,或者邀请相关的专家来作为顾问等。 一般的情况:有需求文档,但是很粗糙面对这种情况,有两种策略: 如果开发团队配合,可以要求开发或者需求分析人员完善需求文档如果因为各种原因,比如时间紧张,或者开发就是不愿意配合,那就需要自己通过沟通,对文档中不明确的点问清楚,做好记录切忌含糊不清就开始测试,于人于己都没有好处。 理想的情况:有详细的需求文档如果你的公司是这样的话,那就恭喜你了。 有了详细的需求文档,测试团队就可以通过详阅需求文档来进行测试点的梳理工作。对于需求中不明确的地方,找项目负责人或者需求人员进行沟通,做到对需求整体把握和理解,利于测试更好地进行。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 18, 2020 · 1 min · jiezi

一图总结软件测试原则策略模型生命周期

June 18, 2020 · 0 min · jiezi

软件测试生命周期

我们生而为人,会经历出生--> 婴儿--> 少年--> 青年--> 中年--> 老年--> 死亡的生命周期 同样,软件测试,也有其生命周期: 需求分析测试计划测试用例设计与开发测试执行测试评估 1、需求分析 前面开发测试模型的文章中提到,在敏捷模型中,测试人员在需求分析阶段就开始介入。 这时,测试人员对需求文档进行分解,了解需求,得出测试点与测试需求。 当然,需求文档不是专门为测试而制作的,所以,需要进一步邀请产品、研发等相关负责人一起开需求评审会议,对于需求文档中的测试点进行量化。 2、测试计划 经过了需求评审,明确测试需求后,根据需求编写测试计划,包括软件产品的主要功能、测试范围、测试环境、人员分配、时间进度安排等。 参考:软件测试计划 3、测试用例设计与开发 测试人员通过需求分析,了解软件相关功能的测试点,使用在测试计划中确定的测试技术与测试方法,对于已确定的测试条件进行逐步推敲,精炼而设计出来的,重点用于说明如何操作,产生何种结果的测试用例。 当然,一个人的思维往往存在局限性,所以,还需要由产品、开发以及测试团队内部的相关人员一起来评审测试用例,从而提高测试的覆盖率。 4、测试执行 测试执行,是测试人员最为关键的工作阶段,结合测试方法,运用手工或者自动化的手段执行测试,暴露出软件各方面的缺陷。最终,使得软件质量过关,满足客户要求。 5、测试评估 测试团队根据软件测试的结果进行评估,包括是否合格,满足上线条件,严重的 bug 是否已经都关闭,保证顺利上线,并做出测试报告总结。 参考:软件测试评估报告 经过这5步,完成了软件测试的一个生命周期。但并不意味着测试工作结束了,由于软件产品是不断迭代更新的,因此,又会按照此生命周期,进入到下一次循环。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 17, 2020 · 1 min · jiezi

软件测试模型其他模型W模型H模型X模型

W 模型W 模型:相对于 V 模型更科学,开发和测试基本并行开展,有利于及时发现问题;增加了软件各开发阶段中应同步进行的验证和确认活动,明确表示了测试和开发的并行关系。 缺点: 仍然把开发看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才开始下一阶段的活动,不能支持迭代,自发性以及变更调整H 模型H 模型:将测试活动分离出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来 特点: 1、测试是一个独立的过程; 2、测试达到准入条件,才可以执行; 3、测试对象是整个产品包,而不仅仅是程度、需求或相关说明书; 缺点: 对测试造成人力、物力、财力的浪费,对测试员的熟练程度要求比较高X 模型X模型:左边描述的是针对单独程序片段所进行的,相互分离的编码和测试,此后将进行频繁的交接,通过集成最终形成可执行的程序,再对这些可执行程序进行测试。 其中,己通过集成测试的成品,可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多条并行的曲线表示变更可以在各个部分发生。 除此之外,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式,往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。 缺点: 可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 17, 2020 · 1 min · jiezi

软件测试模型敏捷模型

敏捷模型是在互联网的快节奏下应运而生的,也是当前最为主流的开发测试模型。 在V模型中,描述了基本的开发过程和测试行为,它的优点在于,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了测试各阶段和开发各阶段的对应关系。 同时,它的局限性也相当明显,测试介入时间太晚,只是把测试作为编码后的一个活动,需求分析等前期产生的错误,直到后期的验收测试才能发现。 虽说“亡羊补牢”,但是测试越晚介入,付出的成本代价越大。基于V模型的痛点,引入了敏捷模型。 采用敏捷模型,相当于项目一诞生,就给它打了预防针。 关于敏捷模型的具体流程,如下图所示: 以抖音为例,在需求分析阶段,先收集用户的需求:市场上目前缺少短视频的APP,同时,有了今日头条的成功,能不能沿用它的设计思路,将展现形式由文字转变为短视频,通过标签推荐的算法,向用户推送他可能感兴趣的短视频呢? 基于这样的需求,形成需求文档,接下来,产品经理拉着团队里开发、测试、设计一起做需求评审。 除了开发根据需求文档做开发计划之外,与此同时,测试人员由于更早的介入到软件项目当中,也可以根据需求文档开始编写测试计划了。 形成测试计划之后,开始着手测试用例的设计与开发。 跟传统的瀑布模型、V模型不同,等到开发人员提测的时候,测试用例已经设计开发完成,可以直接开展测试工作。 执行测试的过程中,发现了 bug 立即反馈给开发团队进行修复,修复后进行回归测试,直到全部测试用例通过,由产品经理来验收。 以上就是关于敏捷模型的介绍,现在的互联网公司基本都会采用这样一套流程,只是不同的公司会有些细小的差别。 至于为什么越来越多的互联网公司青睐于快速迭代的敏捷模型? 主要是因为竞品的存在,例如抖音与快手、支付宝与微信支付、美团外卖与饿了么等,只要其中一方开发了新功能,另一家就需要针对性的开发类似的功能,来保持自己的用户粘性,不至于落后于竞争对手。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 17, 2020 · 1 min · jiezi

软件测试模型V模型

V 模型:是瀑布模型的改进,相当于瀑布模型的细化版。 具体的流程如图所示: V 模型的优点: 1、包含了底层测试(单元测试)和高层测试(系统测试); 2、清除地表示了开发和测试的各个阶段; 3、自上而下逐步求精,每个阶段分工明确,便于整体项目的把控 V 模型的缺点: 1、自上而下的顺序,导致测试工作在编码之后,不能及时地进行修改; 2、实际工作中,需求经常变化,导致 V 模型步骤反复执行,返工量很大,灵活度较低 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 17, 2020 · 1 min · jiezi

软件测试模型瀑布模型

瀑布模型,适用于结构化的软件项目,是面向过程的软件测试模型。 具体的流程如图所示: 项目计划:投入多少人,时间进度如何安排;需求分析:产品经理输出需求文档,项目组的人员再对这份文档进行分析,对需求进行判断、改进、完善;软件设计:开发团队根据确认后的文档进行功能设计;程序开发:代码编写;软件测试:测试团队制定测试计划,设计与开发测试用例,实施测试,总结与评估;集成维护选择瀑布模型必须满足的条件: 在开发时间内需求没有或者很少变化;分析设计人员对应用领域很熟悉;低风险项目(对目标、环境很熟悉);用户使用环境很稳定;用户除了提出需求以外,很少参与开发工作缺点: 测试滞后,在开发完成之后,早期的错误可能要等到后期才能发现,错误成本高瀑布模型,已经是一种古老的开发模型了,目前市场上按照这套模型进行开发测试的公司逐渐减少,主要是一些传统的互联网公司还在沿用它,例如银行的项目。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 17, 2020 · 1 min · jiezi

软件测试的原则

关于软件测试的原则,有以下五点: 第一,测试应尽早进行,最好是能够在需求阶段就开始介入。 千里之堤毁于蚁穴,对于测试,如果越早介入,问题就能越早被发现,修改或者调整方向的成本就会越小。 测试在需求阶段就介入,最严重的错误,无外乎是系统不能满足用户的需求,但是如果按照传统的瀑布模型,等到软件开发完成之后再进行测试,那么,万一偏离了方向,纠正过来的成本将是巨大的。 第二,负责软件开发的人员应避免检查自己的程序。 当局者迷旁观者清,自己犯的错误,往往意识不到。 当我们还是学生年代的时候,自己写的作文,如果是自己检查,很难找到错误。主要是受到思维惯性的影响,觉得这样表达并没有错,甚至是错别字也无法辨别出来。而如果交给其他同学或者老师来帮你检查,效果就不一样了。 这时候,有人就有疑问了,单元测试不是由开发人员测试的吗? 对的,这就相当于自检。每一个模块的代码实现什么功能,具体是怎样的实现逻辑,开发者自身是最清楚的。由开发人员做单元测试,能够高效地修正一些低级错误。 另外,也是因为测试人员的编码能力不足,开展单元测试效率低。所以,需要开发人员进行自检,这样的代码才有质量保证,而测试人员的作用就是,在代码已有的质量上,提升一个质量级别。 第三,设计测试用例既要考虑到合法情况,也要考虑不合法情况。 开发界有一句话:永远不要相信用户的输入。 关于微信红包的金额,虽然已经指定了输入范围是0.01-200元,但是,有时候,用户会有意无意就会输入不合法的内容。更何况,黑客会专门找转件的漏洞进行攻击。所以,合法与不合法的输入,都要兼顾考虑,做好限制管控。 第四,在测试程序时,不仅要检验程序是否做了该做的事情,还要检验程序是否做了不该做的事情,多余的工作中会带来副作用,影响程序的效率,甚至带来潜在的危害和错误。 这一项检验工作,主要是按照需求文档进行检测的,包括程序代码考虑是否周全,逻辑是否严密等。 第五,应长期保留所有测试用例,有助于以后修改程序后进行回归测试。 软件会长期进行迭代更新、升级,但是无法保证更新、升级的内容不会对原有的功能造成负面影响,因此,需要进行回归测试。 如果重新设计开发测试用例,将会耗费巨大的人力成本。 微信在开始阶段,是没有红包功能的,而增加这一项功能后,会不会对原有的聊天功能造成影响呢?这就需要进行回归测试了。 因为以前已经编写过聊天功能的测试用例,如果保留下来,就可以直接拿过来开始测试,否则,就需要重新编写。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 16, 2020 · 1 min · jiezi

软件测试的原则

关于软件测试的原则,有以下五点: 第一,测试应尽早进行,最好是能够在需求阶段就开始介入。 千里之堤毁于蚁穴,对于测试,如果越早介入,问题就能越早被发现,修改或者调整方向的成本就会越小。 测试在需求阶段就介入,最严重的错误,无外乎是系统不能满足用户的需求,但是如果按照传统的瀑布模型,等到软件开发完成之后再进行测试,那么,万一偏离了方向,纠正过来的成本将是巨大的。 第二,负责软件开发的人员应避免检查自己的程序。 当局者迷旁观者清,自己犯的错误,往往意识不到。 当我们还是学生年代的时候,自己写的作文,如果是自己检查,很难找到错误。主要是受到思维惯性的影响,觉得这样表达并没有错,甚至是错别字也无法辨别出来。而如果交给其他同学或者老师来帮你检查,效果就不一样了。 这时候,有人就有疑问了,单元测试不是由开发人员测试的吗? 对的,这就相当于自检。每一个模块的代码实现什么功能,具体是怎样的实现逻辑,开发者自身是最清楚的。由开发人员做单元测试,能够高效地修正一些低级错误。 另外,也是因为测试人员的编码能力不足,开展单元测试效率低。所以,需要开发人员进行自检,这样的代码才有质量保证,而测试人员的作用就是,在代码已有的质量上,提升一个质量级别。 第三,设计测试用例既要考虑到合法情况,也要考虑不合法情况。 开发界有一句话:永远不要相信用户的输入。 关于微信红包的金额,虽然已经指定了输入范围是0.01-200元,但是,有时候,用户会有意无意就会输入不合法的内容。更何况,黑客会专门找转件的漏洞进行攻击。所以,合法与不合法的输入,都要兼顾考虑,做好限制管控。 第四,在测试程序时,不仅要检验程序是否做了该做的事情,还要检验程序是否做了不该做的事情,多余的工作中会带来副作用,影响程序的效率,甚至带来潜在的危害和错误。 这一项检验工作,主要是按照需求文档进行检测的,包括程序代码考虑是否周全,逻辑是否严密等。 第五,应长期保留所有测试用例,有助于以后修改程序后进行回归测试。 软件会长期进行迭代更新、升级,但是无法保证更新、升级的内容不会对原有的功能造成负面影响,因此,需要进行回归测试。 如果重新设计开发测试用例,将会耗费巨大的人力成本。 微信在开始阶段,是没有红包功能的,而增加这一项功能后,会不会对原有的聊天功能造成影响呢?这就需要进行回归测试了。 因为以前已经编写过聊天功能的测试用例,如果保留下来,就可以直接拿过来开始测试,否则,就需要重新编写。 以上就是本篇文章所要分享的内容,欢迎各位大牛指正。你的指正,能让我在测试之路上快速成长。 Leo Never Stop Fighting!

June 16, 2020 · 1 min · jiezi

软件测试笔记十三单元测试的介绍和工具选择

前言单元测试通常是作为软件测试中基础的测试类型,用于测试单独的模块是否可以正常工作。它于功能测试不同,它更加关注的是代码内部的逻辑,而非是用户的需求。 单元测试定义前面粗略了介绍了单元测试的定义,详细的解释是:单元测试也称为模块测试或组件测试。在软件开发过程中,检查软件的单个单元或模块是否正常工作,它是由开发人员在开发人员的环境中完成的。 软件测试通常划分为四个层次,每个层次都会去验证软件产品的功能,质量和性能指标。它们是:单元测试,集成测试,系统测试和验收测试。 单元测试的目标隔离代码的每个部分。确保单个模块功能正确。在开发周期的早期,发现代码缺陷。早期介入,以节省测试成本。允许开发人员在以后重构或升级代码。单元测试的优势它在产品开发周期的早期发现问题。因此它降低了测试成本,早发现一个缺陷的成本要比晚发现它的成本低得多。在改变现有功能(回归测试)时,它同时可以保证减少缺陷。它简化了调试过程(测试驱动开发就是基于测试用例来完成功能开发)。调试是在程序中发现并解决妨碍软件正确运行的缺陷的过程。当实现单元测试时,发现测试失败时,只需要调试代码中所做的更改,就可以快速定位到错误。由于更好的编码标准和实践,它给组织提供了更好的代码文档。单元测试的内容单元测试的方法通常单元测试是使用白盒测试的方法 单元测试的类型单元测试可以是手动测试或者是自动化测试 什么时候执行单元测试它作为测试层次的第一层,通常是在集成测试之前完成。 单元测试有谁执行它需要由对于代码内部逻辑熟悉的人执行,通常是开发或者是白盒测试人员。 单元测试有哪些具体的任务首先需要准备单元测试计划: 准备测试计划回顾测试计划修订测试计划定义单元测试计划的基准数据其次是要准备测试用例和脚本: 准备测试环境和测试用例和脚本回顾测试用例和脚本修订测试用例和脚本定义单元测试用例和脚本的基准数据最后是单元测试的执行。 单元测试的工具市面上有很多单元测试的工具,它们可用于协助单元测试。具体的单元测试的工具的选择还是要根据项目的具体情况决定,比如说项目的具体技术栈,是否可以重用已有的单元测试工具等。我们将提供以下几个示例: Junit:Junit的目标是为JVM开发人员开发一个基础测试的测试框架。这包括关注java 8和更高版本,以及支持多种不同风格的测试。 TestNG:TestNG是一个受JUnit和NUnit启发的测试框架,但是它引入了一些新的功能,这些功能使它更加强大和易于使用,例如: 注释。使用各种可用的策略在任意大的线程池中运行测试(所有方法都在自己的线程中,每个测试类一个线程,等等)。测试您的代码是否是多线程安全的。灵活的测试配置。支持数据驱动测试(使用@dataprovider)。参数支持。强大的执行模型(不再是TestSuite)。由各种工具和插件(eclipse、idea、maven等)支持。嵌入BeanShell以获得更大的灵活性。运行时和日志记录的默认JDK函数(无依赖项)。应用服务器测试的依赖方法。.NUnit:它是.net语言的单元测试框架。最初是从JUnit移植而来的,目前的产品版本3已经被完全重写了,它有许多新特性,并且支持各种各样的.NET平台。 xUnit.net:xUnit.net是一个免费的、开源的、面向社区的.net框架单元测试工具xunit.net是由nunit v2的原始发明者编写的,它是用于c、f、vb.net和其他.net语言单元测试的最新技术。xunit.net与resharper、coderash、testdriven.net和xamarin一起工作。它是.NET基金会的一部分,根据他们的行为准则运作。它是根据Apache 2(OSI批准的许可证)授权的。 JMockit: JMockit是开源的单元测试工具jmockit是一个用于开发人员测试的java工具包,包括模拟api和代码覆盖工具。 EMMA:EMMA是一个用于测量和报告java代码覆盖率的开源工具包。EMMA支持大规模的企业软件开发,同时保持单个开发人员的快速工作和迭代团队中的每个开发人员现在都可以免费获得代码覆盖率,最主要的是可以很快的获得覆盖率! PHPUnit:PHPUnit是一个面向程序员的php测试框架。它是单元测试框架的xunit架构的一个实例。 Cantata:Cantata是一个单元和集成测试工具,使开发人员能够在本地和嵌入式目标平台上验证标准兼容或业务关键代码。Cantata通过自动化,帮助加速符合标准的动态测试要求: 测试框架生成测试用例生成测试执行结果诊断和报告生成TestComplete:TestComplete是一个适用于多种应用类型和技术的自动化测试环境,包括(但不限于)Windows、.NET、WPF、Visual C++、Visual Basic、Delphi、C++Builder、Java和Web应用程序和服务。 Mocha:Mocha是一个功能丰富的javascript测试框架,运行在node.js和浏览器中,使异步测试变得简单有趣。MOCA测试连续运行,允许灵活且准确的报告,同时将异常异常映射到正确的测试用例。托管在github上。 Jasmine:Jasmine是一个用于测试JavaScript代码的行为驱动开发框架它不依赖于任何其他JavaScript框架它不需要dom。而且它有一个干净、明显的语法,所以您可以轻松地编写测试。 总结单元测试作为测试的第一层次,被很早引入项目。所以在项目开始前,我们同时需要对单元测试的技术选型和测试案例的计划进行准备。这样才可以在项目研发阶段,同时实现单元测试,以保证功能模块的功能。如果大伙有关于单元测试的一些看法,也请留言区回复和分享。

November 5, 2019 · 1 min · jiezi

软件测试笔记十如何做到有效的集成测试

前言软件产品的构成都是非常复杂的,这也就意味着它将含有多个模块,这些模块通过接口进行交互。针对于这些集成模块的测试,我们称之为集成测试。也可以认为它是由单元测试扩展出来的。 集成测试的定义集成测试是测试单元模块之间的连接或数据传输的过程。它又称为I&T(集成与测试)。 它分为大爆炸法、自上而下法、自下而上法和三明治或混合集成法(自上而下和自下而上相结合)。这个过程是通过使用名为stub和Drivers的虚拟程序来执行,其不需要实现软件整个模块,而只是模拟与调用模块的数据通信即可。 它通常是在单元测试之后完成之后执行的。集成测试中涉及的每个模块都应该在集成测试之前进行单元测试。通过在集成测试之前进行单元测试,可以提高执行软件集成测试的信心。 集成测试也需要编写相应的测试计划,从而减少了测试的混乱,并为有效执行集成测试提供了清晰的路径。 集成测试的目标降低风险验证接口的功能和非功能行为是否符合设计和规定建立对接口质量的信心查找缺陷(可能接口本身或组件或系统内)防止集成接口的缺陷在后期测试中发现如何写集成测试用例假设网页程序中有三个模块,如“登录页”、“收件箱”和“删除邮件”。 在编写集成测试用例时,我们不关注单个模块的功能,因为在单元测试期间应该覆盖单个模块,在集成测试阶段我们主要关注模块之间的通信。根据上述假设,我们必须关注“登录页面如何链接到收件箱页面”和“收件箱页面如何链接到删除邮件模块”。 什么是大爆炸式的集成测试它是将所有模块合并一次,并在完成单个模块测试后验证功能。在大爆炸式集成测试中,只有在所有模块都准备好之后,才能集成各个模块。然后他们会去检查它是否表现良好。在这种类型的测试中,可能会出现一些缺点,例如,可能是在很后期发现缺陷。很难定位缺陷是来自于某个模块或者是接口,亦或是集成方面的问题。 什么是自上而下的集成测试 在自上向下的集成测试中,测试是自上而下进行的。首先测试高级模块,然后测试低级模块,最后将低级模块集成到高级模块,以确保系统工作正常。 在这种类型的测试中,如果模块还没有准备好进行集成测试,那么桩程序(stub)将用作临时模块。 什么是自下而上的集成测试 在自下而上的集成测试中,测试是自下而上进行的。首先测试底层模块,然后测试高层模块,最后将高层模块集成到低层,以确保系统按预期工作驱动程序用作集成测试的临时模块。 桩和驱动程序有什么区别桩和驱动程序用于组件级的测试 假设我们在一个应用程序中有两个模块,即“模块1”和“模块2”。开发人员只开发了应用程序的“模块1”。在他们完成“模块2”的开发之前,我们(测试人员)收到了测试“模块1”的要求。我们可以测试“模块1”,如果其与“模块2”没有依赖关系。假设“模块1”依赖于“模块2”。那我们该怎么办?在这种情况下如果想要测试“模块1”,需要开发人员创建一个桩(stub)模块来替换“模块2”。如果“模块2”依赖于“模块1”,但“模块1”尚未就绪,则采用相同的方法在本例中,我们使用驱动(driver)替换“模块1”。 像我们之前提过的登录并且登录邮箱页面的案例。您必须测试登录页面(假设,邮箱页面正在开发中)。登录页面将在登录后调用邮箱页面,但邮箱页面尚未就绪。为了克服这种情况,开发人员编写了一个虚拟程序作为邮箱页面。这个就是桩(stub)程序。 桩(stub)被称为“程序”。如果“调用的程序”不完整,则将其替换为桩。(这是自上而下的方法)。 再来说说驱动程序,登录页面已经准备好了,但不是邮箱页面。这次假设邮箱页面已经准备好测试,但是登录页面还没有准备好。为了克服这种情况,开发人员编写了一个类似于登录页面的虚拟程序。这个虚拟程序就是驱动程序,驱动程序也就是“调用程序”。如果“调用程序”不完整,则将其替换为驱动程序。(这种情况在自下而上的方法中发生)。 桩驱动自顶向下集成测试中使用桩自下而上集成测试中使用驱动程序在开发子程序时使用桩开发过程中使用驱动程序首先测试最上层的模块最底层模块最先测试它用来模拟未集成的底层模块的行为它用来模拟未集成的上层模块的行为桩是被调用程序驱动是调用程序什么是混合集成测试混合集成测试也称为三明治集成测试。它是自顶向下和自下而上集成测试的结合。 集成测试的工具一些集成测试工具如下: Citrus Integration TestingVectorCAST/C++FitNesseValidata总结集成测试是测试环节中很重要的一个部分,尤其是在今天软件产品的架构都在向微服务的架构转变,那么集成各个服务间的测试就显得尤为重要。希望对大家有所帮助,如果有疑问或者想法,也请大家留言区回复。

November 3, 2019 · 1 min · jiezi

软件测试笔记九怎么样写才是一个好的缺陷报告

前言作为一个开发人员,你是否会因为测试人员提交的缺陷报告缺少重要的内容而无法重现缺陷。作为一个测试人员,你是否会收到开发人员拒绝的缺陷报告,而显示的内容是“它是不可复制的”。这些都是在项目开发中经常会遇到的情况,通常的原因是因为缺陷报告的说明不够完整,没有足够多的有用信息。 举例本人曾经在测试中遇到过这样的一个问题,当我在使用Chrome进行测试的时候,发现在某一个特殊版本,产品所使用的Threejs的库无法正常使用。创建缺陷报告的时候,我列举了所有重现的步骤,但是没有列出具体使用的浏览器的类型和版本。 当开发人员试图重现这个缺陷的时候,他使用的是Firefox。而对应的功能在Firefox中可以正常使用,开发人员直接拒绝修复此缺陷,当我得到打回来的缺陷报告,我又重复了一下缺陷发现还是可以重现,结果又指给了开发人员。。。这样反复操作后,最后通过当面演示才把缺陷给开发人员展示清楚。这样的反反复复的过程,大量的浪费了开发和测试人员的时间和精力。 其根本原因是没有在缺陷报告中提到浏览器的类型和版本,如果测试人员在测试报告中忘记提到重现错误的关键信息,那将面临同样的后果。 有句老话:“你永远不会有第二次机会给人留下第一印象。” 编写好的缺陷报告是每个测试人员都应该具备的技能。您必须向开发团队提供所有必要的详细信息,以解决您的问题。 你想在不被拒绝的情况下修复提交的缺陷吗?所以你必须用一个好的缺陷报告来报告它。 如何写出一个好的缺陷报告?首先,先说下好的缺陷报告的构成要素:缺陷ID、报告者名称、缺陷报告日期、检测者、检测方式、项目名称、发布/构建版本、缺陷/增强、环境、优先级、严重性、状态、描述、复制步骤、URL、预期结果、实际结果、必要的截图和录像。 之前在《缺陷报告应该涵盖哪些内容》提到了这里列举的每一个要素的详细解释。 在正式提交缺陷报告前,一定要重要的事情重现三遍的原则,首先保证缺陷可以被重复三遍。 当确定缺陷存在后,那么确定是否同一个缺陷是否其他的测试人员也已经提交了。通常可以使用一些与缺陷相关的关键字,并在缺陷跟踪工具中搜索如果您没有发现与您发现的错误相同的问题,如果还不确信可以找相关的资深测试咨询,接着您可以开始编写错误报告。 等等,也许我们可以做的更多! 我们是否可以确定相关模块中是否存在相同的问题?如果您发现相关模块中存在相同的问题,则可以在相同的错误报告中解决这些问题。这样就可以节省编写多个缺陷报告的时间,提高测试效率。 接下来我们可以通过在上面提到的构成要素开始编写bug报告,并编写详细的步骤来重现。 在报告一个bug之前,做一个检查表并确保你已经通过了所有的要点。 缺陷重复2-3次。使用一些与缺陷相关的关键字,并在缺陷跟踪工具中搜索。测试类似模块,看看是否有相同的问题。立即报告缺陷。写下详细的步骤来重现错误。写一份好的缺陷总结在写错误报告的过程中注意你的语言,对事不对人,尽量抽取有用的信息。建议使用适当的屏幕截图来说明问题。在发布你的错误报告之前要校对两到三次。总结好的缺陷报告可以让阅读的人员快速准确的定位问题,同样也可以提高整个产品研发的效率。如果大家还有其他好的建议关于缺陷报告,也请在留言区回复我,谢谢。

November 2, 2019 · 1 min · jiezi

软件测试笔记二软件开发测试BUG的生命周期

生命周期无论是产品的开发,软件的测试,还是BUG都会有属于自己的生命周期,了解了这些生命周期和它们之间的内在联系,可以让我们更好的理解软件,测试和缺陷管理,同时可以帮助梳理我们平时工作中的一些任务和其在不同生命周期的定位。 软件的开发生命周期(SDLC)什么是软件开发的生命周期?软件项目中遵循的流程,以系统的方式开发产品并交付高质量的产品。通过遵循正确的软件开发流程,软件公司可以很好地应对市场压力并发布高质量的软件。 从需求阶段到部署和维护阶段,每个阶段都会产生生命周期下一个阶段所需的可交付成果。需求被转化为设计。根据设计生成代码。应根据要求对已开发的产品进行测试。测试完成后应立即进行部署。它的目的是创建一种高质量的系统,该系统可以满足或超出客户的期望,可以在当前和计划中的信息技术基础架构中有效且高效地工作,维护成本低廉,并且可以提高成本效益。下面就是一个标准的软件开发的生命周期图。 软件开发的生命周期的意义?可能有同学会有疑问了,即使没有这样一整套完整的软件开发的生命周期,我们也可以同样开发产品? 其原因有下面几点: 它给产品的相关利益者提供了项目计划的可见性同样可以帮助我们避免项目中会出现的一些风险同第一点类似,它使我们能够跟踪和控制项目因为每一个过程都会有可交付成果,所以我们可以保证每一个环节都是正确的,最终保证产品的顺利交付软件开发的生命周期的每一个环节需求收集阶段需求收集和分析是软件开发生命周期中最重要的阶段。业务分析师根据客户的业务需求从客户/客户那里收集需求,并按照规范记录需求(文档名称因公司的定义而有所差异。例如,客户需求规范文档(CRS),业务规范文档(BS),等,并提供给开发团队。需求定义阶段需求收集和分析完成后,下一步就是定义和记录产品需求,并获和客户沟通并且得到认可。这是通过SRS(软件需求规范文档)完成的。 文档中会包括在项目生命周期中要设计和开发的所有产品要求。此阶段涉及的关键人员是项目经理,业务分析师和团队的核心成员。此阶段的结果是软件需求规范。产品设计阶段 它有两层设计。第一层是产品的框架设计,它提供了要开发的软件产品的体系结构,由架构师和高级开发人员完成。第二层是定义产品中的每个功能应如何工作以及每个组件应如何工作,通常是接口设计。这些设计文档将作为下一个环节的输入。产品研发阶段 此阶段涉及所有开发人员。这是我们开始构建软件并开始为产品编写代码的阶段。此阶段的结果是源代码文档(SCD)和开发的产品。产品测试阶段 软件准备完成后,将其发送到测试部门,由测试团队针对各种缺陷对其进行全面测试。他们要么手动测试软件,要么使用自动测试工具,取决于STLC(软件测试生命周期)中定义的各个过程,并确保软件的每个组件都能正常运行,并且符合产品的需求文档。质量保证一旦确定软件没有错误,就进入下一阶段部署。这个阶段测试会对产品有个完整的质量评估。产品研发阶段 在成功测试之后,该产品将交付/部署给客户。部署由部署/实施工程师完成。一旦客户开始使用开发的系统,实际问题就会浮出水面,需要不时解决。解决客户发现的问题是在维护阶段。无法进行100%的测试-因为测试人员测试产品的方式与客户使用产品的方式不同。针对于这些问题,产品研发团队会通过补丁包或者更新版本来解决客户遇到的问题。软件开发生命周期模型的类型:软件开发的生命周期的每一个环节和活动是固定的,针对于这些环节我们有不同的软件开发生命周期模型。比如说经典的瀑布模型和比较火热的敏捷开发流程,下面简单聊一下这两个模型。 瀑布模型瀑布模型是传统和经典的模型。这是一种顺序设计过程,通常在SDLC中使用,在该过程中,进度被视为像瀑布一样自上而下的流动,经过需求收集,可行性研究/分析,设计,编码,测试,安装和维护等不同阶段。每个下一个阶段仅在完成上一个阶段的目标后才开始,并且相对独立。在与进度或成本相比质量更重要的项目中,首选此方法。这种方法最适合要求不变的短期项目。敏捷模型敏捷开发方法是非常流行开发方法之一。当然还有一些其他的敏捷开发方法,但广泛使用的常用方法是Scrum方法。Scrum方法是增量模型和迭代模型的组合,通常适用于项目需求经常变化的项目,和互联网项目。什么是软件测试生命周期(STLC)软件测试生命周期(STLC)确定要执行的测试活动以及何时可以完成这些测试活动。尽管不同组织之间的测试有所不同,但都会存在一个测试生命周期。具体可以分为下面几个过程: 需求分析阶段此阶段的进行依据是BRS(业务需求规范)文档。在此阶段,测试团队从测试的角度研究和分析产品的需求。此阶段有助于确定需求是否可测试。如果任何需求是不可测试的,测试团队可以在这个阶段与不同的部门(客户、业务分析师、技术主管、系统架构师等)进行沟通,以便可以规划缓解策略。可交付成果:所有可测试需求清单、自动化可行性报告,等 测试计划阶段这是真正测试过程的第一步。在这个阶段,测试经理/测试负责人通常需要确定整个项目的测试的工作量和成本估算。根据需求分析制定测试计划。在此阶段进行的活动,如资源统筹和规划、确定不同的测试角色和职责、工具选择(如果需要自动化)、测试的培训等。可交付成果:测试策略、测试计划和测试工作量估算文档。 测试设计阶段 测试团队准备测试用例、测试脚本(如果需要自动化)和测试数据。一旦测试用例准备好,那么这些测试用例将由团队成员或团队领导进行设计用例评审。另外,测试团队准备需求跟踪矩阵(RTM)来保证测试用例可以覆盖需求并且验证是否满足需求。可交付成果:测试用例、测试脚本(如果需要自动化)、测试数据。 测试环境搭建阶段此阶段可以与测试设计阶段并行启动。根据硬件和软件需求表建立测试环境。在有些案例测试团队可能不参与这个阶段,开发团队或者由客户提供测试环境,当然取决于不同产品的性质和特点来定。同时,测试小组应准备冒烟测试用例,以检查给定测试环境的是否符合标准。可交付成果:可用的测试环境。冒烟测试结果符合预期。 测试环境搭建阶段测试团队开始基于计划的测试用例执行测试用例。如果测试用例的结果是通过/失败,那么应该在测试用例中记录相应的结果。为失败的测试用例准备缺陷报告,并应通过bug跟踪工具(如Jira)向开发团队报告缺陷。缺陷修复后将重新测试。可交付成果:测试用例执行报告、缺陷报告。 测试结果分析和产品评价阶段 在此阶段我们将会准备测试最终报告,测试结果矩阵。测试团队召开会议,根据测试覆盖率、质量、时间、成本、软件、业务目标评估测试完成度。测试团队分析测试结果(如测试用例、缺陷报告等),以确定将来必须实施的策略,这将有助于消除即将到来的项目中的流程瓶颈。将根据上述标准编制测试度量和测试结束报告。可交付成果:测试最终报告、测试结果矩阵 什么是产品缺陷的生命周期(BLC,DLC)缺陷生命周期是在软件开发过程中,bug也会有一个完整的生命周期。Bug应该经过什么样的生命周期才能关闭。 Bug生命周期的变化取决于所使用的工具(qc、jira等)和组织中遵循的缺陷管理过程。 什么是一个BUG?软件缺陷可以定义为软件的异常行为。怎么样定义异常行为,它可能是不符合我们的需求文档,软件本身的异常,比如产品的崩溃,性能差等问题。缺陷的生命周期是从发现缺陷时开始,在确保缺陷不被重现后,在缺陷关闭时结束。 产品缺陷的生命周期的环节 创建缺陷当测试人员发现新的缺陷时。他应该向开发团队提供一份适当的缺陷文档,来帮助重现和修复缺陷。在此状态下,测试人员发布的缺陷状态为“创建”。分配缺陷处于创建状态的缺陷将通常由测试负责人/项目负责人分配给开发团队。一旦分配了缺陷,缺陷的状态就变为“已分配”。确认(打开)缺陷 开发团队开始分析确认缺陷并开始修复工作。解决缺陷 当开发人员进行必要的代码更改并验证更改通过时,缺陷的状态将更改为“已修复”,缺陷将传递给测试团队。待测试缺陷 如果状态为“待测试”,则表示缺陷已修复并已经准备好测试是否已修复。需要开发提供必要的对应的产品版本信息或者是补丁。验证缺陷在开发人员修复错误后,测试人员将重新验证该缺陷。如果在软件中没有检测到缺陷,将更改其状态为“已验证”。关闭缺陷 在验证通过后,那么bug的状态将被更改为“关闭”。重新打开缺陷 如果缺陷在重新测试后,发现并没有修复,那么测试人员需要将缺陷状态更改为“重新打开”,需要再一次经过“修复”。重复缺陷 如果缺陷重复了两或者多次,或者缺陷与缺陷的概念或者深层次的起因相同,开发团队将状态更改为“重复”。延迟修复缺陷 在某些情况下,项目经理/测试或者开发主管可能会将缺陷的状态设置为延迟。如果在发布结束时发现缺陷,并且该错误很小或不重要,通常会被建议到下一个版本中修复。或者客户有新的需求变更,通常也会将缺陷状态更改为“延迟修复”,并将在下一版本中修复。拒绝修复缺陷 如果系统是按照需求文档实现的,而缺陷仅仅是由于一些误解(例如使用了旧的需求或未定义的特性)造成的,那么团队领导或开发人员可以将这些错误标记为“拒绝修复”。当然这里还有一些其他的环节比如说: 无法解决的缺陷:技术无法支持,产品架构设计的缺陷,解决缺陷的成本过高。无法重现的缺陷:测试环境不匹配、错误的缺陷文档、数据的不匹配、软件版本不匹配,等原因引起的缺陷需要更多信息的缺陷:如果开发人员无法按照测试人员提供的步骤来重现缺陷,那么开发人员可以将状态更改为“需要更多信息”。在这种情况下,测试人员需要添加详细的重现步骤,并将bug再次分配给开发团队进行修复。如果测试人员编写了一个好的缺陷文档,通常就不会发生这种情况。总结这里大概的介绍了产品研发,软件测试和缺陷的生命周期。这里有助于我们理解测试在整个产品研发生命周期的定位,同时也可以帮助理解测试生命周期的每一个环节,来定义我们每一测试环节的需要和输出,帮助我们更好的进行测试,来提高产品的质量。

October 22, 2019 · 1 min · jiezi

蚂蚁金服OceanBase挑战TPCC丨TPCC基准测试之链路层优化

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注,为了更清楚的展示其中的技术细节,我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读,共包括六篇: 1)TPC-C基准测试介绍2)OceanBase如何做TPC-C测试3)TPC-C基准测试之SQL优化4)TPC-C基准测试之数据库事务引擎的挑战5)TPC-C基准测试之存储优化6)TPC-C基准测试之链路层优化 导语在 TPC-C 标准定义中,测试系统分为 RTE(Remote Terminal Emulator)和 SUT 两部分。在实际的 TPC-C 测试流程中,不只是对 DB 端能力的考验,对链路中的所有组件都存在极大的资源消耗和压力。以这次 6088万 tpmC 测试结果看,我们一共在 64 台 64C128G 的云服务器上运行了 960 个 RTE 客户端,来模拟总计 47942400 个用户 Terminal,最后还需要基于这么多 RTE 统计结果进行一致性和持久化审计验证。而 SUT 又拆分为三部分:WAS(Web Application Server) 、OceanBase Proxy(OBProxy) 和 OceanBaseServer(OBServer)。RTE 的请求到 WAS,然后 WAS 通过 OceanBase 客户端来访问 OBProxy,OBProxy 会将请求转发到后端 OceanBase 集群中最佳的 ObServer 去执行请求。WAS 和 OBProxy 是 RTE 和 OBServer 之间的桥梁,这个桥梁对于承载压力起着至关重要的作用。本次TPC-C 基准测试中,OceanBase 访问链路上主要涉及两个组件: ODBC接口及驱动 ...

October 14, 2019 · 2 min · jiezi

避开这2个误区测试目标-KPI-不再难设

阿里妹导读:好的开始是成功的一半!工作中,目标的设置是最不能马虎的事情。今天,我们请来孙阳(阿里巴巴测试开发专家),他从11年入职至今已有8年。在测试技术目标的KPI设置上,他有一些想法要与你分享。常见误区误区一:我能做什么,就做什么? 我们在讲测试能力建设的时候,往往会说我们有什么样的问题,所以要建什么样的测试能力,要做到什么样之类。这里经常能看到大家在设置目标的时候,思考路径往往是“我能做什么,我要怎么做”。 比如,海外没有真机环境,所以我们需要建设海外真机环境。接下去就会想到我们在海外有办公室,所以上半年的目标就是在海外办公室部署真机环境,技术方案上可以采用某个方案。 看上去没有什么问题,但是如果你仔细想一想,就会发现这个目标其实禁不起推敲。上半年建了海外环境,那下半年要建什么?这当中对国家选择的标准是什么?对真机环境建设的成本、稳定性、速度、可移植性等要怎么衡量?如果只是觉得业务上需要海外环境,我也能做海外环境,就去做了,那在方案选择上可能就会存在局限性,比如当前的方案就很依赖办公网的建设,其实不利于在世界范围内复制。 这种定目标的方式,很容易变成:今年没有能力,我建了某个能力,明年我发现这个能力不完善,然后我又做了优化一二三。这样做规划, 没有体系,缺乏前瞻性,也看不到终局。 误区二:拿手段当目标 有的同学说,我要做自动化调度中心,整合各种自动化平台,解决自动化调度问题,统一所有自动化测试件的执行。上半年的目标就是把平台重构,接入测试件类型一二三四。 这就是典型的拿手段当目标了,我们做自动化调度中心,这是一个手段,而不是目标。 目标是要结合业务测试的痛点问题来的,比如,目前自动化能力分散,在持续集成能力落地时,自动化能力集成成本高。那这时候我建立调动中心的目的就变成了降低持续集成自动化集成成本,然后就可以对这个成本进行度量,以描述我达到的阶段。同时,对平台集成能力也可以进行度量,建立你的子目标:比如可扩展性、稳定性等等。 技术目标设置的思考路径在说思考路径之前,我想先分析一下,一般的技术目标有哪几种类型。 在质量团队来说,一般我们的技术目标会有两种,一种是做原子能力,解决某一类问题,比如UI自动化、接口自动化、doom等等;二是建一个整合平台,做原子能力的调度,打整体效果。 那么接下来我就以活动质量中心的目标设置来谈一下我的思考路径。 平台整合型 我们在说到平台整合的时候,往往给自己找的价值点都是:降低工具使用成本、沉淀保障策略之类,要降低工具使用成本,其实一个门户网站做个导航可能就能解决问题;而沉淀保障策略,一个文档也能解决问题。所以如果你把价值定位在这两个方面,最多就是量变,很难做出质变。其核心问题是: 没有对业务的测试工作产生改变 ,也就是目标和价值没有想清楚。 定义目标我认为,做平台能力整合,想要做出质变, 一定是要对工作模式发生一些变化的 。你把一堆能力整合到一起,肯定是希望这些能力能够在某一件事情上产生合力,而这个合力所产生的效果,我认为就是能够对这件事情的模式,产生一些变化。 比如,aone(研发工具平台)整合了一堆能力,改变了研发的工作模式。 那么要怎么去思考这样的变化呢?我觉得有以下几个步骤: 1)先从问题出发,聚焦到一个域,定义出当前工作模式的一个状态,即:当下的阶段。 2)把目光放长远,从三年后往回看,你期望的工作模式是什么?即:愿景的阶段。 3)一年内我期望给工作带来的变化是什么?即:短期目标。 按照这个三个步骤去拆解问题,把终局和阶段想清楚,就能把平台的工作的价值整明白了。 能力建设在定义清楚当前阶段、愿景和目标之后,我们就需要来看Action是什么了,也即是说,为了实现我的目标和愿景,我需要做的事情有哪些。 这时候我就可以根据目标进行拆解,明确哪些是平台架构需要完成的,哪些是原子能力需要提升的,然后看当前的短板在哪里,重点投入兵力建设。 举个例子以活动质量中心为例,我们先来灵魂拷问: 当下我们对会场的质量保障模式是:S级(重大项目)大促半自动化、日常活动全裸奔; 如果往后做三年,我希望给这件带来的变化是:以场景化的方式、针对不同活动,提供个性化的全自动化保障策略; 一年内我能达到的台阶:所有营销类活动全自动化保障。 在定义清楚目标之后,就要来看达成目标我需要建设的能力了。 比如,我要在今年实现所有营销类活动全自动化保障,我就需要做这几件事情: 1)建立活动质量中心,和研发活动一体化系统对接,实现关键节点(选品、搭建)环境的自动化检测和流程卡口。 2)针对会场特色,把核心原子能力做厚。 而往三年目标走的话,我还需要:沉淀保障能力模板,针对不同类型活动提供场景化解决方案(比如3C和大工业);活动覆盖面拓展,系统对接导购系统等。那这些的优先级在本财年就会被降低。 平台能力整合型的,我认为大概就是这个思路了,下面再来看看原子能力型的。 原子能力型 所谓原子能力,一定是解决某一类型问题的,比如会场UI自动化,解决的就是会场UI层质量问题。 针对原子能力的KPI,我认为其思考路径应该是这样的:先定义问题,再定义目标,然后思考需要能力项,再根据指标思考方案和实施路径。 定义问题明确当前的问题是什么,这里对问题的分析需要更加全面,要有抽象能力。比如当你遇到了一个单点的问题,可以思考这个问题是否具备通用性,可能一个个例问题背后,是一个普遍的现象。而越是抽象的问题,解决的难度越大,而价值也越大。 以活动会场UI自动化为例,开始我想解决的是S级(重大项目)大促会场质量保障的问题,后来想想这东西一年用两次,不划算,而日常几百次的营销活动会场都是裸奔,为什么我不能把S级(重大项目)大促保障的思路复用到日常会场呢?然后再往外延展,导购活动的页面质量,能不能用同样的思路解决呢?最终,我定义的会场UI自动化能力要解决的问题就是:所有活动类型的会场UI质量保障。 定义目标和能力项所谓的价值,就是要把问题解决到什么程度。问题解决得越彻底,价值越大,所以我们在解决问题的时候,姿势一定帅,不能是一个临时方案,而要有长效机制。 在明确了目标之后,就可以分析要实现这个目标,我们所需要的能力项有哪些了。 还是以活动会场UI自动化为例,作为测试能力,我认为必须能够替代手工测试。比如破图、死链、样式错乱、空楼层、空白品、重复品、无价格品等等影响用户体验的问题。所以,对于问题的覆盖面肯定有要求。 然后,运行速度要快,要给运营及时的反馈,否则做为发布卡点,体验很差。再者,对稳定性和误报率肯定有要求,假摔会导致排查成本增加,也会给运营发布的体验造成负面影响。 这样分析下来,我相信,能力项也就出来了:覆盖率、执行速度、稳定性。 定义指标定义了目标和能力项,之后就需要对每一个能力项做到什么程度进行定义,这就是我们说的指标了。 比如覆盖率上,我希望脚本能发现所有问题,而所有问题又很难定义,所以,我至少希望脚本能替代手工,那我的KPI就可以定义为:脚本覆盖所有手工测试的case,实现会场内容全自动化检查。 在执行速度上,我们希望做到2分钟内执行完成。 在稳定性上,我们希望成功率达到三个9,误报率小于1‰。 当然,有时候由于缺乏历史数据积累,很多数字只能靠拍,但是拍也不是乱拍。我们可以从业务上的效果来思考,比如执行速度,我们如果希望一次S级大促所有会场在15分钟之内完成测试,那么根据会场数量、执行机的数量,就可以反推出单个case的运行时长,而这个就是我们能力项的指标了。 方案和实施路径选择好了,根据以上的分析,我们已经得到了能力建设的目标和指标,那在方案的选择和实施路径上也就会相对清晰了,这里本文就不再赘述了。 小结在很多时候,能力整合和原子能力往往是相辅相成的,能力整合打应用场景,原子能力打解决问题的深度,只有结合起来很才能最大化价值。但是在定义KPI的时候,两者其实可以分开考虑,这样在团队资源投入上也更容易分工和形成合力。 另外,思考价值、目标的过程是很折磨人的,但是我认为这是一个锻炼“思考力”的方式,一旦习惯了以后,就会按照这个思考路径来想问题了。 本文作者:孙阳阅读原文 本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。

October 14, 2019 · 1 min · jiezi

蚂蚁金服OceanBase挑战TPCCTPCC基准测试之数据库事务引擎挑战

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注,为了更清楚的展示其中的技术细节,我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读,共包括五篇: 1)TPC-C基准测试介绍2)OceanBase如何做TPC-C测试3)TPC-C基准测试之SQL优化4)TPC-C基准测试之数据库事务引擎的挑战5)TPC-C基准测试之存储优化 本文为第四篇,其它文章已同步发布,详情请在“蚂蚁金服科技”公众号查看。 OceanBase 这次 TPC-C 测试与榜单上 Oracle 和 DB2 等其他数据库在硬件使用上有非常大的不同,OceanBase 的数据库服务器使用的是 204+3 台型号是 ecs.i2.16xlarge 阿里云 ECS 服务器,其中 204 台作为 data node,还有 3 台作为 root node,每位读者都可以在阿里云网站上轻松按需购买。如果读者翻看 Oracle 和 DB2 的 TPC-C 测试报告会发现,这些数据库都会使用专用的存储设备,例如前最高记录保持者 Oracle 在 2010 年的测试,使用了 97 台 COMSTAR 专用的存储设备,其中 28 台用来存储数据库的重做日志(Redo Log)。 硬件的差异给软件架构提出了完全不同的挑战,专用的存储设备其内部通过硬件冗余实现了设备自身的可靠保证,数据库软件在使用这样的存储设备时就天然的预设了数据不会丢失。但是,这种方式带来了成本的极大消耗,专用的存储设备的价格都是特别昂贵的。 OceanBase 使用通用的 ECS 服务器提供数据库服务,并且只使用 ECS 机器自带的本地硬盘做数据存储,这是最通用的硬件条件。但是这种方式对软件架构提出了很大的挑战,因为单个 ECS 服务器的不如专用的存储设备可靠性高。这也对 OceanBase 的事务引擎提出了很大的挑战,OceanBase 是在普通的 ECS 服务器上就可以实现 ACID 特性。 TPC-C 测试是对事务 ACID 特性有完整并且严格的要求。下面分别介绍 OceanBase 针对事务 ACID 的特性的解决方案。 ...

October 9, 2019 · 1 min · jiezi

学习单元测试告别祈祷式编程

祈祷式编程祈祷式编程如果代码中包含以下代码 或者上线后进行这种活动 那么这种编程方式就是祈祷式编程。 用流程图表示基本就是这个样子。 祈祷式编程有什么危害呢? 累,每次写完代码还需要再祈祷不受控,代码运行结果主要看运气,大仙忙的时候可能保佑不了解决这个问题有好多种方法,单元测试是其中之一。 单元测试什么是单元测试单元测试是由开发人员编写的,用于对软件基本单元进行测试的可执行的程序。单元(unit)是一个应用程序中最小的课测试部分。(比如一个函数,一个类google 把测试分成小型测试、中型测试和大型测试。单元测试基本和小型测试的作用类似,但是通常也会使用mock或者stub 的方式模拟外部服务。 理想情况下,单元测试应该是相互独立、可自动化运行的。 目的: 通常用单元测试来验证代码逻辑是否符合预期。完整可靠的单元测试是代码的安全网,可以在代码修改或重构时验证业务逻辑是否正确,提前发现代码错误,减少调试时间。设计良好的单元测试某些情况下可以比文档更能反应出代码的功能和作用。 单元测试这么多优点为什么有人不喜欢写单元测试呢? 单元测试太费时间了,对于编写单元测试不熟练的新手来说,编写单元测试可能比写代码的还费时间单元测试运行时间太长(这通常是单元测试设计不合理或者代码可测试性较差造成的祖传代码,看都看不懂怎么写单元测试(这个确实优点棘手。。可以考虑先给新代码加单元测试不会写单元测试这篇文章主要关注第四个问题,如何写单元测试。 单元测试的结构首先看一下单元测试的结构,一个完整的单元测试主要包括Arrange-Act-Assert(3A) 三部分。 Arrange--准备数据Act--运行代码Assert--判断结果是否符合预期比如我们要给下面这段代码(golang)加单元测试: func Add(x, y int) int { return x + y}单元测试代码如下: import "testing"func TestAdd(t *testing.T) { // arrange 准备数据 x, y := 1, 2 // act 运行 got := Add(x, y) //assert 断言 if got != 3 { t.Errorf("Add() = %v, want %v", got, 3) }}如何编写好的单元测试什么样的单元测试才是好的单元测试呢?先看一个例子: ...

October 7, 2019 · 3 min · jiezi

前端单元测试入门3react测试

1.react测试体验1.1安装create-react-app react-testcd react-test1.2 创建sum.jsmodule.exports = function(a,b){ return a+b;}1.3 创建sum.spec.jslet sum = require('./sum');it('a+b',function(){ expect(sum(1,2)).toBe(3);});1.4 运行测试npm test2.enzyme测试 Shallow Rendering(浅渲染)指的是,将一个组件渲染成虚拟DOM对象,但是只渲染第一层,不渲染所有子组件,所以处理速度非常快。它不需要DOM环境,因为根本没有加载进DOMfind()方法:只支持简单选择器 类选择器、id选择器、标签选择器、复合选择器2.1 安装enzymenpm i enzyme enzyme-adapter-react-16 -D2.2 创建 TodoInput.jsimport React, { Component } from 'react';export default class TodoInput extends Component { handleKeyDown = (event) => { let code = event.keyCode; if (code == 13) { let text = event.target.value; this.props.addTodo(text); event.target.value = ''; } } addTodo = () => { let text = this.todo.value; this.props.addTodo(text); this.todo.value = ''; } render() { return ( <div> <input ref={input => this.todo = input} onKeyDown={this.handleKeyDown} /> <input id="addBtn" onClick={this.addTodo} defaultValue="增加" /> </div> ) }}2.3 创建 TodoInput.spec.jsimport React from 'react';import Enzyme,{shallow} from 'enzyme';import TodoInput from './TodoInput';import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({adapter:new Adapter()});//http://airbnb.io/enzyme/docs/api/ShallowWrapper/find.html//http://airbnb.io/enzyme/docs/api/selector.htmlit('shoud render 请输入',function(){ const wrapper = shallow(<TodoInput/>); const h3 = wrapper.find('h3'); const input = wrapper.find('input'); expect(h3.text()).toBe('待办事项'); expect(input.props().defaultValue).toBe('请输入');});2.3 创建 TodoList.jsimport React, { Component } from 'react';import TodoItem from './TodoItem';export default class TodoList extends Component { render() { return ( <ul> { this.props.todos.map(todo => <TodoItem key={todo.id} todo={todo} delTodo={this.props.delTodo} toggleTodo={this.props.toggleTodo} />) } </ul> ) }}2.4 点击事件import React from 'react';import Enzyme,{shallow} from 'enzyme';import TodoInput from './TodoInput';import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({adapter:new Adapter()});//http://airbnb.io/enzyme/docs/api/ShallowWrapper/find.html//http://airbnb.io/enzyme/docs/api/selector.htmldescribe('测试TodoInput',function(){ let todos; beforeEach(()=>{ todos =[{text:'1'},{text:'2'}]; }); it('shoud render 请输入',function(){ let wrapper = shallow(<TodoInput/>); const h3 = wrapper.find('h3'); const input = wrapper.find('input'); expect(h3.text()).toBe('待办事项'); expect(input.props().defaultValue).toBe('请输入'); }); it('点击按钮的时候调用addTodo方法',function(){ let addTodo = jest.fn(); let wrapper = shallow(<TodoInput addTodo = {addTodo}/>); let button = wrapper.find('button'); button.simulate('click'); expect(addTodo).toBeCalled(); });});2.5 TDDTDD是测试驱动开发(Test-Driven Development)是敏捷开发中的一项核心实践和技术,也是一种设计方法论TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码创建reducer.jsconst ADD_TODO = 'ADD_TODO';const DEL_TODO = 'DEL_TODO';let INIT_STATE = [{id:1,text:'1'},{id:2,text:'2'}];function reducer(state=INIT_STATE,action={}){ switch(action.type){ case ADD_TODO: return [...state,action.todo]; case DEL_TODO: return state.filter(item=>item.id != action.id); default: return state; }}module.exports = reducer;创建reducer.spec.jslet reducer = require('./reducer');const ADD_TODO = 'ADD_TODO';const DEL_TODO = 'DEL_TODO';describe('reducer',()=>{ let INIT_STATE = [{id:1,text:'1'},{id:2,text:'2'}]; it('初始状态',()=>{ expect(reducer(undefined,{})).toEqual(INIT_STATE); }); it('增加todo',()=>{ let todos = reducer(INIT_STATE,{type:ADD_TODO,todo:{id:3,text:'3'}}); expect(todos).toEqual([...INIT_STATE,{id:3,text:'3'}]); }); it('删除todo',()=>{ let todos = reducer(INIT_STATE,{type:DEL_TODO,id:2}); expect(todos).toEqual([{id:1,text:'1'}]); });});2.6 测试点击事件import React from 'react';import Enzyme,{shallow} from 'enzyme';import TodoItem from './TodoItem';import Adapter from 'enzyme-adapter-react-16'; import { wrap } from 'module';Enzyme.configure({adapter:new Adapter()});//http://airbnb.io/enzyme/docs/api/ShallowWrapper/find.html//http://airbnb.io/enzyme/docs/api/selector.htmldescribe('TodoItem',function(){ it('todo',()=>{ const wrapper = shallow(<TodoItem todo={{id:1,text:'1'}}/>); expect(wrapper.text()).toMatch(/1/); expect(wrapper.hasClass('todo')).toBe(true); expect(wrapper.hasClass('todo-selected')).toBe(false); }); it('todo-selected',()=>{ const wrapper = shallow(<TodoItem todo={{id:1,text:'1'}}/>); expect(wrapper.text()).toMatch(/1/); wrapper.simulate('click'); expect(wrapper.hasClass('todo')).toBe(false); expect(wrapper.hasClass('todo-selected')).toBe(true); });});2.7 mountmount将React组件加载为真实的DOM ...

September 10, 2019 · 2 min · jiezi