三沣开发知识 购物 网址 游戏 小说 股票 美女 租车 短信 新闻 笑话 | 开发 汉字 下载 软件 图书馆
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> 架构设计 -> [小北De编程手记] Lesson 01 -> 正文阅读
 

[架构设计][小北De编程手记] Lesson 01

[小北De编程手记] Lesson 01 写在最前面
  这个系列的主旨是要跟大家分享一下关于自动化测试框架的构建的一些心得。这几年,做了一些自动化测试框架以及团队的构建的工作。过程中遇到了很多这样的同学,他们在学习了某一门语言和一些自动化测试的类库或者工具之后,打算进一步的提高。我想这个系列也许会帮助到你,我们一起从各个维度来看一看自动化测试框架的一些最佳实践。本人能力有限,如果有什么不正确的的地方还各位大牛指正。
聊聊自动化测试的初心
在开始具体的技术和理论之前,我们先来思考一下自动化测试的目的是什么?我简单的罗列了几点:
替代手工测试中的重复操作,让测试人员把时间花在更有价值的地方 降低自动化测试用例编写的技术门槛,即尽可能降低学习成本,提高工作效率 提高测试效率,在软件开发生命周期的各个环节为质量保驾护航 精准的数据统计和分析,对产品质量和团队效能提供数据支持
  以上这几点算是我们构建自动化测试的一些原因,在一开始聊这些是希望小伙伴们不要在构建框架的过程中时刻记得我们的宗旨。勿忘初心,方得始终嘛~~~(其实,很多失败的自动化框架就是在实践的过程中渐渐违背了上述的这些目标)
从一个测试用例开始
  上来就谈论技术选型,工具类库的选择,设计模式,生命周期这些概念也许会让你迷茫。一个实实在在的测试用例也许是会是好的开始。希望能让你先有一个感官的认识,后面的文章我们会一步步由浅入深的刨析这个Demo Case.
  下面这个Demo使用的是C#语言和单元测试xUnit.Net框架。如果对xUnit.Net还不是很熟悉的的同学,建议可以先看看我的另一个系列《玩转xUnit.Net》,对于这个CASE而言了解单元测试的基本使用即可。

 1 namespace AutoFramework.TestCase
 2 {
 3     public class TestSuite_Demo : TestBase
 4     {
 5         public TestSuite_Demo(TestContextFixture context, ServiceFixture service, DBFixture database)
 6         : base(context, service, database) { }
 7 
 8         [Fact(DisplayName = "TestCase.Demo001")]
 9         public void Demo_Case_CreateCamp()
10         {
11             //-->Data preparation.
12             var userModel = ModelBuilder.ForJsonFile<UserModel>("DemoCase/TestData.json");
13 
14             //-->Test case exec way 01.
15             var signInPage = Router.GoTo<SignInPage>();
16             var homePage = signInPage.SignIn("user-name", "pwd");
17             var addUserPage = homePage.NavMenu.Select<AddUserPage>("User", "New");
18             var userListPage = addUserPage.AddUser(userModel);
19 
20             //-->Test case exec way 02.
21             /*You can custom this 'Workflow'*/
22             var userListPage = Router.GoTo<SignInPage>()
23                 .SignIn("user-name", "pwd")
24                 .NavMenu.Select<AddUserPage>("User", "New")
25                 .AddUser(userModel);
26 
27             Assert.True(userListPage.IsExistUser(userModel.Name));
28 
29 
30             //more
31             //this.Service.CallSomeService(someModel);
32             //this.Database.ExecSomeAction(someModel);
33         }
34     }
35 }

  我在《Lesson 08 - Selenium For C# 之 PageFactory & 团队构建》一文中,提到过自动化测试团队的组成,而上面的Demo是基于一个成熟的框架(也就是这个系列文章所要带你一步步构建的测试框架),所编写的最顶层的测试用例。
首先思考一下这个问题,一个Web手工测试测试人员是如何来完成测试工作的:
测试用例执行前的数据准备 一个可以工作的浏览器,自由的导航到不同的页面 在不同的页面上进行的操作 检查页面上的测试点(Check Point) 检查数据库中的数据 检查特定服务返回的数据
那么,结合上面的测试用例Demo,我们来总结一下,将要实现的自动化测试框架应该为普通的用例编写人员提供哪些的功能:
从外部文件中获取测试数据的能力(ModelBuilder.ForJsonFile) 控制路由的对象Router,协助测试人员进行页面导航以及PageObject对象的获取。 用来描述页面功能的PageObject对象。 调用系统服务的Service对象。 进行数据库访问的数据库对象。
Note:当然,测试框架应当提供的功能远不止这些。
  读到这里,也许有些同学会有很多的疑问。Model是什么?Router是如何实现的?PageObject应该如何封装?Service 和 Database对象是怎么实现的?等等... ... 这些问题也是这个系列的文章想要跟大家分享的,后面的文章我会逐一跟大家讨论。在这里我们还是把关注点放在这个case上面,在之前列出来的那些Router,PageObject,Model,Service对象和数据库访问对象都能正常工作的前提下,编写自动化用例的人员是不是就可以很容易的完成测试用例的编写?细心的同学也许已经发现了,这个case似乎没有涉及到UI驱动的框架(比如:Selenium、Appnium、White...),我也没有说这个自动化测试测试的是一个什么样的项目。但是,通过这段代码:

    //-->Test case exec way 01.
    var signInPage = Router.GoTo<SignInPage>();
    var homePage = signInPage.SignIn("user-name", "pwd");
    var addUserPage = homePage.NavMenu.Select<AddUserPage>("User", "New");
    var userListPage = addUserPage.AddUser(userModel);

你是不是已经能大致的明白这个用例是做什么的呢?

  如果为你提供了所有对象的方法列表,你是不是也可以高效快速的完成其他的测试用例呢?回想一下我们构建自动化测试框架的初心。如果要测试人员可以像做手工测试一样书写自动化测试用例,是不是就做到了降低测试门槛的目的呢?这里用到了自动化测试的一个常见的设计模式-PageObject。接下来的几篇文章我们会针对这个模式进行讲解。
看看我们将要构建的框架
任何一个框架都是一系列复杂组件的协作。我们将要一起构建的自动化测试框架会拥有下列的一些组件:
管理页面路由的工具:Router 服务调用工具:ServiceInvoker 数据库访问工具:DataKeeper 针对PageObject模式 Action封装 CheckPoint封装 Component封装 异常处理工具 日志管理工具
  这一篇就先到这里啦~~,自动化测试框架的构建是需要一定知识基础和自动化测试经验的。希望我们能在接下来的这段时间里一起提高,同样也希望我的观点对你有所启发和帮助~~~
小北De系列文章:
  《[小北De编程手记] : Selenium For C# 教程》
  《[小北De编程手记]:玩转 xUnit.Net》(未完成)
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
作者:小北@North
来源:http://www.cnblogs.com/NorthAlan
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
  架构设计 最新文章
文件数据缓存(key
网站架构设计
hadoop集群搭建
[小北De编程手记] Lesson 01
基于Flume的日志收集系统方案参考
化学品产品查询系统解决方案
Atitit.ati dwr的原理and设计 at
【架构设计】分布式文件系统 FastDFS的原理
ABP架构设计交流群
MMORGP大型游戏设计与开发(客户端架构 par
上一篇文章           查看所有文章
加:2017-08-10 23:24:13  更:2017-08-10 23:24:38 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信
2017-8-19 4:06:46
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库