构建轻量级的AEP框架

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

构建轻量级的AEP框架

,R(Y4J#R:XF0kP0

陈能技

*uJ3` E;GE0

2007-10-1751Testing软件测试网R8s vr/l6y

 

yV(r |$S&MN0

AEP

\2ez&aj,o.| m-Y Ku0

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

 

/Lr(B:u)BL`0

关于AEP的更多概念和基础理论,可参考以下两篇文章:

&tM[t2[JD{0

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

3pKn-@|0

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

^.`QUU7e0

 

;X_6j8J_0I0

《自动错误预防的五大法则》

0tKBt8P,g/K!B#ajL0

http://www.51testing.com/?141783/action_viewspace_itemid_64481.html51Testing软件测试网4[KI4I/iegMU0Z`

 

Wb dTLWC0

作为一个起步,我们可以先搭建一个初步的、轻量级的AEP框架。然后再逐步加入其它自动化检查工具来应用其它行业最佳实践。从而逐步建立起完整的、适合项目实际的AEP系统。

%^ec/Gq(yTXp u3ZH0

 51Testing软件测试网+W;t2pGR|~2P

例如,在我们的项目中,使用.NETSQLServer数据库构建C/S结果的应用软件。那么首先可以考虑的是加入VS.NET 2005开发工具自带的代码标准检查工具FxCopSQLBPA。参考我的博客上的两篇文章:51Testing软件测试网4Y#p}&x-j/N4Y0\-h

VS.NET 2005的代码分析工具》51Testing软件测试网e2W'Y&X-w!D.T

http://www.51testing.com/?141783/action_viewspace_itemid_64245.html51Testing软件测试网(A%W!G%AMlM+}

 

V2Sd"I By~'J0

SQLServer最佳实践自动检查工具》)。51Testing软件测试网,Z6N&NmyZ

http://www.51testing.com/?141783/action_viewspace_itemid_64473.html51Testing软件测试网S U WEW0BH)eWD%X

 51Testing软件测试网iY'@5@aA

FxCop用于检查代码是否满足.NET的编码规范,SQLBPA用于检查SQL Server的表、视图、存储过程等是否满足最佳实践的规范。

U UnC!^z%M%`:J0

 51Testing软件测试网*K*j%d9b4Mj$Dl

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

a JHE8k?0

首先利用Jscrīpt脚本建立起一个基本的每日构建框架,这个框架需要包括:51Testing软件测试网)I9i1kH3z+OA

 51Testing软件测试网&c/zK A$wlx&f9m.^

1、 从源代码服务器获取最新代码并编译51Testing软件测试网4MN!YAc1P|}9|mZ#v

2、 调用FxCop对代码进行检查51Testing软件测试网+OIr*_wyi B

3、 调用BPA对数据库进行检查51Testing软件测试网dqi EV

4、 汇总检查结果并发送给项目组51Testing软件测试网}b_}!sUnX

 

p2K)g b]f{-Q0

关于Jscrīpt的脚本使用可参考Windows脚本编程,或访问我的博客的Jscrīpt栏目。51Testing软件测试网ff w6L;[:Kbx m/W

 51Testing软件测试网1W.x Cc7f)SQ

调用FxCopCmd

#U+N S |I |0

VS.NET 2005自带的代码检查工具在安装目录可以找到。51Testing软件测试网+P!P$t?*{4C;m%Kw

例如:C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop

8U8K.V-E)k0

 51Testing软件测试网 u/n*u"~)m

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

@0V_A9Sc;s0

/file:<文件/目录> [缩写: /f:<文件/目录>]要分析的程序集文件51Testing软件测试网pz6j }to a3uD

 51Testing软件测试网|D6?xw J

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

j$p\Ne2f i@G,{A0

 51Testing软件测试网P&F"?Km4qg.[7L

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

7jKTd%iq0

 51Testing软件测试网-ls{7o-c0AU

/out:<文件> [缩写: /o:<文件>]FxCop项目或Xml报告输出文件51Testing软件测试网MQ o%Yvo

 51Testing软件测试网uH'b4U~Pr

/outxsl:<文件> [缩写: /oxsl:<文件>]引用XML报告文件中的指定XSL/outxsl:none会生成一个不带有XSL样式表的XML报告51Testing软件测试网NM V2b(^E3i

 51Testing软件测试网} jH[ akC

/applyoutxsl [缩写: /axsl]XSL样式表应用于输出

W&W)uva@@m1}0e0

 51Testing软件测试网 Q/Y W9wk1|"p~

/project:<文件> [缩写: /p:<文件>]要加载的项目文件51Testing软件测试网C/b \._5r:R

 

/Nl0l6w"f^l4d4r@,`0

/platform:<目录> [缩写: /plat:<目录>]平台程序集的位置51Testing软件测试网*IcT%SZ7U&L

 

U*K+hA3T@R0

/directory:<目录> [缩写: /d:<目录>]要搜索程序集依赖项的位置

7BDR8n+xc&z_(l0

 

N M0{3Ya1Yv1v0

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

 51Testing软件测试网9ZAKF4Y"Y:Gp}F

/import:<文件/目录> [缩写: /i:<文件/目录>]导入XML报告或FxCop项目文件

},uz.O3V;S7vx6f0

 

N8f k:pTLk0

/summary [缩写: /s]在分析之后显示摘要51Testing软件测试网y,D @zR8it U

 

$]O |$yKF0

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

vm-[:M n3{0

 51Testing软件测试网Dk#f(JF

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

 

%l {o b9O ||5em ?FA0

/console [缩写: /c]将包括文件和行号信息在内的消息输出到控制台

.WOkr [l0

 

za#e1]i9`r0

/consolexsl:<文件> [缩写: /cxsl:<文件>]将指定的XSL应用于控制台输出51Testing软件测试网V7fw J]*a5k;U

 

oi:\(p c(l Z-@5i _0

/forceoutput [缩写: /fo]即使在没有发生冲突的情况下,也写入输出XML和项目文件

6b*U [.}#?j0

 

7P7^2DiG0

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

i2e0N*J0q*RY0

 

UH(L+yS[ Z&X X.U0

/quiet [缩写: /q]禁止所有控制台输出,/console/consolexsl暗示的报告除外51Testing软件测试网8zu0C#os1Ret

 51Testing软件测试网y`-~%G/B(K;t'U9F.K

/ignoreinvalidtargets [缩写: /iit]在不进行提示的情况下忽略无效的目标文件

5h;J8HQ(U*uO0

 

T5uf["C,]V5EQ0

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

tB,Z7Y8o/F i1m0

 51Testing软件测试网!H4^Lp T K'Vn

 

s+X'e@#b8]6H%I0

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

ruCh q[\.Q0

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”51Testing软件测试网M`0k#L^.w,ZV

 51Testing软件测试网V5T^#wK6?

BpaCmd

lC ? Nec"]@0U!}0

SQL BPASQLServer2000版和SQLServer2005版。加入到每日构建中时,同样需要利用它的命令行工具BpaCmd,可以在安装目录找到,例如:

d}d;|\Y#Lt0

C:\Program Files\Microsoft SQL Server Best Practices Analyzer51Testing软件测试网)p nIaB7u:Y

 51Testing软件测试网6m0E7~+X/j;wi

BpaCmd的调用也比较简单,例如:51Testing软件测试网D+?!RMC

BpaCmd –S 192.168.3.8 –d sqlbpa –E –r TSQLTest51Testing软件测试网"]&|i:U ~Wq

 

H,}&SS%rfZ#`K,u$q*~0

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

/?bti RS1cz0

 

QIC3kl&Z0

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

(t;{z!l5u6d^\0

           -REPOSITORY CONNECTION OPTIONS-51Testing软件测试网x)g*qv ?

-S <server name>  Specifies the name of the SQL Server instancethat contains the repository.51Testing软件测试网 ~ jCj&a tupV

-d <database name>  Specifies the name of the repository database.

}L.P"FW#}0

-E   Use integrated authentication to  log on to repository.

ew.qC-YmV&\0

-U <username>  User name to log on to repository.

{*v^H%\(U4xBg0

-P <password>   Password to log on to repository.

g'x)s]K4piX-L0

 

^;c:h$O w`/ca C0

           -BEST PRACTICE GROUP OPTIONS-

"vk'H w#E g|nu&eq2?0

-r <best practice group>  Executes the specified best practice group.51Testing软件测试网 W0mWX)kF

 

QvQp L9s!M!f7x0

           -MISCELLANEOUS OPTIONS-

zQ7A7M)m,T+@Bv'C U0

-q    Quiet mode - does not display additional messages.

/r*JMV+AX7l0

-l     Logs operation of BPA engine to msbpa.log.

}7sUb7Z{SB9|#q0

-?    Displays usage help.51Testing软件测试网"d\|Bw#q;H7r

 51Testing软件测试网b!U4km3T-Q1W.U

Examples:

w/J5qFfg(l.@ld0

     bpacmd -S MainServer -d sqlbpa -E -r tsql_rules -r upgrade_prep

)ZV6mz6vY%_0

 51Testing软件测试网1H!S|.o5Z5Yy

     Executes the best practice groups "tsql_rules" and "upgrade_prep"after connecting to the specified repository using integrated authentication.51Testing软件测试网FRML[O#s6P&YQ

 

4Gx7G Q,G ^/w~A0

结果检查和发送

9l$hN I.Z+B0

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

y8A"[ g[u s)g0

 

[2F-F/r*a1py0

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


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

 

评分:0

我来说两句

Open Toolbar