分布式测试框架架构与思考(1)技术选型
上一篇 / 下一篇 2012-08-06 11:16:30 / 个人分类:杂谈
“工欲善其事必先利其器”。无论是哪个行业,这都是一句至理名言,软件测试当然也不例外。这也正是分布式测试框架(下文简称DST)设计的初衷。
6l!}j s!R mH4Ho Vy0dG"O)V)Yk1sd0 DST是海量数据项目背景下,为了解决测试集管理、运行、查询和测试执行、控制以及监控、日志数 据的收集整理的一个通用型测试与分析平台。这个平台既包含了传统测试框架的特点也包含了自身的开创性思想。作为DST从前端界面到后端服务的亲身经历和开 发者,下面我将从技术选型、架构设计、功能点分析、使用场景以及周边支持工具这几个角度来对DST测试平台做一个总结,进一步思考和回顾,以便发现不足和 需要改进之处。
J}d*yF3m&i.qs051Testing软件测试网yL \"`!Kl [--------------------------------------------------------------------------------
F*j'~8K0l9Q051Testing软件测试网qS@$w~3_3O0K5cY第一篇 技术选型51Testing软件测试网(L%E6o%c^Cb
51Testing软件测试网kj6E1~I#cG!q对于一个好的软件来说,技术选型无疑是最重要的一步,这将决定软件是否有良好的扩展性、健壮性、可靠性以及可维护性。对于DST来说,传统的B/S是一个显而易见的架构性选择,那么从前端到后端都需要有良好的Framework以及清晰的技术轨道与之配合。51Testing软件测试网,y l^ E9a ^%l
N'v U1b)Ok{0 好的技术选型可以大大缩短开发周期,并提高代码的质量,减少bug产出率,优良的技术往往是具有清晰的结构化框架的,便于追踪问题,以及向其他开发者分享代码。
H8Dh,r _2t051Testing软件测试网 MnV$S,a,pGr技术选型贯穿了整个DST的设计与开发始终,并经历了多次回滚调整,最终采用现在的技术轨道并非是一件一帆风顺的事情。下表列举的是DST使用到的相关技术:
OmMR\"z$V&C0名称51Testing软件测试网~VYHGM tm | 描述 s\4f:@_ i0 |
Webx 1F E$HrbO*L0 | 基于经典MVC设计模式的WEB框架,构建前端UI的主要骨骼脉络,具有清晰地层次化构造,良好的扩展机制。51Testing软件测试网Di)e&Q:]C AU |
Velocity rvrb0kh0 | 基于java的模板引擎,允许仅仅简单的使用模板语言(template language)来引用由java代码定义的页面对象。 +?)\ b\YQCXgY,_0 |
ibatis #E4c4H^a8?2X].q0 | 持久层框架包括SQLMaps和Data Access Objects(DAO),是一种“半自动化”的ORM(Object/Relation Mapping)实现。 (XgL9E&BRkf0 |
Jeasyui -N$C"fX6h#e)|~4@0 | jQuery Easyui,基于jQuery的前端页面和javascript设计框架,简单且易于上手,封装的AJAX简洁易用。51Testing软件测试网)\7PZ{8m2x |
HBase51Testing软件测试网 LG []I(o | 一个分布式的、面向列的开源nosql数据库,DST利用其实现海量监控和日志数据的存取。 i7b.y+C8gv C[^cz0 |
Mysql51Testing软件测试网Q6X1wi9N;d | 持久化前端以及测试数据。 Zx$xLZJ!rex"l0 |
HighCharts @'S [Lr,s0 | 一套界面美观的纯Javascript图表库。51Testing软件测试网Ix {1H x(X6F |
RESTful 9M7]:T'C4|l0 | REST (REpresentational State Transfer)描述了一个架构样式的网络系统。51Testing软件测试网%T:aDk~5T1ESy |
Ueditor51Testing软件测试网rg6iM7E#@W\bqwQ | |
AJAX51Testing软件测试网5K ^ ?"Hvp*x | 交互式网页应用的网页开发技术。51Testing软件测试网]p%y;[ZL |
SyntaxHighlighter51Testing软件测试网~%Q*X)_+EX},mEN | 高亮显示代码用的Javascript库。51Testing软件测试网7Q@iN/dY#P |
Thrift51Testing软件测试网?1]g`2}Y4Dm v | Facebook开发的一个软件框架,用来进行可扩展且跨语言的服务的开发。51Testing软件测试网sG F P B |
Jetty51Testing软件测试网;PvafC ~0o| | 开源的servlet容器。 'i?8P D3FK.^#lT0 |
其他还有一些例如SimpleTip(浮动标签)、MapReduce(用来做nosql数据的定期备份)等技术,由于涉及不多,不再列举。51Testing软件测试网dYNrus?
51Testing软件测试网$]&pg;ra:a2R#h,tIo在整个DST的开发周期中,围绕技术选型,曾经发生过几次重要的争论,列举如下:
p^HN PW|%u051Testing软件测试网w B^]}$h1、框架之争
uq X*ZB0#QZbPzA0 DST之前有Kelude测试平台可以借鉴,Kelude采用Ruby语言的Rails框架,其特点是轻巧灵活,代码极少重复,开发效率极高。 然而考虑到精通Ruby语言的程序员不多,后端服务的技术人员大多精通Java而非Ruby,且海量数据平台的大部分产品都是Java开发(如 Hadoop),将来在DST与测试场景接合的时候,相同的语言可以省却很多麻烦。最终定选的Webx作为一个成熟的MVC设计模式,在淘宝的使用很广 泛,有大量资料实例可以参考。
tfTO^:t051Testing软件测试网2vK't{jzs!oyJ持久层采用Hibernate还是ibatis,这要归功于我们团队的leader叶渡的技术选型,在后来的开发过程中,不谈外部的一般说法, 我的感觉是ibatis结构非常清晰,sql语句完全被抽象到了sqlmap文件中,适合DBA以及其他开发人员对sql语句的审核。从DAO接口到之上 的事务层,都可以通过ibatis很好的管理起来。但是ibatis从生成到增删改非常繁琐,增加一条sql语句,一般情况下至少要修改6、7个文件,这 个过程很容易出错。
'~"B:f4rcZ+[051Testing软件测试网+G0?ML/v/J+de4w2、UI设计之争
vA*E4mnH b(M,[051Testing软件测试网*[#z0^+t3v作为后端测试工程师,因为我在DST立项开始的时候并没有太多的前端开发经验,因此在UI设计上,曾经发生过是否要专业UED参与的争论。这个争论虽然之后随着DST的开发渐渐消失,但此时提及,是为了记录我在设计过程中的一些思考。
|BS)Bpd051Testing软件测试网OdVP3ofT']E我觉得DST如果有专业的UED协助进行用户体验的设计那是最好不过的事情,但是对于此类项目的开发早期,很多功能点不是很清晰的情况下,由开 发人员掌握住整个流程还是相当有必要的。开发者的亲身参与会省去许多探雷的过程,且测试人员自己才最清楚需要一个什么样的系统,UED的参与更多从普通用 户角度思考,而测试框架作为一款特殊的软件产品,更需要从开发者角度去思考他们的操作习惯。51Testing软件测试网l E+G7Y g7N0^
P&W{'ldaGzc3e0 3、海量数据持久化之争51Testing软件测试网\x%d+Y u