《OneTest组新员工培训指引.doc》由会员分享,可在线阅读,更多相关《OneTest组新员工培训指引.doc(37页珍藏版)》请在三一办公上搜索。
1、OneTest组新员工培训指引变更记录版本号拟制/修改日期拟制/修改人修改记录修改原因1.02012-01-01仇堃堃新建1.12012-01-16蔡先锋添加章节5、开发基础1.22012-01-18马勇添加主要软件安装1.32012-01-18周佾梅修改存储过程学习1.42012-01-29仇堃堃增加PMS任务填报的相关内容1.52012-01-31马勇根据评审结果修改文档1.62012-02-02马勇添加MyGeneration软件添加OneTest所用模板目录1主要软件安装31.1开发软件安装41.1.1Daemon安装41.1.2IIS安装41.1.3VS2008安装51.1.4Ora
2、cle安装61.1.5pl/sql91.1.6TortoiseSVN91.1.7Rational Rose Enterprise Edition91.1.8PowerDesigner101.1.9EC101.2沟通软件安装111.2.1IM安装111.2.2Notes安装112代码下载132.1SVN用户名/密码132.2Svn地址132.3Web项目132.4编译整个项目143学习文档143.1了解整个项目涉及到的主要文档144系统整体框架和主要技术点的学习155开发基础185.1、代码自动生成185.1.1、MyGeneration185.1.2、EasyDev205.2、配置文件修改21
3、5.3、代码规范215.3.1、编码规范215.3.2、修改记录225.4、脚本提交225.4.1、脚本编写225.4.2、脚本位置236存储过程的学习246.1、数据库内置函数246.2、项目内置函数266.3、关于性能等问题的注意事项276.4 、项目内部约定27主要软件安装所有需要安装的软件大多均已经下载,可访问局域网共享ftp:/10.41.210.1/OneTest/Soft/账号:ec 密码:123也可以去中兴常用软件下载 下载相关软件1. 安装解压缩软件7-zip下载链接:haozip下载链接:注意:根据中兴公司规定,禁止使用WinRAR2. 安装Microsoft Office
4、 2007 下载地址:正版序列号:VWTHJ-PP4CV-HWD9M-HMTH6-WQRMJ1. 安装 ZTE UDS V2.0.8下载地址:安装完成后,在任务栏图标中,找到UDS VPN 右击该图标,选择设置,勾选,开机自动启动,和自动启动IM。UDS 安装完毕后,会附带McAfee,由于安装下列部分软件的安全限制,需要禁用McAfee,打开McAfee控制台:开始所有程序McAfeeVirusScan 控制台,出现下面界面。把所有“已启用”设置为“已禁用”状态。如下图:1.1 开发软件安装1.1.1 Daemon安装1. 下载地址:1.1.2 IIS安装1. 下载地址:ftp:/10.41
5、.210.1/OneTest/Soft/iis51.zip2. 安装详解:首先将IIS压缩包解压到文件夹中,进入添加/删除,选择添加/删除Windows组件,勾选Internet新信息服务(IIS),单击下一步安装过程中会多次弹出所需文件对话框,操作相同:单击浏览按钮,在上面解压的文件夹中查找指定文件安装成功后会弹出完成Windows组件导向窗口1.1.3 VS2008安装下载地址:ftp:/10.41.210.1/OneTest/Soft/VS2008(no msdn).rar1.1.4 Oracle安装下载地址:10.40.22.100SoftwareOracle9i安装好后,把下列tns
6、names.ora文件存放到:D:Oracleora90networkadmintnsnames.ora注: D:为Oracle的安装目录 双击图标即可查看tnsnames.ora文件内容 安装步骤:第一步:第二步第三步:第四步:第五步:第六步:最后点击“安装”按钮,开始安装。中途需要换2此光盘。1.1.5 pl/sql1. 下载地址:ftp:/10.41.210.1/OneTest/Soft/plsqldev803.rar2. 安装过程相对简单,破解参看安装程序说明1.1.6 TortoiseSVN1. 下载地址:ftp:/10.41.210.1/OneTest/Soft/SVN.zip2.
7、 安装完成后,继续安装中文简体语言包ftp:/10.41.210.1/OneTest/Soft/LanguagePack-1.4.8.12137-win32-zh_CN.exe3. 修改SVN语言显示,在任意区域右击,选择 TortoiseSVN 设置,在常规设置中选择简体中文4. 使用中的常见问题,参考目录中的相关文档1.1.7 Rational Rose Enterprise Edition1. 安装时,选择Rational Rose Enterprise Edition 2. 剩余安装默认,注意选择安装路径3. 破解详看安装程序根目录1.1.8 PowerDesigner 1. 下载地址
8、: 1.1.9 EC1. 下载地址:2. 安装详解:参照下载页面软件简介项。3. 常见操作运行EC.exe程序,如下图所示。输入工号、密码,单击登陆进入EC主界面。1.1.10 MyGeneration1. 工具下载地址:ftp:/10.41.210.1/OneTest/Soft/mygeneration_1303.exe2. OneTest模板下载地址:ftp:/10.41.210.1/OneTest/Soft/OneTest_ V1.3.csgen3. 安装详解:(使用方法参照文本5开发基础)1.2 沟通软件安装1.2.1 IM安装1. 下载地址: 2. 按照默认方式安装。1.2.2 No
9、tes安装1. 下载地址:2. 安装时参考:3. 配置时参考:如下链接及操作步骤初次运行 Notes时需要配置Notes: 姓名:填写自己工号,如:6396000030Domino 服务器名称填写:notes_svr80(西安填写这个),其他地方成员请咨询开发组长或经理。填写完成后,选择下一步:访问: 点击网页上横向导航中与我相关,然后点击左边导航待我处理,下载用户标识文件,保存到本地,同时选择我的邮箱,记录邮箱密码,以备下一步使用,然后浏览到保存的路径,选择下一步,出现提示框时,选择是。输入上一步记录的密码,确定后完成。登录成功后,选择 文件 惯用选项1.3 系统安装软件检查1. 下载地址:
10、ftp:/10.41.210.1/OneTest/Soft/Right.xls2. 运行xls文件,选择启用此内容,单击确定按钮,如下图。3. 单击开始自检按钮4. 根据说明信息,清理违禁软件。2 代码相关2.1 代码下载1. 新建文件夹OneTest,存放下载的代码2. 在OneTest文件夹上单击右键,选择SVN Checkout3. 单击OK按钮,开始下载代码,注意URL of repository设置为4. 下载时间比较长,请耐心等待5. 使用VS2008打开E:OneTesttrunkSrcOneTest_CN000_ShareLibZTE.OneTest.SolutionZTE.O
11、neTest.Solution.sln下的解决方案,打开时弹出如下提示框,单击确定按钮即可。6. 编译项目、配置数据库等信息,请参照本文2.4章节内容。登陆时,用户名输入10075886,密码空2.2 相关权限申请SVN、PDM、EC相关权限申请联系人:邬洁00071907、刘金娇000757332.3 OneTest地址 2.4 编译整个项目2.4.1 数据库连接配置1. Oracle设置1) 修改文件内容F:oracleproduct10.2.0client_1NETWORKADMINtnsnames.oraORCL = (DESCRIPTION = (ADDRESS_LIST = (AD
12、DRESS = (PROTOCOL = TCP)(HOST = lenovo-46)(PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )OTDEV=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.67.8.12)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=OTDB)OTINTEGRATION=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.5.6.65)(POR
13、T=1521)(CONNECT_DATA=(SERVICE_NAME=OTDB)OTTEST=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.3.64.224)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=ONETEST)注意:l lenovo-46是本地计算机名称,必须是英文名。2. 项目设置1) 修改CommonLib.config文件注意:l 开发环境:http:/10.41.210.3:8080/pm/uiloader/index.htmll 其他环境:http:/10.67.8.12
14、:8080/pm2) 修改dao.config文件注意:每次修改完成后需要重新生成Web工程。3 学习文档确保整个项目编译通过后,就可以学习整个项目的程序结构和有关业务知识。可以考虑先从以下几个方面入手。3.1 了解整个项目涉及到的主要文档1、 代码文件 通过SVN下载2、 需求文档 通过PDM软件下载,也可以联系BA获取。3、 数据库设计文档(PD文档) 通过PDM软件下载,也可以联系项目组同事获取。4、 组件设计文档(ROSE文档) 通过PDM软件下载,也可以联系项目组同事获取。5、 其它培训类相关文档 通过SVN下载或者从项目组同事处获取。4 系统整体框架和主要技术点的学习4.1、Jqu
15、ery版本的zTree树zTree组件支持树的常用操作,包括:异步加载,操作节点、节点搜索等。详细方法和属性可参照zTree文档和demo。以下是一个完整的加载、展开节点、搜索节点的流程。示例:维护被测对象 引用文件TreeCommon.js FrmTestObjectTree.js树的参数配置如下:4.1.1、页面初始化完毕,开始加载树。请求参数prod_id=0,表示请求根节点中兴通讯的子节点4.1.2、服务器接收参数0,检索0下面的所有子节点,然后拼接成Json格式数据输出 Json格式如下,红色标记是必须要求:isParent:是否是父节点,iconSkin:节点图标样式prod_id
16、:”1”, name:”一级节点”, prod_parent_id:”0”,isParent:”true”, iconSkin:”,nodes:prod_id:”10”, name:”二级节点”, prod_parent_id:”0”,isParent:”true”, iconSkin:”,nodes: 输出到客户端后,回调reloadTree函数中注册的Success事件方法,生成树如下: 中兴通讯0| 一级节点1| 二级节点104.1.3、展开节点 1、 zTreeBeforeExpand /异步请求节点2、 zTree自动调用getUrl(treeNode) 组织URL以及参数,发送请求
17、3、 服务器接收参数,继续调用同样方法,组织Json并输出4、 zTreeAjaxSuccess /返回的节点会自动加入树,如有必要 做成功后回调处理4.1.4、点击节点:1、beforeClick: zTreeBeforeClick, 在点击前做一些判断或提示,从该事件引发具体操作下面代码意思:如果当前节点处于编辑状态,点击其它节点需要用户确认是否离开编辑切换到其它节点的查看状态。zTreeOnClick:查看节点信息。如果不是修改状态,点击节点将不进入zTreeBeforeClick的提示,直接调用该方法。ViewNode:查看节点具体应用。4.1.5、异步刷新节点zTree1.reAsy
18、ncChildNodes(treeNode, reloadType);常用于刷新treeNode的子节点 4.1.6、搜索节点asyncSearchNextNodeByKey() asyncSearchNodesByKey()过程: 1、在客户端输入关键字 并发送请求searchResultJson存储搜索关键字节点的路径信息,当为空时则请求服务器搜索,见1步骤截图第一个红色框代码,然后跳转至asyncSearchNodesByKey()方法2、服务器根据关键字查询并返回如0_10_100_1000的ID路径【集合】其中0表示根节点,10、100表示中间路径节点ID,1000表示匹配关键字的节
19、点ID3、客户端接收路径,分析ID路径 见1步骤第二幅截图 第二个红色框内该代码块意义:取路径中还没在客户端显示的节点ParentNode,然后再去服务器加载,如:0,10节点已显示在树上,如果要显示1000节点,则客户端会发送10_100_1000到服务端(见第三个红色框),查询出10、100所有的子节点,组织成树的JSon数据返回。并最终选择1000节点。4、搜索下一个asyncSearchNextNodeByKey方法遍历集合,重复1-3的操作。注意先序排序5 开发基础5.1、代码自动生成新功能需要创建表时,本系统持久层采用IBatis(SqlMap)框架,使用代码生成工具MyGener
20、ation生成访问类、实体类和配置文件,使用IT自主插件EasyDev通过Rose生成业务类。步骤如下:5.1.1、MyGeneration1、初始化配置2、双击模板文件:OneTest_数据库模板 V1.3.csgen3、点击运行Execut,弹出选择窗口4、点击OK,生成访问类,实体类,配置文件5.1.2、EasyDev1、选中要生成的文件,右键弹出菜单,点击“生成代码”2、弹出窗口。选择路径,点击“保存”3、生成访问类5.2、配置文件修改1、添加文件到对应目录文件名称对应工程/文件目录IOtTestDataServiceZTE.OneTest.TestDesign.IServiceOtT
21、estDataServiceZTE.OneTest.TestDesign.ServiceOtTestDataBLLZTE.OneTest.TestDesign.Service/TestDesignBLLIOtTestDataDaoZTE.OneTest.TestDesign.IDaoOtTestDataDaoZTE.OneTest.TestDesign.DaoOtTestDataExpandZTE.OneTest.Common.ModelOtTestData.csZTE.OneTest.Common.ModelOtTestData.xmlWebMaps2、添加配置节点5.3、代码规范5.3.1
22、、编码规范总体代码规范参见如下目录:5.3.2、修改记录修改记录要包含文件头部修改记录,代码处修改记录,文件头部修改记录倒序排列。示例如下:另外,需要主要的是在版本开发和测试过程中,提交SVN,日志格式为:变更活动号+变更描述(包含但不限于这两项),示例如下:5.4、脚本提交5.4.1、脚本编写脚本必须写成可重复执行的脚本。分两种情况:1、新建表、添加表记录、添加或者修改字段、添加索引等都需要判断是否存在数据库对象,不存在则添加。举例如下:2、添加或修改视图、存储过程、函数等默认可重复执行的文件可直接通过数据库客户端工具(如PL/SQL)打开后保存。注意:1、存储过程包需同时包含包头和包体;2
23、、视图脚本最后要加“/“。5.4.2、脚本位置1. 每个版本都有一个单独的以版本名称命名的汇总脚本文件,位于如下目录:2、修改或者新建的脚本根据所属的模块统一添加到对应的目录下,并将文件相对地址添加到上一步的汇总脚本中。注意:需要保证汇总文件在命令窗口顺利执行。6 存储过程的学习6.1 、数据库内置函数(1).Decode 函数含义解释:decode(条件,值1,翻译值1,值2,翻译值2,.值n,翻译值n,缺省值)该函数的含义如下: IF 条件=值1 THEN Return (翻译值1) ELSIF 条件=值2 THEN Return (翻译值2) . ELSIF 条件=值n THEN Ret
24、urn (翻译值n) ELSE Return (缺省值) END IF例子Select * from ot_test_case where decode(status,3,1,0)0与Select * from ot_test_case where case status when 3 then 1 else 0 end 0 等效。(2) NVL函数含义解释:NVL(eExpression1, eExpression2)该函数的含义如下: IF eExpression1 IS NOT NULL THEN Return (eExpression1) ELSE Return (eExpressio
25、n2) END IF例子Select nvl(t.preset_condition,无预置条件) from ot_test_case t与select decode(t.preset_condition, null,无预置条件,t.preset_condition) from ot_test_case t等效(3) 树形结构的递归查询函数Oracle中Connect By 子句对在关系表上表现层次关系提供了方便。使用Connect by 子句需要在表中定义两个字段,一个是父节点字段(如:parent_id),一个是节点字段(如:line_id)。其中节点字段一般来说是主键。例子说明:SELEC
26、T * FROM PRD_PRODUNIT_DIC T WHERE 1 = 1 START WITH ITEM_LEVEL = 2CONNECT BY PRIOR LINE_ID = PARENT_ID ORDER BY 1 DESC, T.CN_NAME ASC说明:其中CONNECT BY 定义父子连接关系START WITH 定义开始节点,这个子句可以省略,表示自动将全部节点展开备注:本项目的例子如下:(4) 树形结构中递归查询的字段值连接函数sys_connect_by_path含义解释:将查询结果从开始节点到本节点的某个字段值用某个字符连接起来,常用来获取树形节点的路径。select
27、 sys_connect_by_path(k.fold_name,-) FOLD_NAME, sys_connect_by_path(k.objectid,-) FOLD_DESC from (select b.serial_id folderid, a.serial_id objectid, b.fold_name, a.parent_id parentid, a.test_object_id testid, a.org_id orgid from ot_object_connection a, ot_test_folder b where a.test_object_id = 1963 a
28、nd a.org_id = 101 and b.test_object_id = 1963 and b.org_id = 101 and a.object_id = b.serial_id AND a.OBJECT_TYPE = 1 AND a.CONNECTION_TYPE = 3 AND b.FOLD_TYPE = 2 and a.enabled_flag = 1 and b.enabled_flag = 1 ) k start with k.testid = 1963 and k.orgid = 101 and k.parentid= 646916 connect by PRIOR k.
29、objectid = k.parentid(集成环境)(5)时间加减由于oracle没有专门的类似于ADD_DAYS(),ADD_HOURS(),ADD_MINUTES(),ADD_SECONDS()函数,所以我们一般采用如下的方式来实现类似的效果如果当前时间是: 2012/1/13 17:43:21执行: select sysdate + 1 from dual;结果为: 2012/1/14 17:43:21;执行: select sysdate + 1/24 from dual;结果为: 2012/1/13 18:43:21;执行: select sysdate + 1/24/60 fro
30、m dual;结果为: 2012/1/13 17:44:21;执行: select sysdate + 1/24/60/60 from dual;结果为: 2012/1/13 17:43:22;(6)其它函数的用法参考:Oracle常用SQL函数.doc6.2 、项目内置函数字符串拆分函数(1) function split_str(var_str in varchar2, var_split in varchar2) return t_ret_table;将指定字符串按照指定字符拆分成一个嵌套表格式的集合,是行列转换的一种形式如果执行 split_str(1,2,3,4,)那么结果为:1 2
31、 3 4(2) OT_TEST_CASE_PKG.fn_split(pi_str In Varchar2, pi_separator In Varchar2)RETURN t_Array;注意:如果存储过程里面要调用这两个函数,那么输入参数一定要控制在2000个字节以内(含2000)判断集合中是否含有某个元素元素OT_TRACE_RELATION_PKG.function IF_HAVE_VALUE_BY_ARRY_F(var_array in t_ret_table, strvalue in varchar2) return Boolean6.3、关于性能等问题的注意事项1. 由于递归查询性
32、能较慢,所以慎用树形结构的递归查询,特别在循环里面一般不采用;2. 树形结构的递归查询时尽量把要递归的数据范围缩小后再递归;3. 在对表查询或多表连接查询时尽量使用索引字段作为查询条件之一;4. 要注意索引字段在有些情况下会失效a.如果是组合索引,那么第一个字段必须出现在查询条件里,否则索引失效,所以我们一般的查询条件都要加上test_object_id和org_id作为查询条件b.在索引字段上使用函数会使索引失效c.在索引字段上计算会使索引失效d.如果查询出的结果数据量过大会使索引失效5.能用union all 不要使用 union6.注意exists与in,not exists 与 not
33、 in 的性能差异7. distinct,order by 会影响性能8.存储过程里面必须要写COMMIT才能提交6.4 、项目内部约定1. 包与存储过程必须在数据库设计模型里面体现并且一致2. 尽量每个最外层的存储过程都捕获异常并记录日志3. 在SQL语句中用例、特性的编号、名称不区分大小写模糊查询时,先转化为大写再比较,因为这个是函数索引4. 由于每个表都有最后更新人与更新时间这两个字段,所以如果对表进行更新操作的时候这两个字段的字也要记录下来5. 项目里面的删除操作都是逻辑删除不能用DELETE语句,要用UPDATE语句更新ENABLED_FLAG, LAST_UPDATED_DATE,
34、LAST_UPDATED_BY6. 存储过程头部注释格式如下: /*+=+ 名 称:BORROW_CASE_P 内容摘要:借用测试用例主体存储过程 调 用:FUNCTION OT_TEST_BORROW_PKG.GET_CASE_ID_BY_FOLDER_F FUNCTION OT_TEST_BORROW_PKG.IF_CASE_EXISTS_F FUNCTION OT_TEST_BORROW_PKG.CHECK_CASE_NAME_F FUNCTION OT_TRACE_RELATION_PKG.IF_HAVE_VALUE_BY_ARRY_F PROCEDURE OT_TEST_BORROW
35、_CASE_PKG.ADD_FOLDER_CASE_P PROCEDURE OT_TEST_BORROW_PKG.ADD_CASE_BY_BORROW_P PROCEDURE OT_TEST_BORROW_PKG.DELETE_NULL_FOLDER_P PROCEDURE OT_TEST_BORROW_ENVIRONMENT_PKG.BORROW_ENVIRONMENT_P 被调用 :无 创建者 :周佾梅 创建时间:2011-8-24 被访问表:OT_OBJECT_CONNECTION,OT_TEST_FOLDER,OT_TEST_CASE,OT_TEST_ENVIRONMENT 被更新表:
36、无 输 入:输入参数说明,包括每个参数的作用、取值说明及参数间关系。 P_TARGET_FOLDER_ID 目标文件夹的ID P_TARGET_TEST_OBJECT_ID 目标被测对象id P_TARGET_ORG_ID 目标被测对象组织id P_SOURCE_CASE_ID_ARRAY 用户勾选的用例id串 P_SOURCE_FOLDER_ARRAY 用户勾选的文件夹id串 P_SOURCE_TEST_OBJECT_ID 源被测对象id P_SOURCE_ORG_ID 源被测对象组织id P_LAST_UPDATE_DATE 最后更新时间 P_LAST_UPDATE_BY 最后更新人 P_
37、IF_BORROW_LOWER 是否借用下游测试环境 输 出:参数输出有3种情况: 1.如果用户选择的用例都不符合可以借用的业务规则,返回没有可借用的测试用例,请重新选择! 2.如果有借用成功的测试用例,返回借用测试用例成功,及错误详细信息 3.如果存储过程异常,返回空 返回值 :P_MESSAGE 其 它:无 +=+*/7. 存储过程的参数命名或内部的变量名尽量与表中的字段名字有所区别8. SQL语句或存储过程,函数等的编写尽量做到字母大小写统一9. 如果存储过程的逻辑比较复杂,要考虑是否可以拆分成多个子函数或过程,同时考虑代码的复用性。7 关于PMS任务填报OneTest的项目成员,每周都有PMS任务,关于PMS任务的一些注意点,请参照下面几点。7.1 任务下达后,及时反馈,如有疑问,请及时与任务指派人沟通7.2 请填写PMS任务的时候,确保任务实际工作量与计划工作量一致;7.3 任务填写务必规范,相关文档请参考