自动化测试中的基础问题:
什么是数据驱动和关键字驱动?
有哪些自动化测试框架?
testng中dataprovider的工作原理是什么?
selenium测试框架的工作原理是什么?
自动化测试中,测试数据如何高效的维护?
偏测试开发方向的问题:
redis使用出现的问题以及解决办法?
首先从第一点说起
自动化测试里的数据驱动和关键字驱动思路的理解
1.首先说可能一般测试人员使用过的测试方法,录制与回放:
类似录制和回放的工作在早期的工作中曾经使用过,当时使用的是公司自己研发的一套测试平台,在软件上进行业务操作然后查看后台调用的接口,然后将接口名称和数据录入到测试系统中,这个有点类似使用jmeter等一些测试工具进行UI自动化的录制。
它有一个好处就是上手比较快,不要求测试人员有很高的代码技术,当然它的技术级别也就仅仅停留在会使用即可,当然这样做也有很多弊端,比如数据维护十分困难,应用程序必须达到一定的稳定性,才可以开始录制测试脚本,录制的测试脚本与测试数据耦合得太紧密,这就导致了维护自动化脚本的成本非常高。
2.数据驱动的自动化测试框架
通过后面自己的学习,知道了自动化案例的设计方法,通过将excel表格分成若干个测试中可能需要的数据,如参数部分、执行部分、最后返回结果的验证部分,然后通过java+testng+jenkins的方法定时去发送测试数据获取相应数据,比方我们一个购买的接口,我们将所有的可能的正常的异常的情况都记录到在excel表格中,然后通过脚本去调用,通过testng的报告比较直观的去看这次测试执行的效果是什么样的,这也就是很大一部分人认为的数据驱动:就是把需要参数化的东西卸载excel里面,然后在跑脚本的时候调用但是通过查阅网上的资料,发现这样的操作其实不能称得上是数据驱动,而只是比较高级的参数化
那么什么是数据驱动呐?
首先为什么叫数据驱动,那么它肯定有驱动的含义,比如你用excel可以控制测试的业务流吗?(我们发的数据好像只是单纯的针对某个接口进行测试)如果不能控制业务流,那么又如何坐到驱动呐?所以我们将测试数据放在独立的文件中只是高级的参数化,而数据驱动,你必须要数据来控制测试的业务流。比如你测试一个web程序,有很多页面,你可以通过一个数据来控制每次是在那个页面下工作的(即通过数据来导航到相应的页面)。它是关键字驱动的低级版本,他控制的是含数据,而关键字是控制动作级的。所以数据驱动应该可以控制整个测试的。
在一些复杂的测试用例中,同一个用例包含了很多测测试流程,其中不同的测试流程采用不同的测试输入数据,这个时候测试数据的输入不仅仅是参数的输入,还有业务流程的控制字段的输入(可以理解为逻辑参数),这种情形会更深入的体现数据驱动的含义。
什么是数据驱动的自动化测试框架
数据驱动的自动化测试框架是这样的一个框架,从某个数据文件(例如ODBC源文件、excel文件、csv文件、ADO对象文件等)中读取输入、输出的测试数据,然后通过变量传入事先录制号的或者手工编写的测试脚本中。其次,这些变量被用作传递用来验证应用程序的测试数据。在这个过程中,数据文件的读取、测试状态和所有测试信息都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里面、测试脚本只是一个驱动,或者说是一个传送数据的机制
数据驱动脚本
数据驱动脚本就是那些和应用程序相关联的脚本。这些脚本通过录制或者手工编写写进自动化工具私有的语言,然后对其中变脸赋予合适的数值,作为测试数据的输入。这些变量做为一些关键应用程序输入的媒介,是脚本能通过外部的数据来驱动应用程序。
- 可变数据,硬编码组件标志
这些数据驱动的脚本经常包含硬编码的数据,有时候一些窗口组件中非常脆弱的识别字符串。出现这种情况时,脚本很容易由于程序的修改而失去作用。
2)高度技术化、重复的测试设计
数据驱动脚本的拎一个共同特点就是,所有在测试设计上所做的努力最终都体现在自动化工具的脚本语言中,或者复制到手工和自动化测试脚本中。这意味着每个和自动化测试开发或执行有关的人必须对测试环境和自动化工具的编程语言非常精通
数据驱动的优缺点:
优点:
1.在应用程序开发的同时就可以同步建立测试脚本,而当应用功能改变时,只需要修改业务功能的部分脚本
2.利用模型或的涉及,避免重复的脚步呢,减少建立或维护脚本的成本
3.测试输入数据,验证数据和预期测试结果与脚本分开,存放在另外的数据文件里,利于测试人员修改和维护
4.透过判断功能传值是true还是false,可作错误处理,增加了测试脚本的健壮性
5.自动化测试开发人员创建数据驱动的测试过程,测试创建测试数据
6.在测试的过程中收集测试结果,并在输入测试的语境中表示测试结果,这样可以简化手工结果分析。
缺点:
1.对自动化测试工具里面的脚本语言必须非常精通
2.每个脚本都会对应多个数据文件,这些数据文件需要根据脚本的功能类别存放在各自的目录中,增加了使用的复杂性
3.测试人员除了需要根据具体测试数据维护相应的测试计划,还需要将这些数据写入各个需求不同的数据文件中
4.在编辑数据文件时,必须注意测试脚本所需要的传输格式,否则会在处理脚本时产生错误。
数据驱动:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中
3.关键字驱动的自动化测试
关键字驱动的来源非常自然,从面向对象的思路触发,同样的业务逻辑会自然的编写成一个类或者函数作为关键字来被不同的测试脚本所调用。当测试框架发展到所有的测试过程都已经可以被写好的函数和类所组合完成时,就进化到了关键字驱动的高级阶段,这个时候测试用例的开发就变成了测试数据和关键字的结合,并把这种组合工作简化为所有人都熟悉的表格填写任务,从而最终达到一个数据和关键字驱动的整个测试效果。
关键字驱动:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,第个步骤对应一行文件
关键字必须与关键方法进行关联,就像老师让张三搬桌子,而张三跑去买了一包烟,这就不对了,所以,必须要有一个关键字与关键方法的映射表。