自动化脚本编码规范Word格式文档下载.docx
《自动化脚本编码规范Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自动化脚本编码规范Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。
王春生
邮箱
chunsheng.wang@alibaba-wwccss@
历史
创建于2006-08-1110:
22,最后修改于2008-07-0816:
29
●本规范的目的是让保证team成员编码的统一。
●本规范的核心规则就是驼峰方式的命名规则。
●此规范必要时可以打破。
一、PHP命名规则
1.1变量命名
●采用驼峰方式。
首字母小写,后面的字母按照大小写间隔的方式加以区分,比如userName,serviceID
●如果有单词缩写,则采用大写形式。
如:
PID。
●应该避免大写的单词在一起,因为无法直接判断单词的分割,比如IMGFile,应该写成imgFile。
●类名,类的属性命名规则与此相同。
●数据库、表、字段的命名规则与此相同。
●SQL查询语句中关键词使用大写。
比如:
SELECT*FROMuserListWHERE
1.2常量命名
●采用大写单词与下划线间隔的方式,比如IMATCH_DISPATCHER_API。
1.3函数命名
●采用驼峰方式,动词加名词,动词小写,后面的名词用大小写间隔。
getAdInfo()
●如果需要,可以增加小写的前缀,这时动词则大写开始。
imGetAdInfo()
●类的方法命名规则与此相同,不过类的方法一般不需要增加前缀了。
1.4目录文件命名
●目录和文件一般采用小写的格式,尽量使用两个以内的单词表达。
●不建议使用下划线间隔的方式。
但如果目录或者文件名过长,无法使用少量单词表达时,应当使用下划线。
●不建议使用大写字母,但如果要表达的名称是大家约定俗称的,应尊重旧有的习惯。
二、PHP脚本文件的构成及注释
●每个文件按照以下顺序排列:
功能说明部分、包含声明部分、具体的业务逻辑、自定义函数部分。
●注释按照phpdoc的标准进行,这样可以和c++程序统一起来。
http:
//manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_phpDocumentor.pkg.html
2.1功能说明部分
在每一个文件的开头部分,要包含这个程序的简要说明、详细说明以及作者和最后修改时间。
注释采用phpdoc的注释方式。
<
?
/**
*iMatch监控程序(简单注释)
*
*此脚本程序用来监控iMatch所建索引的完整性、一致性、正确性。
(详细说明,可选。
)。
*@authorwangcs<
chunsheng.wang@alibaba-,wwccss@>
*@version$Id$
*/
>
说明:
●详细说明部分是可选的,如果某个文件的逻辑比较复杂,可以在详细说明部分加以解释。
●其中的$Id$会被自动替换成subverion的相应信息,其中包含文件名、日期、修改者等信息。
在每个文档的开头部分包含此程序所用到的包含文件。
include'
init.php'
;
func/common.php'
2.3具体的业务逻辑
●注释的原则是将问题解释清楚,并不是越多越好。
●若干语句作为一个逻辑代码块,这个块的注释可以使用/**/方式。
●具体到某一个语句的注释,可以使用行尾注释:
//或者#,但应当保持风格一致。
/*生成配置文件、数据文件。
*/
$this->
setConfig();
createConfigFile();
clearCache();
#清除缓存文件。
createDataFiles();
//生成数据文件。
prepareProxys();
restart();
●如果当前PHP脚本需要定义一个函数,则在文件尾部声明。
●凡有两个以上文件用到的函数,应将其定义在一个公共的函数库文件中。
比如function.php中。
●自定义函数需包含以下几个部分:
函数功能描述、函数参数说明、返回值说明。
示例:
*数据库连接函数(简单说明)
*通过这个函数链接到数据库,并返回相信的链接标识符。
(详细的说明)
*@authorwangcs<
chunsheng.wang@alibaba-,wwccss@>
*@globalstring数据库服务器(全局变量声明,无需指定变量名,顺序对应)
*@paramstring$SQL连接成功以后执行的查询语句,默认为空。
(变量声明)
*@returnarray返回数据库连接信息。
(返回值说明)
functiondbConnect($SQL="
"
)
{
global$mysql;
xxxx;
xxxx;
}
●如果函数功能比较简单,也可以采用一句话注释的方式,来说明此函数的作用,省略参数的说明。
php
/*清楚缓存文件(一句话说明,省略了参数的说明)*/
functionclearCache()
{
if(!
clearCache)return;
system("
mdbm_trunc-f$this->
dataRoot"
.'
cache.mdbm>
/dev/null'
);
defCaches.mdbm>
examinedb.mdbm>
}
2.5类的注释方式
*AdDispatcher测试的基本类文件。
(类的基本说明)
*@authorchunsheng.wang<
chunsheng.wang@alibaba->
/*AdDispatcher类。
classaddisp
var$binRoot;
#addisp运行的根目录。
var$dataRoot;
#addisp数据文件所在的目录。
var$configFile;
#addisp的配置文件。
/*构造函数,初始化各个变量。
functionaddisp($clearCache=true)
global$CFG;
/*设置基本的参数。
$this->
binRoot=$CFG['
binRoot'
];
dataRoot=$this->
binRoot.'
data/'
/*生成配置文件、数据文件。
……
●大括号分成两列书写,理由是可以方便的界定大括号的范围。
●缩进采用四个空格,不使用Tab键进行缩进。
●操作符前后应该有空格,比如$userName='
wangcs'
●同一逻辑代码块的代码操作符应当尽量对齐,这样可以方便阅读与修改。
$userName='
$userAddress='
hangzhou'
四、MMT测试脚本约定
通常来讲,某一个系统模块的测试脚本可以由下面几种类型的文件构成:
●与模块交互的api定义文件,一般是一个类文件,里面定义了与该模块交互的各种方法。
●该模块相应的配置文件,里面定义了若干参数变量。
●具体某一个测试用例的入口文件,一般我们把它定义为case.php,该文件继承自上述的类,调用该类的方法与模块进行交互,以完成某一个测试用例的各个步骤。
●具体某一个测试用例的数据文件,这和你测试的模块相关。
●辅助的一些工具,比如控制模块的启动、停止等。
●按照模块通常的约定名称在svn里面建立一个目录。
比如叫做AdDispatcher
●在该目录下面有如下的文件和目录:
⏹addisp.class.phpAdDispatcher的api定义文件。
⏹config.php测试脚本的配置文件。
⏹10_nationbroadcat/第一组用例的目录。
◆01_cpc第一组的第一个用例的目录。
●case.php第一个用例的入口文件。
●data第一个用例的数据文件。
◆02_cpc第二个用例的目录。
⏹20_binddomain/第二组用例。
⏹30_querytype/第三组用例。
⏹40_precheck/第四组用例。
⏹50_icast/第五组用例。
●上述的例子只是一个例子,具体的应该根据所测模块的实际情况而定。
●某一组用例建议放在一个目录下面,前面通过数字来保证排序。
数字有间隔,以便后续可以插入新的用例分组。
●如果某一个模块的测试脚本构成比较简单,可以不用采取分组的格式,统一将其放在cases目录下面,比如:
moduleA
⏹module.class.php
⏹config.php
⏹cases
◆01_cpc.php
◆02_cpc.php
◆10_cpt.php
●如果在一个模块的测试脚本中需要用到另外一个模块的测试脚本,可以通过在Makefile中写入一句svnexport命令来完成:
svnexport
这样只需要执行make命令,就可以把相应的脚本导出到指定的目录下面。
●如果在测试过程中涉及到接口方面的数据,可以考虑使用ini格式的文件。
php解析起来非常的方便,维护起来也方便:
[query1]
queryType=6
url=
title=title
keyword=鲜花
pid=mm_10000505_990_188598
ip=10.62.0.112
五、XHTML代码规范
5.1样式表的引用
●样式表通过外部引用的方式调用,不建议在页面中新定义样式。
●页面元素中的展现形式不建议通过html代码进行定义,都统一使用样式表进行。
比如要显示红色字体,用Html代码可以这样进行定义:
fontclolor=”red”>
红色字体<
/font>
但最好的方法是通过样式表来定义。
spanclass=”redtext”>
红色字段<
/span>
●将对网站样式的定义集中到一个样式表文件中去,如果对网站进行修改,可以很快进行。
而如果分散到各个网页文件中去,改动起来就非常麻烦了。
5.2缩进、换行约定
●网页代码的缩进使用两个空格。
因为网页嵌套标签可能比较多,所以使用四个空格进行缩进会导致最深层的代码缩进太多,因而使用两个空格进行缩进。
●如果一行中代码太长,请换行。
tr>
td>
inputtype=”text”name=”test”value=”test”class=”MyInput”onclick=”alert(‘test’)”>
/td>
/tr>
可以改成
●如果多行相似的代码出现,属性尽量对齐
inputtype="
hidden"
name="
ProjectID"
value="
{$ProjectID}"
/>
ModuleID"
{$ModuleID}"
BugID"
{$BugID}"
AssignedTo"
{$AssignedTo}"
type、name和value属性对齐以后阅读起来比较方便。
●对于某种标记的多个属性,其顺序尽量保持一致。
比如table标记的定义可以按照下面的顺序来定义。
tablewidth="
90%"
align="
center"
border="
0"
cellpadding="
1"
cellspacing="
class="
BgTable"
5.3书写规范
5.3.1所有的标记都必须要有一个相应的结束标记
以前在HTML中,你可以打开许多标签,例如<
p>
和<
li>
而不一定写对应的<
/p>
/li>
来关闭它们。
但在XHTML中这是不合法的。
XHTML要求有严谨的结构,所有标签必须关闭。
如果是单独不成对的标签,在标签最后加一个"
/"
来关闭它。
例如:
br/>
imgheight="
80"
alt="
网页设计师"
src="
../images/logo_w3cn_200x80.gif"
width="
200"
5.3.2所有标签的元素和属性的名字都必须使用小写
与HTML不一样,XHTML对大小写是敏感的,<
title>
TITLE>
是不同的标签。
XHTML要求所有的标签和属性的名字都必须使用小写。
例如:
BODY>
必须写成<
body>
。
大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字"
onMouseOver"
也必须修改成"
onmouseover"
。
5.3.3所有的标记都必须合理嵌套
5.3.4所有的属性必须用引号"
括起来
在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。
5.3.5给所有属性赋一个值
XHTML规定所有属性都必须有一个值,没有值的就重复本身。
tdnowrap>
<
checkbox"
shirt"
medium"
checked>
必须修改为:
tdnowrap="
nowrap"
checked="
checked"
5.4表单变量命名约定
表单中的变量命名采用PHP的命名方式,使用驼峰方式命名。
formname=”LoginForm”>
inputtype=”text”name=”userName”value=””/>
inputtype=”password”name=”password”value=””/>
/form>
六、JavaScript代码规范
6.1变量命名约定
由于JavaScript区分大小写,所以对变量进行命名的时候需要谨慎。
同时为了与php程序保持统一,JavaScript的变量命名也采用驼峰的形式。
6.2函数命名、注释约定
6.2.1函数命名采用动词+名词的形式,第一项首字母小写。
也可以增加前缀。
functioncheckUserName()
增加前缀的命名可以为:
functionsysCheckUserName()
6.2.2函数的注释沿用phpDoc的标准。
*Displaysanconfirmationboxbeformetosubmita"
DROP/DELETE/ALTER"
query.
*Thisfunctioniscalledwhileclickinglinks
*@authorwangcs<
wangcs@>
*@paramobjectlinkthelink
*@paramobjectsqlQuerythesqlquerytosubmit
*@returnbooleanwhethertorunthequeryornot
functionconfirmLink(link,sqlQuery)
6.3代码书写规范
●缩进约定:
缩进采用四个空格进行缩进。
●每一行都以”;
”结束。
●循环、逻辑判断中大括号都单独占一行。
●相邻几行代码中相似的部分尽量对齐。
*动态显示表格。
*@author王春生<
wwccss@>
*@paramintid表格编号。
*@paraminttotalCount表格总数。
functionshowTable(id,totalCount)
for(i=1;
i<
=totalCount;
i++)
if(I==ID)
else
●php脚本开始部分应当加上$Id$标签,这样svn会自动将其替换为最后的修改时间、版本和修改者。
在提交svn的时候,需要通过下面的语句设置文件的Id属性:
svnpropsetsvn:
keywordsId
●commit的时候一定要写注释,注释的内容必须是此版本的修改信息。
注释信息请按照下面的说明进行:
+表示新增功能
*表示修改功能
-表示删除的功能;
●+-*前后都有一个空格。