1,如何学习自动化测试

软件自动化测试的学习步骤 大概步骤如下: 1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础(HTML,HTTP,CSS,DOM,Javascript)或者 学习Winform -> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架 自动化测试的最高境界是: 开发测试工具,设计自动化测试框架, 让别人用。 自动化测试的本质 自动化测试的本质是:用程序测试程序。 也就是说学习“编程语言”是学习自动化测试的基础。 很多人问小坦克我学自动化测试,应该去学什么自动化工具。 我的回答是,第一步:应该先学习编程语言,以后再去学自动化测试工具 自动化测试是一定要写代码的, 编程语言水平的高低决定了自动化测试水平的高低, 有了扎实的编程技术,干什么都可以。 学习编程语言时, 要把自己当做开发人员, 系统地学习各种编程知识。 自动化测试学习的误区 很多新手一开始,就学习复杂的自动化测试工具, 我觉得这样是本末倒置了。 如果不先理解HTTP协议, 就不会理解Jemeter, LoadRunner, Fiddler, SoapUI这些工具的。 如果不先理解HTML,DOM, 就不会理解Firebug 这种工具的 如果不先理解Win32 API, 就不会理解Windows 窗体自动化测试的原理的。 如果自己没有开发过网站, 就不会理解网站的各个方面,测试起来难免有遗漏。 总之学习自动化测试,需要循序渐进, 把基础打好。 自动化测试的职位 自动化测试工程师的职位叫做: (SDET) Software Development Engineer in Test. 专注于自动化测试 手动测试工程师叫: (STE)Software test enginer. 专注于手动测试 在微软有很多SDET的职位,但是没有STE的职位, STE职位一般都是外包给外包公司的, 目前自动化测试还是非常吃香的。 自动化测试分类 自动化测试也有非常多的种类, 对Web UI 的自动化测试程序 对Windows 窗体UI的自动化测试程序 API测试, 比如(测试WCF service, Web API 等) 数据库测试, 比如测试存储过程 接口测试 (这种只能用自动化测) 单元测试 性能测试, 性能测试都需要用到自动化

如何学习自动化测试

2,怎么学习自动化测试

首先,想从事自动化测试,必须先了解What/Why/How,也就是常说的去了解什么是自动化测试、为什么要进行自动化测试、该如何进行自动化测试,这类的资料在网上有很多,这里就不做重复了;   其次,需要根据项目的特点,选择合适的自动化测试工具,并了解工具的特性。以QTP为例,该如何去掌握它呢?对于初学者,大多数都是通过录制的方式来生成脚本,这个阶段应该掌握的基础知识有:   1) QTP是如何去识别对象的,对于新手经常会出现录制的脚本回放的时候报错的现象,这个时候就应该考虑为什么呢?如果很了解QTP识别对象的原理啊,我想就能很快定位到原因了   2) 去掌握一些QTP对象的方法,如GetROPreperty、GetTOPreperty、ChildObjects等等,对于相似的方法应该去搞清楚到底区别在哪?像GetROPreperty、GetTOPreperty有什么区别等   3) 什么是Action参数、什么又是Test参数?两者有什么区别,又有什么联系,在同一Test和不同Test间这些参数如何工作   4) 什么是环境变量?环境变量是如何建立和使用的,环境变量在参数传递中和action参数、test参数有什么不同   5) 了解检查点的知识,明白什么是内置检查点,什么又是自定义检查点。并搞清楚在什么时候该如何使用检查点   6) 掌握对象库的操作,了解对象库对于测试的意义,象是否启用智能识别对测试脚本有何影响、为什么同一对象识别起来会有_1、_2之类的后缀等都是需要去研究清楚的问题   这几个问题都搞清楚的话,那基本就能够利用QTP生成正确的脚本了,当然以上只是部分必须掌握的内容,其实还是很多细节的设置,就需要在实际运用中去掌握了。   接下来,就可以进一步提升自己的QTP运用水平了,这个阶段就需要去学习vbs知识和如何运用描述性编程实现脚本了,同时在这个过程中还需要去学习html知识、DOM、XML、以及像excel、word等的API知识了,总的来说,这个阶段应该掌握的内容大体上包括:   1) VBscrīpt的基础知识,熟悉常用的方法和函数,掌握文件对象的操作等   2) 熟练掌握XML技术;excel、word等API对象,可以根据需要创建日志等   3) 熟练掌握DOM和HTML知识,能够结合这些技术对Web页面进行解析   4) 掌握数据库的基本操作语句,能够利用ADO对象进行数据操纵   5) 熟练掌握正则表达式,很多时候处理对象问题相当方便   6) 掌握如何调用dll进行工作   7) 能够利用QTP的自动化对象模型创建出需要的运行模式   8) 掌握WMI知识   以上只是我考虑到的部分,并不全面,呵呵,供大家参考,当然这些技术主要是针对Web系统运行,因为我们的系统就是B/S的,呵呵。如果这些知识都能够扎实的掌握的话,个人认为,基本上能够处理自动化过程中的绝大多数问题了,这个时候你对自动化测试的技术应该是有一定积累了。   接下来就需要考虑自动化测试框架问题了。当脚本规模到了一定的程度,就会面临一些问题,如:   1) 如何有效的管理并调度脚本   2) 如何实现脚本运行的无人值守,测试过程中能够自动进行错误处理并进行日志记录   3) 如何生成简介明确的测试报告   4) 如何能够更加高效的维护测试脚本   5) 实现框架代码和业务代码的分层、业务脚本和业务数据的分离   这个阶段主要体现的是测试人员的测试思想,是可以脱离工具独立存在的过程。当然各个公司项目的实际情况不同,导致设计出来的思想不同,但总体上来说一般包括数据驱动和关键字驱动两种模式。后者实现的技术难度大于前者,大多数公司目前都采用的数据驱动模式。这个阶段不应局限于技术运用上,而需要从测试全局考虑,进行分层设计、模块化实现,减少代码之间的耦合。   如果以上三个方面都能够做的很好的话,那么恭喜你,你已经可以独立负责项目的自动化测试建立工作了,呵呵!   总之,学习自动化测试需要在实际项目中进行,这样提高的会比较快,项目中运用了很多种技术,自动化实施过程会碰见各种各样的问题,是很好的学习机会,关键要善于总结、积累经验,只要能够把各个细节做好,那么你一定能够成为一名优秀的自动化测试工程师。

怎么学习自动化测试

3,如何有效的开展自动化测试

自动化测试不宜大力投入不管是自动化测试还是接口测试,都不宜在前期大量投入。当前业务是否适用自动化,哪些框架或者工具更适合,适合做接口自动化还是 UI 的自动化?如何让自动化达到收益和效果?这些问题都需要根据团队和业务具体的情况去尝试,找到合适的才行。如果前期投入太大,团队对其期望太高,非常容易在遇到一点挫折的时候对自动化丧失信心。另外,投入太大,毕竟加大人力或者减少手工测试的投入,会造成测试资源的紧张。在项目时间和成本的压力下,测试管理者需要顶着巨大的压力,这本身就很难成功。可以安排一些技术强或者技术兴趣浓厚的成员,在项目允许的情况下减少其手工测试工作量,让其可以利用部分工作时间和部分业余时间尝试做自动化,先局部功能尝试,能够有效果,在扩大范围。逐步达到一定的自动化规模。以接口为主UI为辅UI 自动化因其运行环境的问题,会导致运行速度慢,对环境依赖过高。同时因程序界面的多变性,导致自动化脚本维护成本大大增加。接口测试有很多优于 UI 自动化的地方。但是接口测试也自有其短板,对流程性质的测试并不适合用接口自动化来覆盖。接口自动化更适合覆盖单一接口功能的检查。所以我们可以采用核心业务流程使用 UI 自动化,单一功能使用接口自动化,两种层面的自动化结合的方式来进行。不轻谈自动化测试平台目前测试界开始流行起自己开发测试平台(以接口为主)。简单来说就是模仿常见的接口测试工具,用 Python 或者 Java 写成了一个 web 版本的。当然也有其理由,“定制性更强!”但是毕竟是软件都需要进行测试,花大量精力开发的平台并不稳定,而本身功能和理念上并没有太多更新。而这样的一些功能,市面上的绝大部分测试工具都能胜任。如果是为了提高个人能力,项目时间有空余,怎么玩都可以。若是要在实际工作中应用,那么就有点得不偿失了。自动化测试中,工具的重要性始终是最低的。理念、思维和环境治理才是最重要的。通过不断小范围试错,找到适合自己团队的自动化策略才是最重要的。任何技术脱离实际应用都是耍流氓。
很多时候测试人员在开展自动化测试的时候都是不加思考的就开始做,认为用工具录几个脚本再回放就可以了,没有考虑有效性;而做了并不一定就会有效果,如果自动化测试在整个测试工作中发挥不了作用,那么哪怕是只投入了很少的成本也是在浪费资源。所以在开展自动化测试之前必须认真思考虑一些问题,以确保它的有效性:1、被测系统是否适合做自动化测试;2、被测系统适合在哪些环节做自动化测试;3、使用何种测试工具、测试框架;4、开展自动化测试需要哪些资源,包括:人员、机器、时间;5、当前可用或是可以申请到的资源;6、如何在不影响日常测试工作的前提下,开展自动化测试工作;1、被测系统是否适合做自动化测试;很多人可能都回觉得这个问题有些多余,不需要考虑。可事实上作为一名测试主管必须考虑这个问题,应为自动化测试并非只是做与不做这么简单,而是需要考虑成本投入与效果产出。不管是做软件、做系统、还是做网站,最终的目的基本上都是要盈利的,要盈利就必须控制成本,提高利润。所以在测试工作中也必须考虑到成本投入。如何确定系统是否适合做自动化测试呢?个人认为主要考虑当前的被测项目是长期的还是短期?如果被测项目是在今后半年或者几年间要不断进行开发维护的,那么就需要重复的进行大量的回归测试,这种情况下如果有自动化的回归测试体系就可以节省成本投入;如果被测项目是短期的,比如说一个月,或几个月,同时如果开发自动化测试又不是很容易,也没有足够的时间去做这件事,那么就完全没有必要作自动化测试,费尽力气做出的自动化测试脚本,可能只会用到一次或两次,这样就很不值当。2、被测系统适合怎样的自动化测试;自动化测试覆盖的范围很广:单元测试、集成测试、接口测试,GUI测试等等都可以实现自动化执行;同时,不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试。比如说针对搜索引擎,前端往往比较简单,只是一个文本框和提交按钮,大部分的逻辑处理都是在后端完成的,这种情况做自动化的接口测试就可以达到事半功倍的效果;如果是被测系统有很多的页面操作,那么可以考虑GUI的自动化测试;以上这两种情况都不是绝对的,如果测试资源足够,那么在各个环节都是可以开展自动化测试的。此外,还有一点需要考虑的是自动化测试的可行性,比如说对一个系统而言,做GUI测试是最合适的,也是最有效,但是有可能通过各种工具或者是脚本很难实现GUI的自动化测试,那么就需要考虑变通,考虑是否可以将自动化测试调整到接口测试或是集成测试等环节。3、使用何种测试工具、测试框架;当前可以做自动化测试的工具不少,主流的付费的qtp,winrunner,silktest等,开源免费的Jemmy,watir,pywinauto等等。这么多的工具框架该如何选择,就要看被测系统了,至少要考虑是C/S、还是B/S结构的,服务端和客户端都是用何种语言编写的,是什么数据库,服务器类型等等。
软件自动化测试的学习步骤大概步骤如下:1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习web基础(html,http,css,dom,javascript)或者 学习winform-> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架自动化测试的最高境界是: 开发测试工具,设计自动化测试框架, 让别人用。自动化测试的本质自动化测试的本质是:用程序测试程序。 也就是说学习“编程语言”是学习自动化测试的基础。很多人问小坦克我学自动化测试,应该去学什么自动化工具。 我的回答是,第一步:应该先学习编程语言,以后再去学自动化测试工具自动化测试是一定要写代码的, 编程语言水平的高低决定了自动化测试水平的高低, 有了扎实的编程技术,干什么都可以。学习编程语言时, 要把自己当做开发人员, 系统地学习各种编程知识。自动化测试学习的误区很多新手一开始,就学习复杂的自动化测试工具, 我觉得这样是本末倒置了。如果不先理解http协议, 就不会理解jemeter, loadrunner, fiddler, soapui这些工具的。如果不先理解html,dom, 就不会理解firebug 这种工具的如果不先理解win32 api, 就不会理解windows 窗体自动化测试的原理的。如果自己没有开发过网站, 就不会理解网站的各个方面,测试起来难免有遗漏。总之学习自动化测试,需要循序渐进, 把基础打好。自动化测试的职位自动化测试工程师的职位叫做: (sdet) software development engineer in test. 专注于自动化测试手动测试工程师叫: (ste)software test enginer. 专注于手动测试在微软有很多sdet的职位,但是没有ste的职位, ste职位一般都是外包给外包公司的, 目前自动化测试还是非常吃香的。自动化测试分类自动化测试也有非常多的种类, 对web ui 的自动化测试程序对windows 窗体ui的自动化测试程序api测试, 比如(测试wcf service, web api 等)数据库测试, 比如测试存储过程接口测试 (这种只能用自动化测) 单元测试性能测试, 性能测试都需要用到自动化

如何有效的开展自动化测试


文章TAG:如何  何学好  自动  自动化  如何学好自动化测试  
下一篇