官方网站的必要性,四川网站建设方案,怎么快速仿wordpress站,计算机网络技术专业主要学什么自动化测试介绍
自动化测试(Automated Testing)#xff0c;是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架#xff0c;编写自动化测试用例#xff0c;来模拟手工测试过程。比如说#xff0c;在项目迭代过程中#xff0c;持…自动化测试介绍
自动化测试(Automated Testing)是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架编写自动化测试用例来模拟手工测试过程。比如说在项目迭代过程中持续的回归测试是一项非常枯燥且重复的任务并且测试人员在每天重复劳动的工作之下也丝毫得不到成长。此时开展自动化测试就能够帮助测试人员从重复、枯燥的手工测试中解放出来提高测试效率缩短回归测试时间。一般来说自动化测试通常都会跟持续集成系统比如Jenkins配合使用。
但在自动化实践过程中往往会发现理想和现实之间的差距很大。自动化测试的劣势主要体现在以下几方面
相对手工测试自动化测试对测试人员的要求相对较高测试用例需要根据版本迭代进行更新有一定维护成本不能指望自动化测试去发现更多新的BUG自动化测试能发现的缺陷远远比手工测试少自动化测试的产出价值往往在于长期的回归测试短期内发挥的作用可能不明显
希望借助自动化流程解决的问题
测试时间紧张手工测试可能覆盖不全容易错过某些边界情况模块间强耦合时单纯从页面进行测试时比较难深入的发现问题回归测试时需要投入较大的人力/工时实现手工测试无法达成的测试任务通过编写测试用例加深对业务/数据的认知有助于下阶段迭代中发现隐藏的问题
引入自动化测试的前提条件
项目周期长需求变动不频繁 测试用例的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本而脚本的维护本身就是一个代码开发的过程需要修改、调试。如果所花费的成本不低于利用其节省的测试成本那么自动化测试便是失败的。
项目中的某些模块相对稳定而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试而变动较大的仍是用手工测试。
自动化测试脚本可重复使用 如果费尽心思开发了一套近乎完美的自动化测试脚本但是脚本的重复使用率很低致使其间所耗费的成本大于所创造的经济价值自动化测试便毫无意义。
测试任务手工测试难以实现 比如压力测试大数据或者大量重复数据测试必须有自动化工具的支持。
做自动化测试需要具备的能力
拥有编码能力 至少要熟悉自动化工具/框架的代码语言最好有一定的编码能力同时代码逻辑要清晰否则不仅不能保证用例的逻辑性、业务性与健壮性等要素也不能保证效率熟悉被测系统 熟悉被测系统对任何测试人员来说都是最起码的要求掌握一个自动化测试框架/工具 可以根据所掌握的代码学习一门自动化测试的框架如 Selenium/Appoum/Robot Framework/Nunit/TestNG等不断学习善于学习知其然知其所以然 “落后就要挨打。”
自动化用例一般在哪个阶段完成
一般落后于新功能的手工测试阶段可以在手工用例执行完成或功能上线后再去补充自动化的用例。 自动化不是跟着新需求走而是测变化的东西对不变东西的影响一定不要做为了自动化而自动化的工作。
分层自动化测试
在理解分层自动化之前我们先看一下经典的测试金字塔。 UI层界面自动化测试。可以看出它的价值最小它最接近用户真实场景也容易发现问题但它的实现成本最高且太容易受外部依赖容易影响脚本成功率。总体来说适当的界面自动化测试是有必要的但是没有必要在UI层投入太多 Service层接口自动化测试。它的价值居中覆盖大多数主要的接口是比较合适的。这一层要求测试人员对系统的结构和系统间的调度非常清楚同时要了解接口逻辑关系否则接口测试代码很容易遗漏一些异常场景 Unit层单元测试。最有价值的测试但是对测试人员要求比较高一般由开发人员完成否则只能采用结对编程。 通常来说手工测试是最基本的可以做到接近100%,而对于自动化测试来说它更像是一件防弹衣用来防护身体的主要部位。有人认为自动化率提高了就可以节省人力这实际是非常片面的因为提高自动化率意味着需要投入更大的人力在维护的成本上。因为系统的需求是在不断变化的每一个变化都会导致自动化测试用例需要更新调整。 所以自动化测试做到什么样才算好也要结合上面的测试金字塔来分析。对于UI层面的自动化测试保证少量必要的主流程即可切勿在这一层面将自动化测试的防弹衣变成臃肿的宇航服Service层面的接口自动化测试可以考虑覆盖大部分的流程Unit层面的单测做到100%是最好的即使有需求变化一般也很少影响到已有的用例。一般来说单元测试可以发现80%的缺陷。
设计自动化用例的原则
基本原则
自动化测试用例的范围必须是相对核心的业务流程即覆盖主体功能的核心测试点和重复执行率较高的模块在测试脚本和被测代码都保持不变的情况下测试用例的结果应该是稳定的这一点非常重要除非是必要的情况否则任何用例都应当避免做持久化的操作以保证环境始终是干净的Once Written, Run Anytime as Desired 不是所有的手工测试用例都可以使用自动化测试来实现自动化测试替代不了手工测试两者的有效结合是保证项目质量的关键。回归测试场景中测试用例的选择一般以正向为主逆向为辅
用例设计原则
保持Case的独立性
通常来说一个Test Suite下包含了一组相近的或者有关联的Test Cases。而每一个 Test Case 应该只测试一种场景根据case复杂程度不同场景同样可大可可以是某个单元的测试也可以是端到端的测试(E2E)当然也有特殊的写法比如工作流测试和数据驱动。
Case的独立性有哪些需要关注的点呢?
首先Test Suite内的Cases在执行时不应该相互影响意思是说当我们有随机的跑其中某个Case或乱序的跑这些Cases时测试的结果都应该是准确的。Suite level和Directory level同样要注意独立性的问题。系统较为庞杂时可能会将数百上千的Cases放在一起跑Robot本身不会规定Case执行的顺序所以从某种程度上来说同一层级的Cases是随机执行的。很典型的情况就是测试用例在本地调试时怎么跑怎么过放到Server上所有Cases一起跑的时候就会Fail,还可能是偶发的这种情况下就很可能是由于其他Case的痕迹影响到了它查找问题的根源往往比较耗时。
保持Case的可迁移性
Case的可迁移性主要考虑三点 : Case对执行环境的依赖 ; Case对外部设备的依赖;Case对测试对象的依赖。
Case对执行环境的依赖 尽量减少对执行环境的依赖。举一个例子你在本地PC上使用rf框架编写、调试用例后上传到Git然后你的领导可能会拉取你的用例在他的本地运行随后又被部署到持续集成服务器上。所以你编写的用例时就要尽量避免使用不同平台的库或者shell命令。
再举个例子如果你因为业务需要而修改了测试库源码的话此时不管是组内其他人还是CI服务器肯定都会运行失败这种情况该怎么解决呢这里提供两个解决方法
将修改后的库做成测试库上传到Git或者Pypi对方可以通过pip安装更新使用robotremoteserver做一个共享库放在远程主机上
Case对外部设备的依赖 有时为了业务测试需要我们会引入一些外部设备来辅助测试外部设备可能会持续升级或者更换在编写用例时我们就需要考虑如何用一套Case更好的兼容这些测试设备。比如可以将外部设备的操作从测试用例中抽离出去封装成测试库或关键字
Case对测试对象的依赖 如果测试对象是一个软件平台软件平台通常需要适配多种的设备而设备的硬件配置可能是多种多样的CPU、内存、组件的性能和数量都可能不同。对测试对象的依赖不仅要考虑在不同设备上的可执行性重点还要考虑测试覆盖率。由于设备组件的增多你的用例可能无法覆盖到这些组件或者捕捉不到某个性能瓶颈这样测试结果的可靠性也大打折扣。
提升Case执行效率
不同的case执行时间相距甚远短则数秒长则持续数天。数秒钟的简单功能测试用例和耗时数天的稳定性测试用例本身是没有什么可比性的。但是我当我们放眼某一个或者某一组case时我们就需要重视Case的执行效率。不论是敏捷流程还是持续集成都讲究快速的反馈开发人员能在提交代码后快速的获得测试结果反馈测试人员能在最短的时间内执行更大范围的测试覆盖不仅能提高团队的工作效率也可增强团队的信心。
以使用rf为例在编写用例时可以通过以下方面来提高用例的执行效率。
1.如果有对执行条件的检查若检查失败则尽快退出执行 2.将数据准备或环境清除等工作抽取成关键字放到更高的层级中,抽取时可能需要做一些组合, 但不允许出现重复的建删操作 3. 用例中尽量少的出现sleep建议用wait until ...来代替 4. 可以采用并发执行用例的方法来提升效
自动化用例编写规范
命名规范
Keyword命名
第一个单词应以小写字母作为开头后面的单词则用大写字母开头。 如getProjectId, connectDB
常量命名
常量的名字应该都使用大写字母并且指出该常量完整含义。如果一个常量名称由多个单词组成则应该用下划线来分割这些单词。 如MAX_CHAR_LENGTH
参数命名
参数的命名规范和方法的命名规范相同请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。如${account} , ${investorName}
使用Tags
RF提供了通过在Settings中设置tags来管理用例的方法。Tag的应用非常的广泛和灵活比如可以用来做用例筛选、版本管理、统计策略等。 怎么打tag看起来会更便捷
可以在各个文件夹下打文件夹名字的tag这样就可以根据tag单独的跑该文件夹下的用例查看测试报告也更好看些;在一些重要的用例上打上tag可以单独跑关键用例;某些用例如果不想执行可以打上tag设置不执行。 image
让case具有文档性
在考虑Coding Style时我们可以设置一些固定的规则,大家只要按照这个规则来做,实践几次之后Coding Style就会趋于统一. 而考虑将Case写的如同文档一般则需要更多的主观能动性。
敏捷开发(Agile Development)在国内的发展已经越完善伴随之而来的便是敏捷测试(Agile Testing)。敏捷思想强调以人为核心在整个开发流程中只写有必要的文档或尽量少写文档这也是它与传统的瀑布模型的差别。 为了不造成误解这里有必要插入的说一下敏捷测试的几个特点 敏捷测试应该是敏捷开发的一部分敏捷测试具有鲜明的敏捷开发的特征如测试驱动开发(TDD),验收测试驱动开发(ATDD)。也就是说单元测试是敏捷测试的基础如果没有足够的单元测试就无法应对将来需求的快速迭代也无法实现快速而稳定的持续交付优秀的敏捷测试是基于自动化测试的敏捷测试无时不在无处不在。 需求设计不断的更新而文档往往不能被很及时的更新那这样的话怎么才能让测试人员如何快速的掌握某个功能或者产品的需求和当前状态呢?
Tests as Documentation.
清晰易懂的用例名
在实际的工程中我们可能会新建一个目录来存储测试点相近的测试用例。每一个Case都对应一个测试点而用例名则应该概括总结对应测试点的核心内容这样当我们在浏览一组用例时,仅仅通过用例名就能大致了解里面的测试内容,也方便寻找某个Case。 清晰易懂的用例名
在实际的工程中我们可能会新建一个目录来存储测试点相近的测试用例。每一个Case都对应一个测试点而用例名则应该概括总结对应测试点的核心内容这样当我们在浏览一组用例时,仅仅通过用例名就能大致了解里面的测试内容,也方便寻找某个Case。 【整整200集】超超超详细的Python接口自动化测试进阶教程合集真实模拟企业项目实战 文章转载自: http://www.morning.wklyk.cn.gov.cn.wklyk.cn http://www.morning.hcszr.cn.gov.cn.hcszr.cn http://www.morning.ldynr.cn.gov.cn.ldynr.cn http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn http://www.morning.rrwft.cn.gov.cn.rrwft.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.ckwrn.cn.gov.cn.ckwrn.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.mdfxn.cn.gov.cn.mdfxn.cn http://www.morning.qtqk.cn.gov.cn.qtqk.cn http://www.morning.yjxfj.cn.gov.cn.yjxfj.cn http://www.morning.qsmdd.cn.gov.cn.qsmdd.cn http://www.morning.poapal.com.gov.cn.poapal.com http://www.morning.hwbf.cn.gov.cn.hwbf.cn http://www.morning.npqps.cn.gov.cn.npqps.cn http://www.morning.zzqgc.cn.gov.cn.zzqgc.cn http://www.morning.mjats.com.gov.cn.mjats.com http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.hdnd.cn.gov.cn.hdnd.cn http://www.morning.dlrsjc.com.gov.cn.dlrsjc.com http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.hjssh.cn.gov.cn.hjssh.cn http://www.morning.znqmh.cn.gov.cn.znqmh.cn http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn http://www.morning.hnkkf.cn.gov.cn.hnkkf.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.sqlh.cn.gov.cn.sqlh.cn http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn http://www.morning.tcxk.cn.gov.cn.tcxk.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.tnhg.cn.gov.cn.tnhg.cn http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn http://www.morning.cbchz.cn.gov.cn.cbchz.cn http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn http://www.morning.rhmk.cn.gov.cn.rhmk.cn http://www.morning.zhmgcreativeeducation.cn.gov.cn.zhmgcreativeeducation.cn http://www.morning.bmqls.cn.gov.cn.bmqls.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.jbkcs.cn.gov.cn.jbkcs.cn http://www.morning.cpnsh.cn.gov.cn.cpnsh.cn http://www.morning.gywxq.cn.gov.cn.gywxq.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.ywpcs.cn.gov.cn.ywpcs.cn http://www.morning.ryxbz.cn.gov.cn.ryxbz.cn http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn http://www.morning.hqgxz.cn.gov.cn.hqgxz.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.jxscp.cn.gov.cn.jxscp.cn http://www.morning.zpyh.cn.gov.cn.zpyh.cn http://www.morning.hpkr.cn.gov.cn.hpkr.cn http://www.morning.dqpd.cn.gov.cn.dqpd.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.jxhlx.cn.gov.cn.jxhlx.cn http://www.morning.qpqwd.cn.gov.cn.qpqwd.cn http://www.morning.ishoufeipin.cn.gov.cn.ishoufeipin.cn http://www.morning.hfytgp.cn.gov.cn.hfytgp.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn http://www.morning.splkk.cn.gov.cn.splkk.cn http://www.morning.rjjys.cn.gov.cn.rjjys.cn http://www.morning.lbggk.cn.gov.cn.lbggk.cn http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn http://www.morning.hpggl.cn.gov.cn.hpggl.cn http://www.morning.dmnqh.cn.gov.cn.dmnqh.cn http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn http://www.morning.hyfrd.cn.gov.cn.hyfrd.cn http://www.morning.chzqy.cn.gov.cn.chzqy.cn http://www.morning.trnhy.cn.gov.cn.trnhy.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn