自动化测试:为什么需要框架

前两天跟老板出去做pre-sales. 主要是去卖我们的自动化测试服务,工具用的是HP UFT。做过自动化的人应该知道,UFT在自动化测试领域已经算是最好的工具之一了。客户是个有技术背景的人,所以不那么好忽悠。我们准备了一大堆自动化测试优点的幻灯片,他倒好,上来直接问,你们的工具的缺陷有哪些。然后我就开始巴拉巴拉地跟他说有哪些缺点,一发不可收拾的是,每解释完一个问题,他就会有更多问题。最后口干舌燥也没能全部解释清楚,除了感叹一声钱不那么好赚,只能怪自己不能用英语流利地吹牛逼吧。

其中有一个问题,我回来以后又想了很久。当时他指着我做的POC(Prove of Concept)脚本,问道:”既然record & playback可以做一个脚本,那么为什么还需要自动化测试框架呢?” 简而言之就是,我凭什么要多花钱买你们的框架?我当时第一反应是,什么?你在逗我吗?自动化测试没框架怎么做? 当然我的回答官方的很,主要是从维护,可重用性,易用性地角度去跟他解释了一遍,他似乎也不是很满意。

回头我想了想,到底为什么我们需要自动化测试框架呢?越想越觉得委屈,因为我想问问各位开发,你们做项目的时候为什么要用框架呢?那自动化的本质不就是写程序去测程序嘛,既然开发需要框架,那么自动化测试为什么不要呢。

牢骚归牢骚。认真地查了些资料。

什么是框架?

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。其实目前为止,框架还没有统一定义,我比较喜欢Ralph Johnson所给出的定义:

一个框架是一个可复用设计,它是由一组抽象类及其实例间协作关系来表达的 【Johnson 98】。这个定义是从框架内涵的角度来定义框架的,当然也可以从框架用途的角度来给出框架的定义:一个框架是在一个给定的问题领域内,一个应用程序的一部分设计与实现【Bosch 97】。

为什么要用框架?

又是一个理所当然的问题。因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。

为什么要搭建自动化测试框架?

从前我以为,自动化测试最重要的事情是找对象(Find Test Object)。现在我明白了一个道理,没有框架的自动化测试是找不到对象的,即使找到了也不会幸福的。就跟现实中,没有车没有房的人是很难找到对象的一个道理。

自动化测试的开发,通常是由自动化测试的需求决定的。这个需求主要包括:

  1. 自动化测试更便于实施。这个说的是,你写测试脚本要方便。一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本的,哼。
  2. 解决自动化测试脚本本身存在的问题,如异常处理和场景恢复。
  3. 测试易于维护。自动化测试项目,基本都是没有好的管理以及维护,一定是个大坑。我可以很负责地说,自动化测试没有一年半载,你是看不到产出的。所以管理及维护就成了最重要的事情。而好的框架,可以减少你在管理维护中所投入的人力物力精力。
  4. 可重用性。框架的意义之一就在于可重用吧。所以在框架里,你可以实现一些通用功能,简化脚本开发过程。
  5. 美观易读的测试报告。拿UFT来说,它产出的测试报告只是基于测试脚本的,并没有那种基于测试集的报告,所以如果你要,测试框架里可以实现。

还有很多测试需求,我没办法一一列举出来,多数需求我们都可以在测试框架里去定制。现在可以回答上面那个问题了,record & playback是不会幸福的,你需要自动化测试框架。

请慎重考虑是否需要自动化测试(成本投入高,风险大)

自动化测试是个很傲娇的东西,它很挑项目。首先项目周期要长,但是需求不会频繁变更;其次系统中多数对象要可以被识别,并且不存在大量第三方插件。而且你要清楚,你不能指望自动化测试去帮你发现新的bug,自动化测试本身是不具备想象力的(相对于手工测试)。它的优势在于反复迭代,它的价值产出在于长期的回归测试,以保证被测产品长期稳定地版本更新。

关于自动化测试的切入点,通常要在完整的系统测试之后才算具备引入自动化测试的基本条件。

目前我所做的自动化测试成功案例,无一不具备良好的管理和优良的测试框架。二者缺一,自动化测试必然成为大坑。

最后,填坑这种事儿,收费可是很贵的~

参考:百度百科 框架 http://baike.baidu.com/view/66971.htm?fr=aladdin

时间: 2024-10-11 21:14:50

自动化测试:为什么需要框架的相关文章

nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架

nightwatchjs 是基于nodejs&& webdriver 协议的自动化测试&&持续集成框架 参考架构 参考资料 http://nightwatchjs.org/gettingstarted/#browser-drivers-setup 原文地址:https://www.cnblogs.com/rongfengliang/p/10541106.html

Appium 自动化测试(3)--Appium框架与流程介绍

Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用.混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用.重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例.

Selenium自动化测试-unittest单元测试框架使用

一.什么是unittest 这里我们将要用的unittest是python的单元测试框架,它的官网是 https://docs.python.org/2/library/unittest.html,在这里我们可以得到全面的信息. 当我们写的用例越来越多时,我们就需要考虑用例编写的规范与组织,以便于后期的维护,而unittest正是这样一款工具.我们这里用一个示例来展示用unittest脚本是什么样子的 1 # -*- coding: utf-8 -*- 2 from selenium impor

接口自动化测试:Thrift框架RPC协议客户端开发

import java.lang.Thread.State;import java.util.Iterator;import java.util.List; import org.apache.thrift.TException;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.protocol.TProtocol;import org.apache.thrift.transport.TFrame

自动化测试-WebService测试框架

org.apache.commons.csv.CSVRecord;org.apache.commons.httpclient.Header;org.apache.commons.lang3.ArrayUtils;org.apache.http.client.methods.CloseableHttpResponse;org.apache.http.client.methods.HttpGet;org.apache.http.client.methods.HttpPost;org.apache.h

虫师自动化测试robot Framework 框架的学习

1.python关键字的定义 #coding=utf-8 def add(a,b): return a+b if __name__ == "__main__": c = add(4,5) IDE里面编辑脚本如下: 输出: 错误使用: 直接输入数字4和5,会怎么样呢 结果如下: 输出结果并不是相加,而是两个数字拼接. 这是robot里面,会默认把4和5当作字符来输入.改成整形就可以了. 注: (1)引入py文件,可以在setting中导入,也可在脚本最开始用import library导

自动化测试框架

自动化测试框架:由一个或多个自动化测试基础模块.自动化测试管理模块.自动化测试统计模块等组成的工具集合. 在了解什么是自动化测试框架之前,先了解一下什么叫框架?框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面给出的定义. 从框架的定义可以了解,框架可以是被重用的基础平台:框架也可以是组织架构类的东西.其实后者更为贴切,因为框和架本来就是组织和归类所用的. 所谓自动化测试框架,即是应用

4种手机自动化测试框架介绍

前言: 目前手机app的开发已经非常的流行和火爆,对于手机测试这块,大部分还是停留在手动测试. 因为手机app开发,要适应不同的设备,就比如一个android app要适应不同的版本,不仅要支持最新的版本,还要支持旧的版本, 这就导致了手动测试需要购买N部android 手机来手动测试. 然而这测试的效率却是很慢的.而且除了手机app测试,有的还需要在pad上测试,试想一下,一个负责的测试pp应用的测试人员需要在不同的机器上测试,如果再加上开发人员不停的更新代码和版本,我估计测试人员要疯了. 

基于界面自动化测试框架的4个发展阶段

(1)无框架阶段(即简单的录制/回放) 在早期,自动化测试并没有框架这一说,自动化测试只是简单的录制/回放,由工具录制并记录操作的过 程或数据,并形成脚本.通过对脚本的回放重复人工操作的过程.这种模式脚本与数据混合在一起.站在软件开发的角度来看,这种开发耦合度高,我们知道软件工 程的思想,是高内聚低耦合.而简单的录制回放完全违背了这一思想,简单的录制回放,重用性非常低,同时维护成本非常高. (2)数据驱动框架阶段 无框架阶段最大的缺点就是脚本与数据混合在一起.为了解决这一问题,自动化测试框架发展

三年磨一剑,robot framework 自动化测试框架核心指南,真正讲透robot framework自动化测试框架(笔者新书上架)。

序 关于自动化测试的工具和框架其实有很多.自动化测试在测试IT行业中扮演着越来越重要的角色,不管是在传统的IT行业还是高速发展的互联网行业或是如今的大数据和大热的人工智能领域,都离不开测试,也更加离不开自动化测试.自动化测试已经发展了很多年,在很多大的互联网公司里他们不但有自己的自动化测试框架,甚至基本都建立了自己的自动化测试平台或者已经对外开放使用的自动化测试云平台,也就是说自动化测试几乎已经成为一名测试工程师必须掌握的一个技能,并且随着很多自动化测试工具和框架的不断发展和完善,自动化测试也变