轻量级自动化测试框架 UFT 初学者 学习编写
自动化测试框架UFT BASED
自动化测试,一个现在被炒的火热的词;各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员。。。
本材料对于编程基础较低初学者,在编写和学习过程中可以接触到很多旁枝侧节的知识,这些都是做好自动化所有需要的知识;对于有一定技术储备。
本框架不能帮你成为高大上的编程大牛,或者自动化测试的行家。但是,它可以引领你迈入自动化测试的领域。
师傅领进门,修行靠个人;一切的一切都还是要靠你自己去多多实践,不是有一句名言么?实践是检验真理的唯一标准!
一、自动化测试基础
手工测试VS自动化测试
手工测试:
手工测试就是由人去一个一个的去执行测试用例,通过键盘鼠标等输入一些参数,查看返回结果是否符合预期结果。
自动化测试:
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自概念。
自动化测试又可分为:功能自动化测试与性能自动化测试,在本文中我们着重探讨功能自动化测试。
什么样的项目适合自动化测试
1、任务测试明确,不会频繁变动
2、比较频繁的回归测试
3、软件系统界面稳定,变动少
4、需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
5、软件维护周期长
6、被测软件系统开发比较规范,能够保证系统的可测试性
7、具备大量的自动化测试平台
8、测试人员具备较强的编程能力
UFT简介
UFT是Unified Functional Testing的简称,是一种自动测试工具。
以VBS为内嵌语言。
UFT自动化测试的基本功能包括:
创建测试
检验数据
增强测试
运行测试脚本
分析测试结果
维护测试
UFT工具特点
特点:易于上手,开发简单,功能强大
注:主流配置都能带起了(选择UFT11.5和UFT12.0)
二、自动化测试模型介绍
一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库、测试数据源、测试对象识别标准,以及种可重用的模块。自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试、数据驱动测试、对象驱动测试。
线性测试
通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作),通过对脚本的回放来进行自动化测试。这是早期进行自动化测试的一种形式。
参见下图test1和test2实例:
通过上例,我们可以看出:
每一个脚本都是独立的,任何一个脚本文件拿出来就能单独运行;当然,缺点也很明显,用例的开发与维护成本很高。
一个用例对应一个脚本,假如登陆发生变化,用户名的属性发生改变,不得不需要对每一个脚本进行修改,测试用例形成一种规模,我们可能将大量的工作用于脚本的维护,从而失去自动化的意义。
这种模式下数据和脚本是混在一起的,如果数据发生变也需要对脚本进行修改。这种模式下脚本的没有可重复使用的概念。
模块化与类库
我们会清晰的发现在上面的脚本中,其实有不少内容是重复的;于是我们就考虑能不能把重复的部分写成一个公共的模块,需要的时候进行调用,这样就大大提高了我们编写脚本的效率。
参见下图:
通过阅读上面的代码发现,我们可以把脚本中相同的部分代码(登录)独立出来,形成模块或库。
这样做有两方面的优点:
一方面提高了开发效率,不用重复的编写相同的脚本;假如,我已经写好一个登录模块,我后续需要做的就是在需要的地方调用,不同重复造轮子。
另一方面方便了代码的维护,假如登录模块发生了变化,我只用修改文件中登录模块的代码即可,那么所有调用登录模块的脚本不用做任何修改。
数据驱动
数据驱动应该是自动化的一个进步;从它的本意来讲,数据的改变(更新)驱动自动化的执行,从而引起测试结果的改变。这显然是一个非常高级的概念和想法。其实,我们可直白的理解成参数化,输入数据的不同从而引起输出结果的变化。
参见下面例:
不管我们读取的是数组,还是字典、函数,又或者是csv、txt文件。我们实现了数据与脚本的分离,换句话说,我们实现了参数化。我们传一千条数据,通过脚本的执行,可以返回一千条结果出来。
同样的脚本执行不同的数据从而得到了不同的结果,是不是增强的脚本的复用性呢!
关键字驱动
理解了数据驱动,无非是把“数据”换成“关键字”,通过关键字的改变引起测试结果的改变。
关键字驱动用编程方式就不太容易表现了。UFT、robotframework等都是以关键字驱动为主的自动化工具,因为这类工具主打的易用性,“填表格”式的关键字驱动帮我们封装了很多底层的东西,我们只要考虑三个问题就可以了:我要做什么? 对谁做?怎么做?。
三、自动化框架设计
环境要求
体系结构与驱动逻辑
文件组织结构
文件组织结构说明
1. Autotest文件夹,整个工程的最高一级目录,名称可以修改。
2. driver文件夹,这个是整个框架的入口,内有Driver.vbs驱动程序、wyz.vbs辅助程序和UFT测试项目文件夹
3. testpro文件夹,用于记录有哪些项目,是否执行
4. testdata文件夹,用于设计测试用例,给testscript提供数据、期望值等信息
5. testscript文件夹,存放测试脚本,全部存储为vbs文件。类名对应项目名,对应文件名,一个函数对应一个用例(需和testdata中信息对应),也可添加其他公共函数
6. library文件夹,按项目名称分文件夹放置的对象库文件
注:testdata和testscript目录下的内容,是真正需要开发的。
数据组织结构说明
数据组织总结
1、基于把测试设计和脚本开发分开的思路,设计了testpro和testdata Excel表格。测试设计时,主要是设计testdata中的测试用例数据表格;
2、开发testscript中的测试用例脚本;
因此,希望尽可能把这些Excel表格做得更易用。所谓的框架,就是把这几个Excel 表格串起来的东西。
driver 脚本驱动逻辑
优势:
脚本文件少,并且占用的空间也少了;
可以使用版本控制工具对单个的数据文件或者vbs 文件进行版本控制;
测试设计和脚本开发解耦;
测试用例和数据的展现更加人性化。
缺点:
异常的捕获考虑得很少;
日志只是打印到output或输出到文件,不利于查看。如果把日志输出到数据库,就可以生成相应的测试执行报告;
测试用例的管理太过于简陋。
注:该框架编写和学习对于想要学习自动化框架编写的同学,可以起到一个入门,可以帮助同学理清楚自动化框架设计的思路
以上内容皆为wyz私有版权,转载请注明出处,如果有同学或者同事进行共同深入的研究,需要相关自动化材料和自动化框架的代码,请加QQ:2604947115,我们共同进行探讨。
轻量级自动化测试框架 UFT 初学者 学习编写相关推荐
- 打造轻量级自动化测试框架WebZ
作者:Noah Zhang 出处:http://www.cnblogs.com/noahzn/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...
- 简单分享一个轻量级自动化测试框架目录结构设计
更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解 很多人在做自动化测试的过程中会遇到一个瓶颈,就是能够写脚本,但是不知道怎么去组织代码,怎么搭 ...
- 转载:::::简单分享一个轻量级自动化测试框架目录结构设计
很多人在做自动化测试的过程中会遇到一个瓶颈,就是能够写脚本,但是不知道怎么去组织代码,怎么搭建测试框架,今天博主就放点干货,分享一个轻量级的自动化测试框架的目录结构,如下图: 分层如下: config ...
- uft自动化测试工具安装步骤_你需要了解的自动化测试框架知识
01 自动化测试与测试自动化 很多人会以为自动化测试和测试自动化这两个概念没有什么不同.但是从我个人看来,这两个概念有本质上的区别. 自动化测试是指使用自动化测试工具代替人工的方式来执行测试用例.使用 ...
- motan学习笔记 一 微博轻量级RPC框架Motan
前言 motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Dem ...
- 从理论到工具 - 带你全面了解自动化测试框架
什么是自动化测试框架 01 什么是框架 框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法.它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程, ...
- 9个开源自动化测试框架,质量保证测试工程师用起来
自动化测试框架由一组最佳实践,通用工具和库组成,可帮助测试人员评估多个Web和移动应用的功能,安全性,可用性和可访问性.而在,软件开发世界中有很多的自动化测试框架,该如何选择? 虽然技术团队可以构建复 ...
- 这8款开源自动化测试框架,你还没用上?
在如今开源的时代,我们就不要再闭门造车了,热烈的拥抱开源吧!本文针对性能测试.Web UI 测试.API 测试.数据库测试.接口测试.单元测试等方面,为大家整理了github或码云上优秀的自动化测试开 ...
- 优测云服务平台分享开源自动化测试框架,快快get起来
自动化测试框架构建很复杂?时间会很长,可能会出现错误?那就来了解一些开源的框架吧,让自动化测试框架构建不再难!优测云服务平台分享开源自动化测试框架,快快get起来! 虽然技术团队可以构建复杂的自动化测 ...
最新文章
- 皮一皮:直男的拍摄水平...
- 蓝书4.1-4.4 树状数组、RMQ问题、线段树、倍增求LCA
- 面试官:给我说一下 Spring MVC 拦截器的原理?
- 爱python网_Python
- C++圆形线性链表Cicular Linear Linked List算法(附完整源码)
- jsp 动态添加一行数据_大数据从入门到深入:JavaEE 之 动态网页开发基础 JSP的数据交互(3)...
- strace监视系统调用
- 关于CodeReview
- UIView的layoutSubviews,initWithFrame,initWithCoder方法
- Oracle数据库驱动包ojdbc7.jar,ojdbc8.jar
- HTML设为首页/加入收藏代码
- 科技公司网页设计(h5 + css3)
- Kaggle—共享单车数据分析
- 欧奈尔的杯柄形态理论(技术干货)
- html边框颜色线性渐变,css3设置边框颜色渐变的方法有哪些
- 7-50 近似求PI (15分)
- 机器语言到Java语言的技术背景
- 如何翻译Word文档
- 【JZOJ B组】【NOIP2013模拟】小喵喵的新家
- 第三方支付平台的状态表
热门文章
- 北大计算机研究生有多神仙,北大考研成绩公布,还上“热搜”,这都是些什么“神仙分数”?...
- Vue的生命周期是什么
- 网易游戏大咖分享——游戏行业职位发展(上)
- JAVA把日期转换为年月日_在Java中将每年的日期转换为每月的日期
- 第四周项目3---单链表的应用之连接
- ps2021中文版完美逆袭
- English考研句子第九句
- mysql为什么要用b+树
- linux定时任务每小时_在Linux平台下每5、10或15分钟执行一次定时任务(Cron Job)...
- 12-14日小米4 手机不停的无限重启。用下面方法及清理电源,音量按钮恢复