《测试框架》摘选-6 单元自动化测试-数据驱动
上一篇 / 下一篇 2009-11-23 23:19:40 / 个人分类:自动化测试框架
,?&t&}o3|J$`#a01.2.2 第二步:框架—数据驱动51Testing软件测试网k&l6F#r t?c
在经过第一步之后,虽然可以自动化测试,但是每次运行都会用“测试”,“UTF-8”两个常量做参数,这达不到我们的201个测试数据组合的目标。为了解决这个问题,我们要对常量进行参数化,使得每次运行都要提交不同的数据。这个过程叫做数据驱动。如图6-4所示。51Testing软件测试网3P/Ya5~5E|
51Testing软件测试网3m X(fz%]e)\L^!L7wO
图6-4 URLEncoder单元测试数据驱动51Testing软件测试网u%^7R+r#d{})F
数据驱动要考虑如下三个因素:
^
B [,Y9sU-r0(1)数据源选择什么类型?
1g%U0JS3p0 数据源有很多种选择,比如51Testing软件测试网%ZM-~RA.J1z g:i-v
1) 文本文件51Testing软件测试网*D"{.`'cCbL
2) 数据库51Testing软件测试网&zjyI&^a-D*z:c
3)excel
JW;s9k7j+` [$C04)xml51Testing软件测试网#K0I,{!c$D
5)其他51Testing软件测试网;vR*Xme/AJ5f&t
选择哪种数据源,要根据项目的需求和特点而定。以当前的项目要求来看,URLEncoder的单元自动化测试需要频繁地从数据源读取数据,数据库显然在性能上不太合适。另外,数据源至少要能存储不同语言的字符,比如德文,中文,日文,韩文等等,对数据源的要求就是要很好地支持unicode,因此xml和excel入围。如果我们的单元自动化测试要求在unix和windows下都能运行,那么excel作为windows应用被淘汰,而xml最终胜出。51Testing软件测试网#p#H Y|4|
(2)数据如何被描述和组织?
1o'\WFe-gO?0 在第一步里,我们看到有三个常量,strToEncode,strEncoding和strExpected。根据这个信息,生成mydata.xml如下。
qA,].Z"S+`i0<?xml version=”1.0″ encoding=”UTF-8″ ?>
^^\r J0`AS0<DataPool>
4C,JV0D;rU8q*K6Q.t0 <EncodeData id=”1″>
6?4jx^%Q F$c0 <EncodeString>NLS_en_abcdefghigklmnopqrstuvwxyz</EncodeString>51Testing软件测试网vS9wB$qp?jK
<Charset>US-ASCII</Charset>51Testing软件测试网cY ^j? ~jh{
`
<Expected>NLS_en_abcdefghigklmnopqrstuvwxyz</Expected>
"O%{|N.NRA~"D3y0 </<EncodeData >51Testing软件测试网wVA+Xvpe2gU
<EncodeData id=”2″>51Testing软件测试网.D&XA)P1UT
<EncodeString>NLS_fr_àèòù</EncodeString>
R]!rQj` ]yL f0 <Charset>utf-8</Charset>
${^4ksO.~&DC&l0 <Expected>NLS_fr_%C3%A0%C3%A8%C3%B2%C3%B9%3F</Expected>51Testing软件测试网xTI's0EK|'lz
</<EncodeData >
XptU.yT0 <EncodeData id=”3″>51Testing软件测试网RZ"\ei8KX @
<EncodeString>NLS_zh_软件自动化测试框架-柳胜</EncodeString>
C}\gh*N#A(L0 <Charset>gb2312</Charset>
7eHIQyg0<Expected>NLS_zh_%C8%ED%BC%FE%D7%D4%B6%AF%BB%AF%B2%E2%CA%D4%BF%F2%BC%DC-%C1%F8%CA%A4</Expected>51Testing软件测试网 h.j5@LG%Zp
g)w
</EncodeData>51Testing软件测试网0F
|X3y X
a
<EncodeData id=”4″>
|2^ V,K
\@7Ny1]!i)N0 <EncodeString>NLS_ja_なリンクをクリックすると</EncodeString>
s
_1U(m-M0o;Q{,e,Pf1I0<Charset>ISO-2022-jp</Charset> <Expected>NLS_ja_%1B%24%42%24%4A%25%6A%25%73%25%2F%24%72%25%2F%25%6A%25%43%25%2F%24%39%24%6B%24%48</Expected>51Testing软件测试网%G"] u7B0H
SX*i
</<EncodeData>51Testing软件测试网H%UH"z"J`3c
</DataPool>51Testing软件测试网'~E9Cks$tR
(3)代码实现data层51Testing软件测试网j?&RVN,J eO
驱动函数如下:51Testing软件测试网^3A1Fm0b
Y.`
import java.net.URLEncoder;51Testing软件测试网M7}H6Ry_'T
public class TestURLEncoder51Testing软件测试网OhdL
s;l*S
{
%BuodQ'I0 public static void main(String args[])
$j#uW%J-e+_N0 {
W
l
Z)dZB0try{51Testing软件测试网"C&\!u*H9Y7I
//初始化数据源,即完成从xml文件到对象的存储
o1va3A0Rr5m0 MyXMLData data=new MyXMLData();
I2|)o:Zb1H0 For (int i=0;i<data.getSize();i++)
KXO?:`_ \/vG]0 {