您好,欢迎访问三七文档
自动化测试框架思路文章分类:综合技术1.1.自动化测试的优点●提高测试效率和降低测试成本●实现快速的回归测试,加快测试进度从而加快产品发布进度●更多的测试,提高测试覆盖率●保证一致性●提高测试的可靠性,避免人为因素1.2.为什么要做自动化测试框架通过以往的尝试,发现真正实现自动化测试,并不是掌握了某个自动化测试工具,掌握了脚本的编写技术就能够达成,面对复杂的ERP系统,简单的录制/回放并不能达到自动化测试的要求,完全通过编写脚本的方式,工作量巨大且可维护性极差、不能复用。实现自动化就是为了能够提升测试效率,不具备可维护性、复用性差将成为导致自动化测试失败的最致命因素,付出巨大代价但起到的效果甚微。基于以上因素并结合行业发展思路,在正式实施自动化之前,必须搭建一套适合的自动化测试框架,将脚本能够有效的组织、连贯应用起来,提高测试脚本的可维护性和可读性。1.3.希望达成的目标搭建符合以下要求的自动化测试框架,使得未来自动化测试正式实施时能够有序、高效的开展:●高复用性●高可维护性●稳定性●快速编写脚本●自动执行●正确输出结果●能够不断提升自动化测试比例1.4.实现思路●分层设计:业务流程、功能点、操作组件我们在进行测试时,首先会验证各个页面、各个字段的正确性,到验证功能点的正确性,再组合各个功能点进行业务逻辑、业务流程的验证,最终确保系统满足业务需求。*对于自动化脚本,采用分层的思想,先实现最底层的操作组件,通过调用操作组件、及业务逻辑实现对功能点的验证,再通过调用业务逻辑组合功能点实现对业务流程的验证。不同的业务流程,对于底层的操作组件、中间层的功能点函数是完全可以复用的,只是调用的业务逻辑的差异,或者是测试数据的差异性。*尽可能做到各脚本之间具备独立性,不相互依赖,便于进行各种基本场景的组合运行。如销售系统中的选择房间操作,在做预约、小订、认购等操作时,都需要用到选择房产,因此可以将选择房产做为一个公共的操作组件,详细描述选择房产的操作步骤,在测试新增预约、新增小订、新增认购等功能点时都需要调用到选择房产的操作组件,只是业务的校验逻辑与所选择的数据不一致。再看业务流程,新增一个小订单后可以作废,也可以由小订转认购,业务流程就有两个:新增小订单—作废订单,新增小订单—转认购,这两个业务流程中“新增小订单”这个功能点是一致的,可以通过调用不同的用例数据组合成不同的业务流程。●脚本分离设计:对象、操作、测试数据、业务逻辑相互剥离、灵活调用对某个功能进行自动化测试,实际上就是对这个功能涉及的对象进行操作,输入测试数据来验证其结果的正确性,复杂的验证点需要编写业务逻辑。如果全部用脚本的方式编写,针对每一条测试数据就需要编写一份脚本,脚本量相当巨大,同时任何改动(程序、测试用例、GUI对象)都需要调整大量的脚本。为了达到可维护性、可复用性,将对象、操作、测试数据、业务逻辑剥离、分开管理,通过调用关系去组合实现不同的测试用例。*对象资源库*测试数据资源库*操作组件(描述操作步骤)*脚本:业务逻辑分离后,如果要增加测试用例,只需要维护测试数据,如果程序修改,增加了对象,那么只需要维护对象库、操作组件,增加对这个对象的操作。●封装基础函数、基本的业务逻辑、验证点通过对基本业务逻辑、验证点的封装、调用,实现快速的脚本开发如一个数据保存的功能,每一条数据在做了增、删、改的操作后,都需要验证保存至后台数据库的数据正确性,通过预期结果与数据库实际产生的数据集进行比较验证,在获取数据库实际产生的数据集的方式是通用的,只是不同的功能所要验证的数据表、字段及Where条件不一致,获取数据集的方式就可以封装成一个基础函数,传入不同的SQL语句做为参数即可。同时预期结果与实际结果集的比较也可以封装为基础函数。再如,系统页面中在某些操作或条件下,部分字段是只读不允许编辑的,或者是隐藏不显示的,编写脚本时需要对每一个对象写一条语句验证其只读和隐藏属性的正确性,如果将只读和隐藏属性的验证进行封装,针对每一个页面进行验证,那么只需要传入这个页面只读或隐藏的对象名称,调用封装的函数执行验证。可以大大减少脚本量,也更易于维护。●有效的执行体系*批量、定制执行、自动运行自动化测试真正达到提升测试效率,需要实现无人值守情况下的批量自动执行,并且可以定制执行。*异常处理机制脚本执行过程中,因程序错误或环境问题、脚本自身问题经常会出现非预期的错误:如意料外的弹出窗口、发现错误的数据、未找到对象、输入文件打不开或不能读等,有些情况下当前用例出错,并不影响后续用例的执行,需要支持异常处理机制,终止执行或者终止当前用例,继续后续用例的执行,亦或者跳过当前步骤,继续执行后续操作,并输出当前的错误报告。*业务数据还原初始状态自动化测试需要循环执行,执行完成后,需要恢复初始状态(主要是业务数据),以使得程序重新提交版本后能够循环执行,不断的对新版本进行回归验证。*版本管理随着待验证版本的不一致,自动化测试脚本也会不断的更新、维护,同样需要进行版本管理。●结果体系*针以每条用例,输出用例执行结果*针对每个检查点,输出详细的检查点执行结果*输出执行日志●结构化管理对象、操作组件、基础函数、测试数据、功能点脚本、业务流程组合,如此多的层级、调用关系,必须进行结构化管理,采用高度组织化的目录结构、分级管理,方便进行正确及快速的调用,方便能够快速定位、查找问题。软件自动化测试的引入和应用关键字:软件测试自动化在了解软件测试自动化的重要意义之后,就要开始启动软件测试自动化进程。在进行自动化测试之前,首先要建立一个对软件测试自动化的认识观。软件测试工具能提高测试效率、覆盖率和可靠性等,软件测试自动化虽然具有很多优点,但它只是测试工作的一部分,是对手工测试的一种补充。软件测试自动化绝不能代替手工测试,它们各有各自的特点,其测试对象和测试范围都不一样:.在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性测试时,多采用黑盒测试的手工测试方法。.单元测试、集成测试、系统负载或性能测试、稳定性测试、可靠性测试等比较适合采用自动化删试。.那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合自动化测试。.工具本身并没有想象力和灵活性,根据报道,自动测试只能发现15%的缺陷,而手工测试可以发现85%酐J缺陷。.自动化测试工具在进行功能测试时,其准确的含义是回归测试工具,这时工具不能发现更多的新问题,但口丁以保证对已经测试过部分的准确性和客观性。多数情况下,手工测试和自动化测试应该相结合,以摄有效的方法来完成测试任务。1找准测试自动化的切入点管是自己开发测试工具,还是购买第三方现成的工具产品,当开始启动测试自动化时,≈;要希望一F子就能做很多事情。必须从蛀基本的测试工作切入,如验证新构建的软件包(Bujld)是否有严重的或致命的问题,即验证构建的软件包所有基本功能是否正常工作,或者可以从某一个模块开始,如果这个模块做成功了,再向其他模块推进。2把测试开发纳入整个软件开发体系测试用例设计完成之后,就可以进行手工测试,但要用测试工具,还必须将测试用例转化成测试脚本或编写特殊的测试程序,测试脚本也是程序,所以应该要遵守已有的、规范的编程标准和规则。用编程语言或脚本语言写出短小的程序来产生大量的测试输入(包括输入数据与操作指令),或同时也按一定的逻辑规律产牛标准输出。输入与输出的文件名字,同开发中其他环节一样,进行统一规划,按规定进行配对,以便进行自动化测试的结果对比分析。自动化测试应该是整个开发过程中的一个有机组成部分。自动测试要依靠配置管理来提供良好的运行环境,同时它必须要与开发中的软件构建紧密配合a只要是程序,就可能存在缺陷,所以测试脚本或测试程序也要进行测试,在实际运杓测试之前,要保证测试工具或测试脚本的正确性。当然,并不是说要一层层的测试下去,而进入程序测试递归的死胡同。相对来随,测试脚本或测试工具简单些,其测试也容易些。一旦测试中发现问题,要么是被测试的对象有问题,要么是测试脚本或测试工具有问题,总之,问题容易发现。为了使测试自动化的脚本能多次重复进行,测试用例和测试脚本要写入数据库,进行动态管理。3测试自动化依赖测试流程和测试用倒不管是手工测试和自动化测试,关键是测试流程的建立和测试用例的设计,只有在良好的测试用例基础上,编写测试脚本、执行测试或运行测试脚本,才能保证测试的执行效果。为了适合测试自动化的测试脚本的编程,可以使测试用例转化为用例矩阵化(CaseMatcix),使测试脚本容易实现结构化。4软件测试自动化的投入较大对于软件测试自动化要有一个正确的理解,才能做到事半功倍e由于软件测试自动化在前期的投入要比手工测试的投入大得多,除了在购买软件测试工具或成套工具系统所投八的资金(一般这类工具软件还比较贵)和大量的人员培训之外,还要花很多时间去写测试脚本、维护脚本等。5进行赍源的合理调度在开发中的产品达到一定程度的时候,就应该开始进行每日构造新版本并进行自动化的验证测试。这种做法能使软件的开投状态得到频繁的更新,及早发现设计和集成的缺陷。为了充分利用时间与设备资源,下班之后进行自动的软件构建,紧接着进行自动测试(这里多数指的是系统测试或回归测试)是一个非常行之有效的方法。如果安排得好,到第二天上班时,测试结果就已经在各人的电子邮箱里面了。软件测试框架介绍关键字:软件测试测试框架在软件测试领域,我们经常会听到测试框架。什么是软件测试框架?在软件测试中它起到怎样的作用?要认识软件测试框架,首先要对所谓框架有概念。框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面、而后者是从目的方面给出的定义。测试框架也是如此,测试框架出现的最终目的是花少量的资源来完成尽可能多的测试任务,所以软件测试框架的建立以及框架的重用性方面是最值得测试人员深入探究的地方。Java测试框架、.Net测试框架、自动化测试框架、单元测试框架、集成测试框架,你是不是已经被这些名称弄晕了?如何实现测试框架用于特殊场合?本专题将就以上问题对测试框架进行全面详解,从测试框架入门和类别,到常用框架应用和自己动手实现框架。什么是测试框架:软件测试框架是一组自动化测试的规范、测试脚本的基础代码,以及测试思想、惯例的集合。可用于减少冗余代码、提高代码生产率、提高代码重用性和可维护性。测试框架的好处在于:提高开发速度,提升测试代码的执行效率;提高软件代码质量,同时引入重构概念,让代码更干净和富有弹性;提升系统的可信赖度,作为回归测试的一种实现方法支持修复后再测试,确保代码的正确性。常用的测试框架分类包括自动化测试框架和单元测试框架。根据所用开发平台不同,也可使用不同的测试框架展开测试。软件自动化测试框架的发展基于界面的软件自动化测试框架和工具的发展大致经历了三个阶段(有人也据此将测试工具分为三代):1)简单的录制/回放:由工具录制并记录操作的过程和数据形成脚本,通过回放来重复人工操作的过程。在这种模式下数据和脚本混在一起,几乎一个测试用例对应一个脚本,维护成本很高。而且即使界面的简单变化也需要重新录制,脚本可重复使用的效率低。2)数据驱动(datadriven)的自动化测试:从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例。在这种模式下数据和脚本分离,脚本的利用率、可维护性大大提高,但受界面变化的影响仍然很大。3)关键字驱动(keyworddriven)的自动化测试:关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为Item.Operation(Value)。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。相应地,软件测试自动化脚本的类型,从低到
本文标题:自动化测试框架
链接地址:https://www.777doc.com/doc-20418 .html