欢迎加入TIB自动化测试快讯邮件列表:http://163.fm/17jBHlI

构建轻量级的AEP框架

上一篇 / 下一篇  2007-10-17 21:32:14 / 个人分类:自动错误预防(AEP,Automated Error Prevention)

构建轻量级的AEP框架

1VYk7xC0

陈能技

2C[(n5?/y2j(U1C0

2007-10-1751Testing软件测试网!Hj H1F'D~%L Y

 51Testing软件测试网"nB3Hn$T$P,^ F0~.u;ZB

AEP51Testing软件测试网 [^ S:l vr9x

什么是AEPAEPAutomated Error Prevention自动错误预防,是指通过在整个软件开发周期中自动地预防错误来提高产品质量。AEP通过应用行业最佳实践来防止普遍错误并建立全寿命的错误预防基础。可以把代码标准检查、单元测试、集成测试、压力测试、连接检查、监视等放到软件开发周期中并自动化51Testing软件测试网/m"t$j i w:Th

 

,Y0Ao.w,DY%f0

关于AEP的更多概念和基础理论,可参考以下两篇文章:51Testing软件测试网"kdJ vP

《我们为什么不多做点预防错误的工作

,@h{'ib;[0

http://www.51testing.com/?141783/action_viewspace_itemid_64195.html51Testing软件测试网X"{&D+w4Y-B[V'V

 51Testing软件测试网%l,Zv7gQ

《自动错误预防的五大法则》51Testing软件测试网5X`0b H$y@w _ C

http://www.51testing.com/?141783/action_viewspace_itemid_64481.html51Testing软件测试网 ? G~*Ni^Q(S

 

g4S5WH4S0

作为一个起步,我们可以先搭建一个初步的、轻量级的AEP框架。然后再逐步加入其它自动化检查工具来应用其它行业最佳实践。从而逐步建立起完整的、适合项目实际的AEP系统。51Testing软件测试网4s+m-|(tH Y)h9W

 51Testing软件测试网py m1T1@

例如,在我们的项目中,使用.NETSQLServer数据库构建C/S结果的应用软件。那么首先可以考虑的是加入VS.NET 2005开发工具自带的代码标准检查工具FxCopSQLBPA。参考我的博客上的两篇文章:

V c T8\*?A0

VS.NET 2005的代码分析工具》51Testing软件测试网L3t xV"d%MP

http://www.51testing.com/?141783/action_viewspace_itemid_64245.html

(fgV"~az0

 

g[nRZ1Dns0

SQLServer最佳实践自动检查工具》)。51Testing软件测试网6NV"S0F,}b

http://www.51testing.com/?141783/action_viewspace_itemid_64473.html

c(MZ tA\ Em0

 51Testing软件测试网 \&qn$n6s

FxCop用于检查代码是否满足.NET的编码规范,SQLBPA用于检查SQL Server的表、视图、存储过程等是否满足最佳实践的规范。51Testing软件测试网,|\/Z.a&cz'_SX

 

?2k6B C+{'}S ~'G0

利用Jscrīpt脚本搭建每日构建框架

U(p9?`^,Q$C0

首先利用Jscrīpt脚本建立起一个基本的每日构建框架,这个框架需要包括:51Testing软件测试网4|6\1`;j"B

 

1_'e(Jp#Zh2z0

1、 从源代码服务器获取最新代码并编译

x x@&K8h{0

2、 调用FxCop对代码进行检查

E"C4k {%h2OVpKjXC0

3、 调用BPA对数据库进行检查

.f3N.c+Ln9U?;YkR0

4、 汇总检查结果并发送给项目组51Testing软件测试网 I7r h/oQ#J&h

 

1A4M1j w.J0

关于Jscrīpt的脚本使用可参考Windows脚本编程,或访问我的博客的Jscrīpt栏目。51Testing软件测试网-ckt%nz&~pb

 51Testing软件测试网1L.B:z0p`0q

调用FxCopCmd51Testing软件测试网4c)Kqo2aVx0D ZT k6M

VS.NET 2005自带的代码检查工具在安装目录可以找到。

@h E6T^e-qj L#b2a0

例如:C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop51Testing软件测试网Qf,^'[7wE

 

y X;_'Yw S7y0

加入到每日构建框架中时,需要使用FxCop的命令行工具FxCopCmd。命令行的使用方法可参考如下:

8f$g;WpBw+MPV0

/file:<文件/目录> [缩写: /f:<文件/目录>]要分析的程序集文件

J,|/g x8P0~(m0

 

.D:}A p{?a p0

/rule:<[+|-]文件/目录> [缩写: /r:<[+|-]文件/目录>]包含规则程序集的目录或规则程序集的路径。“+”启用所有规则,“-”禁用所有规则

6\ [ L|p7IU0

 51Testing软件测试网^H2B Tw1?%Z3L

/ruleid:<[+|-]Category#CheckId> [缩写: /rid:<[+|-]Category#CheckId>]标识规则的CategoryCheckId字符串。“+”启用规则,“-”禁用规则

Z_PMeH!p0

 

p#W1~;o c P? s0

/out:<文件> [缩写: /o:<文件>]FxCop项目或Xml报告输出文件51Testing软件测试网1M-G8jb&n1R(X8t@e_(H

 

:Y9z|v?0

/outxsl:<文件> [缩写: /oxsl:<文件>]引用XML报告文件中的指定XSL/outxsl:none会生成一个不带有XSL样式表的XML报告

N5PGP(f$Y0

 51Testing软件测试网BVJQlG^yJw)f

/applyoutxsl [缩写: /axsl]XSL样式表应用于输出51Testing软件测试网!L t0mb[7F*\

 51Testing软件测试网Y!WKO tZV]

/project:<文件> [缩写: /p:<文件>]要加载的项目文件

!J%|3Z9oMW,S^\0

 

w8v ^)UCZ0

/platform:<目录> [缩写: /plat:<目录>]平台程序集的位置

o0tgs_9P0

 

w3P:T6h p ^.^0

/directory:<目录> [缩写: /d:<目录>]要搜索程序集依赖项的位置51Testing软件测试网&er1Jt"h`Z0T

 

9WQ2G kp0Bd-?&{0

/types:<类型列表> [缩写: /t:<类型列表>]仅分析这些类型和成员51Testing软件测试网$r2iCq3P

 51Testing软件测试网$e9y![Ogb X7W*Z

/import:<文件/目录> [缩写: /i:<文件/目录>]导入XML报告或FxCop项目文件51Testing软件测试网 X2MPq,_ bTl

 

z d-d Bz(iC l0

/summary [缩写: /s]在分析之后显示摘要51Testing软件测试网z!?Wb0X9H,}&x

 

M^W mm0

/verbose [缩写: /v]在分析期间提供详细输出结果

q e^0vB0

 

8\,E%Fn a J [;f0

/update [缩写: /u]如果进行了更改,则更新项目文件51Testing软件测试网#U1P4lBd'u]

 

#V;Uy2_Sh0

/console [缩写: /c]将包括文件和行号信息在内的消息输出到控制台51Testing软件测试网!?X^eew'FFi

 

+}#c2b2z?0

/consolexsl:<文件> [缩写: /cxsl:<文件>]将指定的XSL应用于控制台输出51Testing软件测试网#I'[6UO4e.z2e*h

 

7H8a` b@l` J0

/forceoutput [缩写: /fo]即使在没有发生冲突的情况下,也写入输出XML和项目文件51Testing软件测试网zI c'm N?^2IN

 51Testing软件测试网y~ k!eyL

/dictionary:<文件> [缩写: /dic:<文件>]自定义字典

7~+h.`C:FB#g-A0

 51Testing软件测试网Q:C)qa4}

/quiet [缩写: /q]禁止所有控制台输出,/console/consolexsl暗示的报告除外

:Vl Z#ZgF0

 

u?D&jfZl6u0

/ignoreinvalidtargets [缩写: /iit]在不进行提示的情况下忽略无效的目标文件51Testing软件测试网!P$P @`s)Y,t }MU

 

U.|$B2U2Q t0

/aspnet [缩写: /asp]只分析ASP.NET生成的二进制文件,并对要分析的所有程序集适用App_Code.dll中的模块禁止显示规则

;U`Gr:`l0

 

i?-Qo#B0

 

b2n3E c&[;~|0

因此一个调用的例子如下所示:

z~*[Ml#TRZ%_0

FxCopCmd /f:”D:\AUT\bin\Debug\aut.exe” /out:”C:\1.txt” /s /rule:+”C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\Rules\DesignRules.dll” /ruleid:-“Microsoft.Design#CA2210”

uz%|nzA XlUM0

 

/gN)H'Bf"H \ V0

BpaCmd51Testing软件测试网^D_C.`.O

SQL BPASQLServer2000版和SQLServer2005版。加入到每日构建中时,同样需要利用它的命令行工具BpaCmd,可以在安装目录找到,例如:51Testing软件测试网+z1`Nv |I6jm

C:\Program Files\Microsoft SQL Server Best Practices Analyzer51Testing软件测试网/`mo6fD8X K

 

6Fgy rI_v0

BpaCmd的调用也比较简单,例如:51Testing软件测试网4p-z0a!iy~%v1Q!y.A

BpaCmd –S 192.168.3.8 –d sqlbpa –E –r TSQLTest51Testing软件测试网Y`G [h5ju3~X1`-jB

 51Testing软件测试网 ~ Lhn1|&z

但是前提是已经建立sqlbpa库以及建立了规则检查包。

)v(TZv.D iU|JWBW0

 

%MSx{5yA0

BPACmd的使用方法可参考如下:

u4@7bxG6EFh)t0

           -REPOSITORY CONNECTION OPTIONS-

z _'X&x4w'b0

-S <server name>  Specifies the name of the SQL Server instancethat contains the repository.51Testing软件测试网 O)j#L W(m

-d <database name>  Specifies the name of the repository database.51Testing软件测试网*z;|0X2{QL~:Hw

-E   Use integrated authentication to  log on to repository.

3}U`sN)F*aq0

-U <username>  User name to log on to repository.51Testing软件测试网iA(bY-B

-P <password>   Password to log on to repository.51Testing软件测试网a0e#QB6Ly

 51Testing软件测试网$s^:X*Z7Gih5C.X

           -BEST PRACTICE GROUP OPTIONS-

#mXWqj ~2F0

-r <best practice group>  Executes the specified best practice group.

R ]$R^7gP!eD7}0N0

 

xH ND!L Dd+Q8t0

           -MISCELLANEOUS OPTIONS-51Testing软件测试网6u p2TI0t"C9I

-q    Quiet mode - does not display additional messages.

c-Uq;|]9}Tm0

-l     Logs operation of BPA engine to msbpa.log.51Testing软件测试网E(r0_U-y*F

-?    Displays usage help.

&itPJ `X0

 

I&rK}m%kQ2Q0

Examples:51Testing软件测试网/m1CnT'lO

     bpacmd -S MainServer -d sqlbpa -E -r tsql_rules -r upgrade_prep51Testing软件测试网`FkJkK1n

 51Testing软件测试网 ]X2T+}qa'V k,[

     Executes the best practice groups "tsql_rules" and "upgrade_prep"after connecting to the specified repository using integrated authentication.51Testing软件测试网`VT"B%L7kh

 51Testing软件测试网7D;r#u9N)S&ZL

结果检查和发送51Testing软件测试网__$] Vk{

FxCopCmdBpaCmd都能把检查结果保存到文件中,因此可以利用Jscrīpt读入文件,分析和汇总结果,形成最终的AEP报告,并发送给项目组所有人。51Testing软件测试网%G0G(D Mhp6TC

 

q$om,t E8? o0

这样就构建了一个非常基础的AEP系统。根据项目产品的实际情况,还可以加入其它的AEP元素,例如单元测试、WebService测试、性能测试等。51Testing软件测试网m9C`)Qg x5^


TAG: AEP 自动错误预防 自动化 框架 代码检查 最佳实践

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar