教你如何学习自动化测试 软件测试行业经过这么多年的发展,如今测试行业对从业者的要求是越来越高,不再仅仅局限于要求会写测试用例、会细致的执行测试、能有效的发现系统缺陷等;越来越多的企业对应聘者本身的技能要求也越来越高,招聘信息中诸如“精通VBscrīpt、Perl/Rbuy等至少一门脚本语言”、“至少熟悉一门开发语言”、“精通QTP、LR等自动化测试工具”、“有大型项目自动化实施成功经验”此类的字眼也逐渐增多。
目前看来,除白盒测试内容和测试管理外,主流的方向有两个:功能自动化测试和性能测试。这就要求从业人员能够在短时间内快速的掌握这些知识,才能获取到更好的工作机会。
一、想从事自动化测试,必须先了解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知识。
以上只是考虑到的一部分,并不全面,但技术基本是通用的,供大家参考。如果这些知识都能够扎实的掌握的话,基本上能够处理自动化过程中的绝大多数问题了,这个时候你对自动化测试的技术应该是有一定积累了。
四、接下来就需要考虑自动化测试框架问题了。当脚本规模到了一定的程度,就会面临一些问题,如:
1)如何有效的管理并调度脚本
2)如何实现脚本运行的无人值守,测试过程中能够自动进行错误处理并进行日志记录
3)如何生成简介明确的测试报告
4)如何能够更加高效的维护测试脚本
5)实现框架代码和业务代码的分层、业务脚本和业务数据的分离
这个阶段主要体现的是测试人员的测试思想,是可以脱离工具独立存在的过程。当然各个公司项目的实际情况不同,导致设计出来的思想不同,但总体上来说一般包括数据驱动和关键字驱动两种模式。后者实现的技术难度大于前者,大多数公司目前都采用的数据驱动模式。这个阶段不应局限于技术运用上,而需要从测试全局考虑,进行分层设计、模块化实现,减少代码之间的耦合,你要懂得自动化测试框架的设计和测试框架的基本编写。
五、自动化测试的实施,这点非常重要,如何让自动化测试有条不紊地运行起来,这是需要自动化测试工程师关注的。
以下几点你需要明白:
1)没有自动化测试框架,那么很难把自动化测试做得很好很规范的。
2)当有了自动化测试框架,这并不代表什么,更不能代表自动化测试就成功了,同一套框架,不同的经验级别的自动化测试人员来实施,效果肯定是不同的。
3)自动化测试的实施,应该是在基于一套符合公司业务特点的测试框架+良好的实施计划+良好的实施方案。
4)自动化测试的实施,千万不能落入“只埋头做事,不抬头看路”的形态,不要落入技术的深渊,需要明白,不是所有的东西都能用技术解决,要充分发挥人的作用因素。
如果以上四个方面都能够做的很好的话,那么你已经可以独立负责项目的自动化测试建立工作了,甚至可以开始考虑如何组织自动化测试团队!
总之,学习自动化测试需要在实际项目中进行,这样提高的会比较快,项目中运用了很多种技术,自动化实施过程会碰见各种各样的问题,是很好的学习机会,关键要善于总结、积累经验,只要能够把各个细节做好,那么你一定能够成为一名优秀的自动化测试工程师(主管)。
第二篇:安卓自动化测试学习笔记
安卓测试框架基础介绍:
一 、安卓测试框架是安卓开发环境到一个组成部分,它提供了一个测试体系以及许多工具用于帮助你多层次的从单元到整体的去测试你的应用程序的各个方面。
它具有以下几个特点:
1 安卓测试套件是基于junit的。你可以使用单纯的junit去测试那些不调用安卓api的程序,或者使用安卓junit扩展去测试安卓组件。如果你是个安卓测试的新手,建议你从诸如AndroidTestCase
这样的普通测试类开始,然后再渐渐的学习使用那些比较精细复杂的测试类。
2 安卓junit扩展还提供了组件专用的测试类。这些类提供了用于创建mock对象的方法以及用于控制组件生命周期到方法。
3 安卓测试套件是包含在包中的,这一点和普通的安卓应用程序一样,因此你无需重新学习一套新的工具和技术来创建编译测试case。
4 安卓到编译和测试工具可在用于eclipse开发环境中的ADT中获得,其它开发环境也可从命令行获得。
5 在SDK中还提供了mokeyrunner一个用于Python开发测试程序的API。同时也提供了一个命令行工具Monkey,该工具可以随机到向设备发送一系列事件以便对设备进行压力测试。
二、下图是安卓测试框架的组成结构图:
下面为对右边到图说一下我的理解。
1 从右图中可以看出测试框架可分为两部分。即进程(process)内、外两个部分。进程内的部分包括被测应用程序Application package、控制运行器InstrumentationRunner和测试包Test package组成。而进程外部则包括了测试工具test tools、Monkey运行器MonkeyRunner、测试案例Test case classes(由组件instrumentation和JUnit组成)以及模拟对象mock objects等。
2 测试的运行过程为:对于右边框架图进程的外部根据其和进程内部的作用又可分为两块。
第一大块:由Test case classes、Inlstrumentation、JUnit和Mock objects等共同组成。这一大块和进程内部是通过进程内部的Test package进行的。上面第三个特点有提到test package是由test case组成的。所以test package做运行的时候就会知道有哪些test case需要进行。然后再再通过instrumentation和被测程序Application package交互完成case的执行。
第二大块:由MonkeyRunner以及Test Tools共同组成,这一块和前一块的不同之处在于,这一块是直接通过InstrumentationTestRunner和被测程序Application package进行交互从而完成测试目的的。
3 从上面可以看出测试程序最终都需要和Instrumentation进行交互,再由Instrumentation和被测程序交互才能完成测试到目的。并且无论Test package还是Test tools他们本身都包含了需要具体执行的case。所不同的是Test package是在程序内部,而Test Tools是做程序进程外部的。外部的Test case classes和Mock objects虽然是被划分在进程外部的,但却正是他们组成了Test package。而另一方面Test Tools和Mokey runner虽然是做被测程序进程外部的,但是还是需要通过和进程内部的InstrumentationTestRunner进行交互告知才能使外部的测试需求得到执行。至于这种交互是通过何种办法达到的则需要查看源码才能清楚,但可以肯定的是这种方法肯定是和进程间通信的方法相关的。
http://www.cnblogs.com/essential/archive/2012/05/14/2498942.html