一说工具,所有人都自然而然的联想到自动化测试,其实不尽然  (写这文档,写完后,没提交成功,原来我断网了,害得我重写,运气真是差,一晚上3个多小时,全花在这文档上了)
      测试过程中,不是所有工具,都用于自动化测试,不过他属于自动化测试体系持续集成过程中的一小步。在测试的过程中,不管是自动化,还是手工测试,一系列 工具的应用将大大提高测试效率,试想一下,如果您在几年的测试工作中,形成了一个由一堆小工具组成的百宝箱 ,也许这些小工具,在以后的某个项目中,不能直接拿来就用,但我相信在这众多工具的使用中,内在的东西会为你以后的工作左右缝源。

          上面啰嗦这么多,我们来看一个下面的场景下,我的做法,相信类似的场景你也会碰到,且听我慢慢道来
在MYPM的不断升级中,我们需要不断的发布补丁,如果只是修改个别BUG,补丁所涉及到的要更新的文件不会很多,手动写脚本来更新,也不要多长时间,但 是如果是一个里程碑的新版本发布,更新的文件都会上100,写脚本也是很麻烦的事且容易出错。

    先来看,我们以前打补丁的方法,先和SVN同步,看哪些文件,要提交,然后把这些文件都拷出来,同时记下,这文件在MYPM部署后的所在目录,然后写脚本 去替换他,如替换时所在目录不存在,还要新建,以前MYPM免费版打补丁我都是手写,这次商业版,变更的文件太多,没办法手写;另外从成本角来说,要是只 有几个文件发生变更,写工具类就不合算。也许你会说,让用户装一个新版本就行了,是项目还行,我们是产品,让每一个客户去升级安装是很麻烦的事,我们宁愿麻烦我们,也不愿麻烦客户。

    在看我下面的实现之前,我们可以总结出这样的结论经,只是要有规律的东西,在成本合算的前提下都可以用工具来实现,做到一次编写N次使用;同样也适用于软件测试特别是在数据驱动的测试中
    我们来看一下一个linux下的MYPM补丁脚本片段
#!/bin/sh
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes
cp -f ./button.properties /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/button.properties
echo 1 replace  button.properties success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/resource/webwork
cp -f ./testTaskManager.xml /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/resource/webwork/testTaskManager.xml
echo 2 replace  testTaskManager.xml success
mkdir -p /home/mypmcc/sfckMypm/mypm203/gantt
cp -f ./jsgantt.css /home/mypmcc/sfckMypm/mypm203/gantt/jsgantt.css

这次我们升级时,更新的文件有110个,每个文件要3行脚本,一共要写330行本,这是个功夫活
我是懒人,这活是有规律可行的功夫活,我们完全可以把上面的两个步骤((1)找到哪些文件更新了,(2)把这些文件通过编写脚本去更新客户的mypm),用工具去实现

   首先我们写了一个工具类,类名就叫chgChkTool,我们叫他变更检查工具,他的工作就是遍历,MYPM工程下所有文件,给他传入两个参数:一个是 上次打补丁的时间,另一个是MYPM安装目录,检查文件有没有更新时,拿这个时间来作对比。然后生成下面包含这个列表的chgFileList.txt文 件
mypmHome=/home/mypmcc/sfckMypm/mypm203
#配置文件
/src/button.properties
/src/resource/webwork/testTaskManager.xml
#公共JSP JS文件
/WebRoot/gantt/jsgantt.css
/WebRoot/gantt/jsgantt.js
/WebRoot/js/commonFunction_botm.js
/WebRoot/js/globalVariable.js
/WebRoot/jsp/analysisManager/analysisMain.jsp
......省去若干不一一列出,省得在这里占篇副
#测试需求管理
/WebRoot/jsp/outlineManager/contextMenu.js
/WebRoot/jsp/outlineManager/functionList.jsp
WebRoot/jsp/outlineManager/outLineBase.js
......省去若干不一一列出,省得在这里占篇副
#测试用例管理
/WebRoot/jsp/caseManager/batchAuditInitList.js
/WebRoot/jsp/caseManager/batchAuditList.jsp
/WebRoot/jsp/caseManager/caseBase.js
......省去若干
#BUG管理
/WebRoot/jsp/bugManager/assignPersion.js
/WebRoot/jsp/bugManager/baseFuncn.js
/WebRoot/jsp/bugManager/batchAssignBugList.jsp
/WebRoot/jsp/bugManager/batchBase.js
......省去若干不一一列出,省得在这里占篇副
#java 类文件
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl.class
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$1.class
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$2.class
/src/cn/com/mypm/outlineManager/service/OutLineManagerService.class
......省去若干不一一列出,省得在这里占篇副

下面是从chgFileList.txt生成脚本文件的GenePatchSrcTool 代码片段
    public void writeScrpt(){
        //读取变更清单文件
        String fileName = getClass().getResource("/chgFileList.txt").toString();
        fileName = fileName.substring(6, fileName.length());
         //获取脚本文件目录,目录为变更清单文件目录下子目录,子目录为 patchs加当前日期
        String scriptFilePath = fileName.replaceAll("chgFileList.txt", "patchs"+StringUtils.formatShortDate(new Date())+".bat");
        scriptFilePath = scriptFilePath.substring(0,scriptFilePath.lastIndexOf("/"));
        File scriptFile = new File(new File(scriptFilePath),"patchs"+StringUtils.formatShortDate(new Date())+".bat");
        StringBuffer scriptSb = new StringBuffer("#!/bin/sh \n");
        OutputStreamWriter scriptFileWrite = null;
        String mypmHome = "";
        String filePatch = "";
        String currDir = "";
        String currFileName = "";
        try {
            InputStreamReader read = new InputStreamReader(new FileInputStream(  fileName), "UTF-8");
            BufferedReader reader = new BufferedReader(read);
            String line;
            int i =1;
            //循环读取chgFileList每一行,然后生成该文件所在目录,拷贝该文件,打出拷贝成功提示的脚本
            while ((line = reader.readLine()) != null) {
                if (!(line.trim()).startsWith("#") && !"".equals(line)) {
                    if(line.indexOf("mypmHome=")>0){  //含"mypmHome= 为MYPM安装目录
                        mypmHome = line.split("=")[1];
                    }else{
                        if(line.startsWith("/src")){以src打头,为类或配置文件 把SRC换为mypmHome+"/WEB-INF/classes"
                            filePatch = line.replaceFirst("/src", mypmHome+"/WEB-INF/classes");                           
                            currDir = filePatch.substring(0,filePatch.lastIndexOf("/"));
                            currFileName = filePatch.substring(filePatch.lastIndexOf("/")+1);
                             //生成创建目录脚本
                            scriptSb.append("mkdir  " +currDir +" \n");
                            //生成拷贝文件脚本
                            scriptSb.append("copy " +currFileName +" "+filePatch +" /y \n");
                            //打出拷贝第i个文件成功提示
                            scriptSb.append("echo " +i +" replace  " +currFileName +" success \n");
                        }else if(line.startsWith("/WebRoot")){ //以/WebRoot"打头,为JSP 或JS、
                         //CSS在页面文件  直接换mypmHome
                            filePatch = line.replaceFirst("/WebRoot", mypmHome);
                            currDir = filePatch.substring(0,filePatch.lastIndexOf("/"));
                            currFileName = filePatch.substring(filePatch.lastIndexOf("/")+1);
                            scriptSb.append("mkdir  " +currDir +" \n");
                            scriptSb.append("cp " +currFileName +" "+filePatch +" /y \n");
                            scriptSb.append("echo " +i +" replace  " +currFileName +" success \n");
                        }
                        i++;
                    }
                }
            }
            read.close();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }  
        try {
            //把缓存中的脚本写到文件中
            scriptFileWrite = new OutputStreamWriter(new FileOutputStream(scriptFile), "utf-8");
            scriptFileWrite.write(scriptSb.toString());
        } catch (UnsupportedEncodingException e) {         
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {           
            e.printStackTrace();
        }finally{
            if(scriptFileWrite!=null)
                try {
                    scriptFileWrite.close();
                } catch (IOException e) {                  
                    e.printStackTrace();
                }
        }
    }

下面我们来看一下,用这两个工具类生成的东东

chgChkTool 生成的 chgFileList.txt

mypmHome=/home/mypmcc/sfckMypm/mypm203
/src/button.properties
/src/resource/webwork/testTaskManager.xml
#JSP JS\u6587\u4ef6
/WebRoot/gantt/jsgantt.css
/WebRoot/gantt/jsgantt.js
/WebRoot/js/commonFunction_botm.js
/WebRoot/js/globalVariable.js
/WebRoot/jsp/analysisManager/analysisMain.jsp
/WebRoot/jsp/aboutMypm.jsp
/WebRoot/jsp/userManager/login.js
/WebRoot/jsp/userManager/login4Ce.js
/WebRoot/jsp/userManager/userList.jsp
/WebRoot/jsp/userManager/userManger.js
/WebRoot/jsp/taskManager/taskList.js
/WebRoot/jsp/singleTestTaskManager/flwSetList.js
/WebRoot/jsp/singleTestTaskManager/flwSetList.jsp
/WebRoot/jsp/singleTestTaskManager/swTestTaskList.js
/WebRoot/jsp/rolemanager/roleList.jsp
/WebRoot/jsp/common/main.js
/WebRoot/jsp/common/pageRefresher.jsp
/WebRoot/jsp/common/refresh.jsp
#\u6d4b\u8bd5\u5927\u521a
/WebRoot/jsp/outlineManager/contextMenu.js
/WebRoot/jsp/outlineManager/functionList.jsp
WebRoot/jsp/outlineManager/outLineBase.js
/WebRoot/jsp/outlineManager/outlineTree.jsp
/WebRoot/jsp/outlineManager/outTree.js
/WebRoot/jsp/outlineManager/testRequirementMain.jsp
#\u6d4b\u8bd5\u7528\u4f8b
/WebRoot/jsp/caseManager/batchAuditInitList.js
/WebRoot/jsp/caseManager/batchAuditList.jsp
/WebRoot/jsp/caseManager/caseBase.js
/WebRoot/jsp/caseManager/caseBatchBase.js
/WebRoot/jsp/caseManager/caseBoard.jsp
/WebRoot/jsp/caseManager/caseHistory.jsp
/WebRoot/jsp/caseManager/caseInitList.js
/WebRoot/jsp/caseManager/caseList.jsp
/WebRoot/jsp/caseManager/caseMgrMain.jsp
/WebRoot/jsp/caseManager/caseTree.js
/WebRoot/jsp/caseManager/caseTree.jsp
/WebRoot/jsp/caseManager/exeHistory.js
/WebRoot/jsp/caseManager/exeHistory.jsp
/WebRoot/jsp/caseManager/lastExeCase.js
/WebRoot/jsp/caseManager/lastExeCase.jsp
#BUG\u7ba1\u7406
/WebRoot/jsp/bugManager/assignPersion.js
/WebRoot/jsp/bugManager/baseFuncn.js
/WebRoot/jsp/bugManager/batchAssignBugList.jsp
/WebRoot/jsp/bugManager/batchBase.js
/WebRoot/jsp/bugManager/batchGrid.js
/WebRoot/jsp/bugManager/broMsg.js
/WebRoot/jsp/bugManager/bugBoard.jsp
/WebRoot/jsp/bugManager/bugHandling.js
/WebRoot/jsp/bugManager/bugMgrLeftTre.js
/WebRoot/jsp/bugManager/bugMgrLeftTre.jsp
/WebRoot/jsp/bugManager/bugMgrMain.jsp
/WebRoot/jsp/bugManager/bugMgrRight.js
/WebRoot/jsp/bugManager/bugMgrRight.jsp
/WebRoot/jsp/bugManager/bugMsgList.jsp
/WebRoot/jsp/bugManager/bugTree.js
/WebRoot/jsp/bugManager/bugTree.jsp
/WebRoot/jsp/bugManager/detail.jsp
/WebRoot/jsp/bugManager/edit.js
/WebRoot/jsp/bugManager/editBug.jsp
/WebRoot/jsp/bugManager/flowCtrl.js
/WebRoot/jsp/bugManager/grid.js
/WebRoot/jsp/bugManager/handBug.jsp
/WebRoot/jsp/bugManager/history.js
/WebRoot/jsp/bugManager/myAllBugbaseFuncn.js
/WebRoot/jsp/bugManager/myAllBugList.jsp
/WebRoot/jsp/bugManager/myBugList.jsp
/WebRoot/jsp/bugManager/relaBug.js
/WebRoot/jsp/bugManager/relaBugList.jsp
/WebRoot/jsp/bugManager/relaCase.js
/WebRoot/jsp/bugManager/relaCaseList.jsp
/WebRoot/jsp/bugManager/window.js
#\u7c7b\u6587\u4ef6
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl.class
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$1.class
/src/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$2.class
/src/cn/com/mypm/outlineManager/service/OutLineManagerService.class
/src/cn/com/mypm/outlineManager/service/impl/OutLineManagerServiceImpl.class
/src/cn/com/mypm/outlineManager/dto/OutLineManagerDto.class
/src/cn/com/mypm/outlineManager/blh/OutLineManagerBlh.class
/src/cn/com/mypm/object/mapping/OutlineInfo.hbm.xml
/src/cn/com/mypm/object/mapping/BugBaseInfo.hbm.xml
/src/cn/com/mypm/object/BugBaseInfo.class
/src/cn/com/mypm/object/OutlineInfo.class
/src/cn/com/mypm/object/TestCaseInfo.class
/src/cn/com/mypm/object/TestResult.class
/src/cn/com/mypm/impExpManager/service/ImpExpManagerService.class
/src/cn/com/mypm/impExpManager/service/impl/ImpExpManagerServiceImpl.class
/src/cn/com/mypm/impExpManager/dto/ExpBugInfo.class
/src/cn/com/mypm/impExpManager/blh/BugImpExpBlh.class
/src/cn/com/mypm/impExpManager/blh/BugImpExpBlh$1.class
/src/cn/com/mypm/impExpManager/blh/CaseImpExpBlh.class
/src/cn/com/mypm/impExpManager/blh/CaseImpExpBlh$1.class
/src/cn/com/mypm/framework/security/MenuServlet.class
/src/cn/com/mypm/common/blh/CommonBlh.class
/src/cn/com/mypm/caseManager/service/CaseManagerService.class
/src/cn/com/mypm/caseManager/service/impl/CaseManagerServiceImpl.class
/src/cn/com/mypm/caseManager/blh/CaseManagerBlh.class
/src/cn/com/mypm/bugManager/service/impl/BugManagerServiceImpl.class
/src/cn/com/mypm/bugManager/service/impl/BugCommonServiceImpl.class
/src/cn/com/mypm/bugManager/blh/RelaCaseBlh.class
/src/cn/com/mypm/bugManager/blh/BugManagerBlh.class
/src/cn/com/mypm/bugManager/blh/BugFlowControlBlh.class
/src/cn/com/mypm/bugManager/blh/BugFlowControlBlh$ListObjectComparator.class

3.GenePatchSrcTool 生成的补丁脚本内容

#!/bin/sh

mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes
cp -f ./button.properties /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/button.properties
echo 1 replace  button.properties success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/resource/webwork
cp -f ./testTaskManager.xml /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/resource/webwork/testTaskManager.xml
echo 2 replace  testTaskManager.xml success
mkdir -p /home/mypmcc/sfckMypm/mypm203/gantt
cp -f ./jsgantt.css /home/mypmcc/sfckMypm/mypm203/gantt/jsgantt.css
echo 3 replace  jsgantt.css success
mkdir -p /home/mypmcc/sfckMypm/mypm203/gantt
cp -f ./jsgantt.js /home/mypmcc/sfckMypm/mypm203/gantt/jsgantt.js
echo 4 replace  jsgantt.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/js
cp -f ./commonFunction_botm.js /home/mypmcc/sfckMypm/mypm203/js/commonFunction_botm.js
echo 5 replace  commonFunction_botm.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/js
cp -f ./globalVariable.js /home/mypmcc/sfckMypm/mypm203/js/globalVariable.js
echo 6 replace  globalVariable.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/analysisManager
cp -f ./analysisMain.jsp /home/mypmcc/sfckMypm/mypm203/jsp/analysisManager/analysisMain.jsp
echo 7 replace  analysisMain.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp
cp -f ./aboutMypm.jsp /home/mypmcc/sfckMypm/mypm203/jsp/aboutMypm.jsp
echo 8 replace  aboutMypm.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/userManager
cp -f ./login.js /home/mypmcc/sfckMypm/mypm203/jsp/userManager/login.js
echo 9 replace  login.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/userManager
cp -f ./login4Ce.js /home/mypmcc/sfckMypm/mypm203/jsp/userManager/login4Ce.js
echo 10 replace  login4Ce.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/userManager
cp -f ./userList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/userManager/userList.jsp
echo 11 replace  userList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/userManager
cp -f ./userManger.js /home/mypmcc/sfckMypm/mypm203/jsp/userManager/userManger.js
echo 12 replace  userManger.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/taskManager
cp -f ./taskList.js /home/mypmcc/sfckMypm/mypm203/jsp/taskManager/taskList.js
echo 13 replace  taskList.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager
cp -f ./flwSetList.js /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager/flwSetList.js
echo 14 replace  flwSetList.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager
cp -f ./flwSetList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager/flwSetList.jsp
echo 15 replace  flwSetList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager
cp -f ./swTestTaskList.js /home/mypmcc/sfckMypm/mypm203/jsp/singleTestTaskManager/swTestTaskList.js
echo 16 replace  swTestTaskList.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/rolemanager
cp -f ./roleList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/rolemanager/roleList.jsp
echo 17 replace  roleList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/common
cp -f ./main.js /home/mypmcc/sfckMypm/mypm203/jsp/common/main.js
echo 18 replace  main.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/common
cp -f ./pageRefresher.jsp /home/mypmcc/sfckMypm/mypm203/jsp/common/pageRefresher.jsp
echo 19 replace  pageRefresher.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/common
cp -f ./refresh.jsp /home/mypmcc/sfckMypm/mypm203/jsp/common/refresh.jsp
echo 20 replace  refresh.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager
cp -f ./contextMenu.js /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager/contextMenu.js
echo 21 replace  contextMenu.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager
cp -f ./functionList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager/functionList.jsp
echo 22 replace  functionList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager
cp -f ./outlineTree.jsp /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager/outlineTree.jsp
echo 24 replace  outlineTree.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager
cp -f ./outTree.js /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager/outTree.js
echo 25 replace  outTree.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager
cp -f ./testRequirementMain.jsp /home/mypmcc/sfckMypm/mypm203/jsp/outlineManager/testRequirementMain.jsp
echo 26 replace  testRequirementMain.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./batchAuditInitList.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/batchAuditInitList.js
echo 27 replace  batchAuditInitList.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./batchAuditList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/batchAuditList.jsp
echo 28 replace  batchAuditList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseBase.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseBase.js
echo 29 replace  caseBase.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseBatchBase.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseBatchBase.js
echo 30 replace  caseBatchBase.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseBoard.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseBoard.jsp
echo 31 replace  caseBoard.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseHistory.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseHistory.jsp
echo 32 replace  caseHistory.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseInitList.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseInitList.js
echo 33 replace  caseInitList.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseList.jsp
echo 34 replace  caseList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseMgrMain.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseMgrMain.jsp
echo 35 replace  caseMgrMain.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseTree.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseTree.js
echo 36 replace  caseTree.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./caseTree.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/caseTree.jsp
echo 37 replace  caseTree.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./exeHistory.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/exeHistory.js
echo 38 replace  exeHistory.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./exeHistory.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/exeHistory.jsp
echo 39 replace  exeHistory.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./lastExeCase.js /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/lastExeCase.js
echo 40 replace  lastExeCase.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/caseManager
cp -f ./lastExeCase.jsp /home/mypmcc/sfckMypm/mypm203/jsp/caseManager/lastExeCase.jsp
echo 41 replace  lastExeCase.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./assignPersion.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/assignPersion.js
echo 42 replace  assignPersion.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./baseFuncn.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/baseFuncn.js
echo 43 replace  baseFuncn.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./batchAssignBugList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/batchAssignBugList.jsp
echo 44 replace  batchAssignBugList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./batchBase.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/batchBase.js
echo 45 replace  batchBase.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./batchGrid.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/batchGrid.js
echo 46 replace  batchGrid.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./broMsg.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/broMsg.js
echo 47 replace  broMsg.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugBoard.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugBoard.jsp
echo 48 replace  bugBoard.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugHandling.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugHandling.js
echo 49 replace  bugHandling.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMgrLeftTre.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMgrLeftTre.js
echo 50 replace  bugMgrLeftTre.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMgrLeftTre.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMgrLeftTre.jsp
echo 51 replace  bugMgrLeftTre.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMgrMain.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMgrMain.jsp
echo 52 replace  bugMgrMain.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMgrRight.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMgrRight.js
echo 53 replace  bugMgrRight.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMgrRight.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMgrRight.jsp
echo 54 replace  bugMgrRight.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugMsgList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugMsgList.jsp
echo 55 replace  bugMsgList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugTree.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugTree.js
echo 56 replace  bugTree.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./bugTree.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/bugTree.jsp
echo 57 replace  bugTree.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./detail.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/detail.jsp
echo 58 replace  detail.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./edit.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/edit.js
echo 59 replace  edit.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./editBug.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/editBug.jsp
echo 60 replace  editBug.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./flowCtrl.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/flowCtrl.js
echo 61 replace  flowCtrl.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./grid.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/grid.js
echo 62 replace  grid.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./handBug.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/handBug.jsp
echo 63 replace  handBug.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./history.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/history.js
echo 64 replace  history.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./myAllBugbaseFuncn.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/myAllBugbaseFuncn.js
echo 65 replace  myAllBugbaseFuncn.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./myAllBugList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/myAllBugList.jsp
echo 66 replace  myAllBugList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./myBugList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/myBugList.jsp
echo 67 replace  myBugList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./relaBug.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/relaBug.js
echo 68 replace  relaBug.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./relaBugList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/relaBugList.jsp
echo 69 replace  relaBugList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./relaCase.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/relaCase.js
echo 70 replace  relaCase.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./relaCaseList.jsp /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/relaCaseList.jsp
echo 71 replace  relaCaseList.jsp success
mkdir -p /home/mypmcc/sfckMypm/mypm203/jsp/bugManager
cp -f ./window.js /home/mypmcc/sfckMypm/mypm203/jsp/bugManager/window.js
echo 72 replace  window.js success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl
cp -f ./TestTaskDetailServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl.class
echo 73 replace  TestTaskDetailServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl
cp -f ./TestTaskDetailServiceImpl$1.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$1.class
echo 74 replace  TestTaskDetailServiceImpl$1.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl
cp -f ./TestTaskDetailServiceImpl$2.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/testTaskManager/service/impl/TestTaskDetailServiceImpl$2.class
echo 75 replace  TestTaskDetailServiceImpl$2.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/service
cp -f ./OutLineManagerService.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/service/OutLineManagerService.class
echo 76 replace  OutLineManagerService.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/service/impl
cp -f ./OutLineManagerServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/service/impl/OutLineManagerServiceImpl.class
echo 77 replace  OutLineManagerServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/dto
cp -f ./OutLineManagerDto.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/dto/OutLineManagerDto.class
echo 78 replace  OutLineManagerDto.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/blh
cp -f ./OutLineManagerBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/outlineManager/blh/OutLineManagerBlh.class
echo 79 replace  OutLineManagerBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/mapping
cp -f ./OutlineInfo.hbm.xml /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/mapping/OutlineInfo.hbm.xml
echo 80 replace  OutlineInfo.hbm.xml success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/mapping
cp -f ./BugBaseInfo.hbm.xml /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/mapping/BugBaseInfo.hbm.xml
echo 81 replace  BugBaseInfo.hbm.xml success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object
cp -f ./BugBaseInfo.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/BugBaseInfo.class
echo 82 replace  BugBaseInfo.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object
cp -f ./OutlineInfo.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/OutlineInfo.class
echo 83 replace  OutlineInfo.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object
cp -f ./TestCaseInfo.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/TestCaseInfo.class
echo 84 replace  TestCaseInfo.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object
cp -f ./TestResult.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/object/TestResult.class
echo 85 replace  TestResult.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/service
cp -f ./ImpExpManagerService.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/service/ImpExpManagerService.class
echo 86 replace  ImpExpManagerService.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/service/impl
cp -f ./ImpExpManagerServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/service/impl/ImpExpManagerServiceImpl.class
echo 87 replace  ImpExpManagerServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/dto
cp -f ./ExpBugInfo.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/dto/ExpBugInfo.class
echo 88 replace  ExpBugInfo.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh
cp -f ./BugImpExpBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh/BugImpExpBlh.class
echo 89 replace  BugImpExpBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh
cp -f ./BugImpExpBlh$1.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh/BugImpExpBlh$1.class
echo 90 replace  BugImpExpBlh$1.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh
cp -f ./CaseImpExpBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh/CaseImpExpBlh.class
echo 91 replace  CaseImpExpBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh
cp -f ./CaseImpExpBlh$1.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/impExpManager/blh/CaseImpExpBlh$1.class
echo 92 replace  CaseImpExpBlh$1.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/framework/security
cp -f ./MenuServlet.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/framework/security/MenuServlet.class
echo 93 replace  MenuServlet.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/common/blh
cp -f ./CommonBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/common/blh/CommonBlh.class
echo 94 replace  CommonBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/service
cp -f ./CaseManagerService.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/service/CaseManagerService.class
echo 95 replace  CaseManagerService.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/service/impl
cp -f ./CaseManagerServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/service/impl/CaseManagerServiceImpl.class
echo 96 replace  CaseManagerServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/blh
cp -f ./CaseManagerBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/caseManager/blh/CaseManagerBlh.class
echo 97 replace  CaseManagerBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/service/impl
cp -f ./BugManagerServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/service/impl/BugManagerServiceImpl.class
echo 98 replace  BugManagerServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/service/impl
cp -f ./BugCommonServiceImpl.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/service/impl/BugCommonServiceImpl.class
echo 99 replace  BugCommonServiceImpl.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh
cp -f ./RelaCaseBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh/RelaCaseBlh.class
echo 100 replace  RelaCaseBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh
cp -f ./BugManagerBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh/BugManagerBlh.class
echo 101 replace  BugManagerBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh
cp -f ./BugFlowControlBlh.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh/BugFlowControlBlh.class
echo 102 replace  BugFlowControlBlh.class success
mkdir -p /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh
cp -f ./BugFlowControlBlh$ListObjectComparator.class /home/mypmcc/sfckMypm/mypm203/WEB-INF/classes/cn/com/mypm/bugManager/blh/BugFlowControlBlh$ListObjectComparator.class
echo 103 replace  BugFlowControlBlh$ListObjectComparator.class success

分类:

技术点:

相关文章: