声明:本空间的内容不全部是原创,如有雷同只为学习与借鉴之方便,别无它意,来者是朋友,愿通过此平台结交天下测试达狼!

发布新日志

  • 【转】自动化框架搭建

    2012-10-12 11:32:05

    说起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测试工程师往往在实现过程中花费了很多成本、精力,而最终以失败告终。 失败的原因会很多,我总结几项:

    1.    太过依赖测试工具,高估了工具的力量,最终会以失望告终。

    2.     项目紧急的情况,为了规避那些多余的环节,干脆人工测试,结果整个链路中断。

    3.     研发和测试人员不能很好的交互,如果这两个角色之间有了一道防火墙,那别说自动化测试了,手工测试也不会有好的效果。测试人员可以把研发想象成自己的女朋友, 努力培养相互之间的感情。

    4.     自动化测试人员实力被低估而导致的情绪低落,这个问题在所有岗位上都会发生,当然要看领导重视程度了。

    5.     资源不够,公司不舍得资源投入,或者蹑手蹑脚,那就不要浪费时间了。

    6.     太高的期望,过低的回报。

    现在国内没有几家公司说能玩转自动化测试的,在看国外那些耳熟能详的企业像google ,Microsoft ,它们反而搞得热火朝天的。可笑的是在微软中国的测试部门工作过几年的测试经理,出来搞个什么《微软自动化测试体系最佳实践课程》,就能忽悠国内的那些知名的企业掏钱去听,我这也不是说他们的东西不好, 只是希望我们自己也能够重视起来,要知道人家“卓越”体系也是由那些“专业团队”花了很多的时间和精力才搭建起来的,所以先不说收益如何,即便是为了这一个美好的初衷,我们也应该去尝试一下,即使是失败。

    我也做了几年的测试,但也是最近才开始研究自动化测试的,在工作中多多少少接触过几种常见的工具,如 silktest 和Selenium ,搞过测试的应该都听过,我最近刚刚为现有项目搭建了一个测试框架,为其中的部分模块编写了一些测试case, 收益还是颇丰的,先说说这两种工具吧。

    SilkTest 是商业工具,想使用是需要花钱的,但是有现成的平台和框架,也比较容易学习,可以基于windows ,unix 平台。ie ,firefox (部分)浏览器。可以录制回放,对象识别或者手工编程,也能基于数据驱动,关键字驱动等等测试框架。SilkTest 里面的语言4test 其实是类C (也有Silk4J ,用Java 写),编程能力相对较强。

    Selenium 是免费的,需要有类似ide (如eclipse ),原先是thoughtworks 的几个牛人开发的,现在google 维护(人都跳槽过去了)。可以基于windows ,unix ,mac 等平台。ie ,firefox 等浏览器。 测试团队,经费不足,能力很强(Java 上面),有对测试平台和环境要求比较高(ie ,firefox ,safari 等等),那么Selenium 是很不错的选择。

           今天我就简单入个门,先介绍通过junit+selenium+Coverlipse+ant 来搭建一整套自动化测试框架,开始之前我先提出几个问题,请大家根据下面的问题来阅读本篇文章
    1. 如何录制脚本?

    2. 如何转换成junit 脚本?

    3. 如何生成junit 日志?

    4. 如何回放selenium 及查看回放日志?

    5. 如何查看代码的覆盖率?

    一、工具准备


    工具
     说明
     下载
     
    junit
     JUnit 是一个开发源代码的Java 测试框架,用于编写和运行可重复的测试。
     http://www.junit.org


     
    selenium
     先介绍两个重要的组件Selenium-IDE 来录制脚本;selenium-rc selenium-remote control 缩写,是使用具体的语言来编写测试类
     http://seleniumhq.org/download/


     
    Coverlipse
     Coverlipse 这个Eclipse 插件能够把JUnit 测试的代码覆盖直观化。
     http://coverlipse.sourceforge.net/download.php


     
    Ant
     Ant 是一个类似make 的工具, 大家都已经很熟悉了,这里我们可以利用其中的ant task 来生成junit 日志
     http://ant.apache.org/bindownload.cgi


     


    二、Junit 的安装

    1.         Eclipse 本身会自带Junit.jar 包,所一般情况下是不需要额外下载junit 的。

    2.         将junit3 的library 添加到工程的buildPath 中

    3.         因为junit 的日志是通过Ant 来生成的,所以一定要将Junit.jar 添加到ant_home 里

    三、selenium 的安装

    1.         安装seleniumIDE ,打开火狐浏览器,然后进入工具—> 添加附件,搜索seleniumIDE

    2.         查询出对应的IDE 后,点击直接安装,安装结束后重启FireFox ,看到下面的菜单说明安装成功

    3.         安装selenium-rc ,先去http://www.openqa.org/selenium/下载selenium 包。用命令行来到解压到文件夹下:d:\autoTesting\ selenium-server-standalone-2.0b1.jar 目录下

    4.         运行java -jar selenium-server-standalone-2.0b1.jar ,启动selenium server 。为了在运行时应用运行的浏览器与selenium 服务的浏览器分开可在其后面加–multiWindow 。

    5.         在Eclipse 创建一个项目,在项目的build path 里面加上elenium-server-1.0-beta-1 下selenium-server.jar 、selenium-java-client-driver-1.0-beta-1 下selenium-java-client-driver.jar (这两个在刚解压的包里面)和eclipse\plugins\org.junit_3.8.1 下junit.jar 。


    6.         将制定的Jar 包导入到工程里,然后你就可以集成并使用相应的API ,编写自己的测试CASE 了。

    四、Coverlipse 的安装

    1.         直接通过Eclipse 即可安装,步骤如下

    •In Eclipse, click Help -> Software Updates -> Find and Install.
    •In the dialog, select Search for new features to install, then Next.
    •In the next step, add a New Remote Site. Name it "Coverlipse update site", the URL is "http://coverlipse.sf.net/update/".
    •Press Finish. Eclipse now searches for the Coverlipse feature to install and shows that to you. 2.         配置 Coverlipse 以获取代码覆盖
     

    3.         一旦单击了 Run ,Eclipse 会运行 Coverlipse 并在源代码(如图 7 所示)中嵌入标记,该标记显示了具有相关 JUnit 测试的代码部分
    4.     Coverlipse 生成的具有嵌入类标记的报告


    5.      正如您所见,使用 Coverlipse Eclipse 插件可以更快地确定代码覆盖率。例如,这种实时数据功能有助于在将代码签入 CM 系统前 更好地进行测试。

    五、ANT 安装,eclipse 自带,只需要配置环境变量ant_home 即可。


    六、创建一个案例

    1.         创建一个工程testSelenium 安装下面目录结构

    2.         录制脚本,打开Firefox 浏览器,进入selenium IDE 菜单

    3.         输入相应录制的地址,点击红色按钮,开始录制

    4.         将脚本转换成junit 代码,然后将其拷贝到测试类中做为测试CASE 编码的雏形。

    六、如何查看日志,这里日志分两类:

    l          Junit 日志,通过junit 写的断言,和标准输出,这些操作产生的日志记录。

    l          Selenium 日志,当运行junit 脚本时,selenium 相关的脚本就会产生回放日志,例如打开界面的url ,标准输入,输出等信息。

        虽然这两种日志没有交集,需要分开查看。但一般情况下我们只需要观察Selenium 日志已经足够用了,与其相比Junit 日志更适用于编码阶段。

    1.       Junit 日志, 只需要配置脚本build-selenium.xml ,如下

    <project name="seleniumTest" default="junit" basedir=".">

           <property environment="env" />

           <condition property="ia.home" value="${env.IA_HOME}">

                  <isset property="env.IA_HOME" />

           </condition>

           <property name="run.classpath" value="../class">

           </property>

           <property name="run.srcpath" value="../testSelenium">

           </property>

           <property name="test.xml" value="../xml">

           </property>

           <property name="test.report" value="../report">

           </property>

           <property name="lib.dir" value="../lib" />

           <path id="compile.path">

                  <fileset dir="${lib.dir}">

                         <include name="junit.jar" />

                         <include name="ant.jar" />

                  </fileset>

           </path>

           <target name="init">

                  <delete dir="${run.classpath}" />

                  <mkdir dir="${run.classpath}" />

                  <delete dir="${test.report}" />

                  <mkdir dir="${test.report}" />

                  <delete dir="${test.xml}" />

                  <mkdir dir="${test.xml}" />

           </target>

           <target name="compile" depends="init">

                  <javac destdir="${run.classpath}" srcdir="${run.srcpath}" />

           </target>

           <target name="junit" depends="compile">

                  <junit printsummary="false">

                         <classpath path="${run.classpath}">

                                <path refid="compile.path" />

                         </classpath>

                         <formatter type="xml" />

                         <batchtest todir="${test.xml}">

                                <fileset dir="${run.classpath}">

                                       <include name="**/Test*.class" />

                                       <include name="**/*Test.class" />

                                </fileset>

                         </batchtest>

                  </junit>

                  <junitreport todir="${test.xml}">

                         <fileset dir="${test.xml}">

                                <include name="TEST-*.xml" />

                         </fileset>

                         <report format="frames" todir="${test.report}" />

                  </junitreport>

           </target>

    </project>

    2.       运行ant 脚本以后,就可以生成相应的junit 日志。


    1.selenium 日志
    当运行junit 脚本时,selenium 相关的脚本就会产生回放日志,但默认记录的东西可读性太差了,所以我们使用loggingSelenium (http://loggingselenium.sourceforge.net/usage.html) ,可以将每个case 可以生成记录selenium 命令的html 格式的result 了。

    4.       plugin 的下载地址:

    http://sourceforge.net/projects/loggingselenium/files/loggingselenium/Release%201.2/logging-selenium-1.2.jar/download
    5.       安装方法:只需要将下载的logging-selenium-1.2.jar 导入到工程里即可。

    6.       编写代码如下

    @Before

    public void setUp() {

        final String resultPath = "absolute-path-to-where-your-result-will-be-written";

        final String resultHtmlFileName = resultPath + File.separator + "result.html";

        final String resultEncoding = "UTF-8"

        loggingWriter = LoggingUtils.createWriter(resultHtmlFileName, resultEncoding);

        LoggingResultsFormatter htmlFormatter =

            new HtmlResultFormatter(loggingWriter, resultEncoding);

        htmlFormatter.setScreenShotBaseUri(""); // this is for linking to the screenshots

        htmlFormatter.setAutomaticScreenshotPath(resultPath);

        // wrap HttpCommandProcessor from remote-control

        LoggingCommandProcessor myProcessor =

             new LoggingCommandProcessor(new HttpCommandProcessor(your-configs), htmlFormatter);

        selenium = new LoggingDefaultSelenium(myProcessor);

        selenium.start();

    }

    @After

    public void tearDown() {

        selenium.stop();

        try {

            if (null != loggingWriter) {

                loggingWriter.close();

            }

        } catch (IOException e) {

            // do nothing

        }

    }

    7.       运行成功以后在指定的目录中生成相应的reports

       七

    七、框架优势
    1.       记录测试的过程,所见即是所得,selenium 的所有内部程序都是用Javascipt 编写的,比较灵活;

    2.       可以通过selenium IDE 录制脚本,脚本可以回放,可以作为junit 编码的雏形;

    3.       支持多种操作系统;

    4.       支持多种编码语言。JAVA,.NET, Perl, Python, Ruby

    八、框架劣势

    1.      selenium 的录制工具只能安装在firefox 浏览器上, 如果系统界面不被firefox 支持,那就要花费一定的时间去手写case 。 不过最近听说有一个工具 叫 360WebTester , 可以支持IE 的录制,而且是国产的评价还不错,有时间我要研究一下。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/congqing2011/archive/2011/02/26/6210553.aspx


  • 金鸡湖(苏州)边卖的好听英文歌CD

    2012-08-19 20:05:32

        每次去金鸡湖闲心散步---不是刻意去听歌,却总会听到一首很有欧美乡村气息的歌,其实不懂什么是欧美乡村气息,反正觉得一边欣赏金鸡湖美景一边听了很NICE,每每总会不觉得停留多驻足一会,今天手机录了下来,回到家里GOOGLE下,呵呵,吓我一跳,发现不少有同感的有心人因为于此早于留下金鸡湖情节---西祠胡同的脚印就是印证。
     
    歌名:---SUTTER' MILL,值得一听!
  • Windows Oracle11gR1 创建数据库错误问题

    2012-08-08 10:22:17

    from http://panfuy.iteye.com/blog/1258452

    在IBM 3825(24虚拟CPU)上安装Oracle,创建数据库到95%时,发生如下错误:
    ORA-12801: error signaled in parallel query server P073.
    ORA-00018: maximum number of sessions exceeded
    ORA-06512: at "SYS.UTL_RECOMP", line 629
    ORA-06512: at "SYS.UTL_RECOMP", line 671
    ORA-06512: at line 1

    经google,发现有如下问题:
    1.CPU数量太多
    2.session数量不够

    参考资料
    http://www.keyongtech.com/5021009-oracle-11-1-0-on
    http://blogs.sun.com/pomah/entry/too_many_cpu
    http://blogs.sun.com/glennf/entry/virtual_cpus_effect_on_oracle


    解决:
    修改文件D:\app\dmadmin\product\11.1.0\db_1/assistants/dbca/templates/General_Purpose.dbc
    在其中InitParams部分增加
             <initParam name="sessions" value="1500"/>

             <initParam name="processes" value="500"/>

    MiscParams部分增加
             <sessions>500</sessions>

    reboot os

    重新配置数据库实例
    使用Configure Assistant 删除orcl实例,重新创建orcl实例,OK。

  • How to use JDBHammer(怎么使用 JDBHammer)

    2012-07-25 16:37:47

                             How to use JDBHammer

    JDBHammer简介:

     它是一个数据库压力测试工具,它可以模拟指定数量的并发用户进行数据库查询操作并给出测试的结果报表(这个结果表现你指定的并发查询用户数完成查询任务所耗用的时间)。当前只支持 MySQL 数据库。本软件网上有很多介绍,但是未找到实用介绍,都相互抄来抄去,本人今天从官网上下载了最新版本http://sourceforge.net/projects/dbhammer-08,发现下载下来不能用,出现如下问题:

    于是自己看错误,发现少了文件,重新下载JDBHammer源文件并重新生成hammer.jar包就可以成功运行了。

    现在把使用步骤和软件共享下:

    使用前准备

    1 安装JDK并配置

    2 数据库驱动“mysql-connector-java-5.1.18-bin.jar”放置到C:\*\jdk1.6.0_23\lib目录下

    3 安装mysql 5.5

    4、从附件中下载JDBHammer软件

    数据及用户准备

    1. 登录mysql创建数据库

    Create a database or schema named "test"

       CREATE DATABASE test;

      

    2. 创建JDBHammer默认的用户名及授权

    Create a user named "dbhammer" with password "dbhammer"

       CREATE USER dbhammer IDENTIFIED BY 'dbhammer';

       GRANT ALL PRIVILEGES ON test.* TO dbhammer;

       FLUSH PRIVILEGES;

      

    3. 选择数据库“test,open script方式引入“mysql_ins_text.sql”,执行它,帮助你数据库初始化数据

    Execute <dbengine>_ins_text.sql on test

    4. 运行 DBHammer

    进入JDBHammer所在目录,查看帮助

         

    5 输入并发用户数和并发查询数(注意:这个不是无限大的,看你自己的机器处理能力),把结果保存到一个文件中去

    例如用10个并发用户数,查询总数为10

    java -jar hammer.jar 10 10

  • 安装windows2008 server 64还可以安装windows2003 server 64?

    2012-07-25 10:28:18

    今天因为工作需要,老板突然提出我们研发软件需要windows2003 server 64平台上进行测试,之前windows 2008 server 64位测试都通过了。由于手头上没多余的硬盘和机器,又不想破坏原来的windows 2008 server 64,因为里面的配置了N多软件、数据库什么的,破坏了损失就大,那怎么办,装双系统,跑过去问公司IT,回答:我的想法行不通,必须先装低版本再装高版本才可以,哎,难道只能破坏原来的windows 2008 server 64?有点不甘心,于是自己网上找办法看看是否可以解决,还真找到了,在此记录下。
    问题:安装windows2008 server 64还可以安装windows2003 server 64?
    答:完全可以
    解决办法:
    1 、从安装windows2008 server 64的硬盘取一块分区去安装windows2003 server 64
    2、 安装windows2003 server 64完毕后,重启肯定启动项不能再看到windows2008 server 64,没关系
    3 、先进入windows2003 server 64系统,然后下载一个软件“NTBOOTautofix”,通过它自动修复,可以看到修复报告,会说windows2008 server 64修复成功
    4、 重启windows2003 server 64系统时,就可以多了windows2008 server 64系统启动项
    5、 选择windows2008 server 64系统启动项(可能会碰到无法进入桌面的问题,可以在选择windows2008 server 64系统启动项时,按F8选择最近一次正常加载启动)
    6 、over--大功应该告成了
  • 测试计划评审单子

    2010-10-23 10:19:11

    Test Plan Making Checklist - (Sample Checklist)
                    
                
    Generic Checklist from Software Product Development Perspective
  • 也谈测试的进度控制和团队管理

    2010-09-21 15:02:59

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 每周一问,答贴有奖

      在很多时候,产品(或项目)总不能如期地发布(或结项),发布期总在不断地推延,推延。大的产品有时会延迟一个月,几个月,甚至半年以上。这是个普遍现象,因为每个软件的测试过程都会受到诸多不定因素的影响。

      近日,和业内同行聊起过如何控制产品的测试进度问题。我认为,延迟问题是无法避免的,但这种风险却可以尽量地降低。我不做测试已经8年了,但还是有一些深刻感悟

      一、制定切实可行的测试计划,制定和执行计划时,注意几个原则:

      1、务实原则

      即,没有把握的事情,不轻诺;已经答应的事情,不失信。

      测试计划应依据功能设计书制定,明确测试范围和发布条件,合理地分配和调度测试资源。并考虑版本的复杂度,和功能的成熟度,以及预期发布时间,实事求是地划分测试阶段,且对各种突发情况进行风险预估。

      2、前紧后松原则

      对于接手的任务,要做到“前紧后松,赶早不赶晚”,尽力地按时、甚至提前完成。Bug的发现也尽量密集在集成测试阶段和系统测试初期。

      3、重者为先的原则

      各种事务“按类别”、“分优先级”处理。分清轻重缓急,重者为先。Bug的处理也以功能性错误、死机死锁、致命等优先级为高,边缘死角问题为低的原则。

      4、提前进入原则

      国内很多软件企业,由于受测试人手、测试人员的编码水平、以及公司对测试的认知程度等因素影响,很难做到由测试人员来做单元测试白盒测试,更甭说从设计阶段开始了。但是,测试经理应该尽可能地参与到设计阶段,及早地了解需求动向,为测试前期做准备。测试团队则应提前进入到集成测试阶段,而不是从系统测试才开始。

      因为,做过单元测试后,集成测试再由研发人员来做的话,则很容易产生懒散心理。集成测试阶段,测试人员的进入,则能和研发有效地互动起来,把许多明显的bug拦截在提交系统测试之前。早在1998年,我就提出这一想法并亲身实践。结论是,测试进入得越早,对后期的进度把控就越有效。

      二、辅助自动化手段

      自动化测试框架,虽然优点很多,但由于时间、人力、物力成本投入太大,以及企业对测试的重视程度、不同软件的不同特性等诸多因素,还有相当长的一段路要走。最起码从目前来看,完全采用自动化还不太现实。

      所以,可以把自动化测试作为一种辅助手段。对于有规律的、重复性强的、大数据量的,可批处理的,以及压力测试等,采取自动化测试。

      三、处理好团队之间(研发和测试)的关系,做好团队的内部管理

      1、走出误区

      必须要走出测试的误区——即解除测试和研发的对立观念。

      明确测试的目的、测试经理的职责、以及测试和研发两大团队的关系。测试的目的包括,验证产品符合需求的程度;发现存在的问题进行风险预警;衡量所测版本所处的状态。测试经理的职责包括,掌控产品(或项目)的测试过程;团队内外的协调沟通;测试资源(人员、工具)的安排调度等。

      测试过程是两个团队的协作,而不是两大阵营的对垒。测试经理和开发经理,是两个团队之间沟通的桥梁和纽带,而不是障碍。所以,作为测试经理必须要先走出误区,并对成员加以引导。

      2、强调沟通

      很多单位都赋予测试方面很大的权力,集测试、品质保证一身,这也是研发和测试存在矛盾的诱因之一。在黑盒、手动测试中,测试人员的业绩与个人素质,以及情绪有很大关系;而在测试人员和开发人员交流时,研发人员的情绪也非常重要。

      所以,要强调沟通。

      动之以情,晓之以理,使研发和测试双方都消除对立的观念,要统一战线。各种不同意见,应尽力地通过沟通、讨论的方式去说服,而不是通过行政命令的手段去压服。

      3、取长补短,经验共享,做同事的良师益友

      想办法调动成员的积极性。如适当放权,在工作中兼顾员工的成长,以给成员以成就感和满足感。

      每个人的技术都并非全能,要善于利用资源,善于发现和运用各成员的优势能力,取长补短,协作互助地把事情做到最好。如,调度各模块之间的负责人员进行交换、交叉、综合测试。鼓励成员经验共享,引导大家相互学习,并在他人思路基础上更深层次地发掘问题;促进测试与研发成员之间的交流等等,使彼此成为工作中的良师益友。

      四、注重收尾阶段

      收尾阶段的几个版本,我们通常称之为稳定期版本。此时,前期发现的重大bug已基本排除。产品进入稳定期后,测试方法和测试范围,应更注重客户思维,多站在用户的角度去验证产品符合需求的程度,去衡量版本所处的状态。测试工作需要更加缜密,容不得一点儿马虎和粗心大意。

      进入稳定期的版本,应尽可能地减少改动,且版本间隔加长,以保证有足够时间进行全面测试。稳定期内发现的,不影响正常功能的问题,甚至边缘死角中存在的较重大问题,不要死咬不放,而应和开发经理、产品经理等相关人员进行讨论、评估风险。因为很多时候,牵一发而动全身,改掉一个旧bug却会引起好多新bug。除非修改有100%的把握,否则不应该冒险,可把发现的问题写在说明文档里,引导用户避开,留给下一版本解决。

      产品的稳定期期间,测试经理起到至关重要的协调作用。

  • 面试问题:

    2010-09-08 21:52:53

    面试问题:

    1,工作中最有成就感的事情?notable achievement?

    2,工作中碰到的最大的困难是什么?如何解决的?

    3,为什么要离开现在的工作?

    4,自动化测试框架?什么是data test driven, keyword test driven?

    5,缺陷追踪与管理?

    6,自动化测试脚本的配置管理?

    7,我在工作中充当的角色?如何处理日常事务?测试流程?

    8,如何开展自动化测试?

    9,自动化测试的工具?QTP, Ruby?

    10,查询语句?涉及到having, group by, 函数, 表连接。

    11,什么是Scrum? Agile development?

    12,软件开发的阶段?Software testing lifecycle.

    13,Communication with onsite.

    14, 特殊场景的一个解决方案,如项目中有100个case要执行,但是实际执行人力只能完成80%,剩下20%怎么办?按照发现的defect的分布情况,重新划分case执行的优先级别。

    15,排序算法的代码编写。

  • SQL中escape的主要用途

    2010-08-26 08:58:07

    SQL中escape的主要用途

    mysql 2007-10-12 10:35:56 阅读18 评论0   字号: 订阅

    SQL中escape的主要用途

    1.使用   ESCAPE   关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串   5%   的字符串,请使用:    
      WHERE   ColumnA   LIKE   '%5/%%'   ESCAPE   '/'  
    2.ESCAPE   'escape_character'    
      允许在字符串中搜索通配符而不是将其作为通配符使用。escape_character   是放在通配符前表示此特殊用途的字符。  
       
      SELECT   *  
      FROM   finances  
      WHERE   description   LIKE   'gs_'   ESCAPE   'S'  
      GO  
       
      意思就是:  
      比如,我们要搜索一个字符串     "g_"     ,如果直接     like     "g_",那么   "_"的作用就是通配符,而不是字符,结果,我们会查到比如     "ga","gb","gc",而不是我们需要的   "g_".  
      用     LIKE   'gs_'   ESCAPE   'S'     's'表示特殊用法标志  
    3.create   table   a   (name   varchar(10))  
      go  
      insert   into   a   select   '11%22'  
      union   all   select   '11%33'  
      union   all   select   '12%33'  
      go  
      select   *   from   a     WHERE   name   LIKE   '%/%33'   ESCAPE   '/'   --指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)  
      go  
      drop   table   a
    结果为:  
      name                
      ----------    
      11%33  
      12%33  

  • 写英文bug 速成

    2010-07-30 08:45:59

    转自:http://www.51testing.com/?uid-166573-action-viewspace-itemid-217743

     

     

    201.鼠标操作

    英文

    中文

    说明

    Click

    单击

    按一下鼠标左键。

    Right Click

    单击右键

    按一下鼠标右键。(注意避免“右击”的说法)?should be case by case

    Double Click

    双击

    连续快按两下鼠标左键。

    Drag

    拖动

    按下鼠标左键同时移动鼠标,将屏幕界面中的对象移动到指定位置。

    Drag and drop

    拖放

     

    Triple click

    三击

     

     Hover  移动鼠标到指定的区域上, for example, hover mouse on Edit icon.

     

    202 键盘操作

    英文

    中文

    说明

    Press

    在操作过程中,使用键盘上的按键执行某一命令时,叙述为“按某某键”(不应叙述为“键入某某键”),指输入单个键或一个组合键。

    Type

    键入

    需要在界面上的文字编辑区或文本框中输入连续性的文字时,叙述为“键入某某”,不可译为“输入”。

    Enter (input)

    输入

     

    Key

    键盘上的 key 称“键”。

    Button

    按钮

    界面上的 button 称为“按钮”。

    203 操作步骤

    原则:

    种类

    英文句型

    中文标准译法

    Menus

    On the…menu, click…

    在“”菜单上,单击“”。

    Sub-menus

    On the…menu, click…, and then click…

    在“”菜单上,单击“”,然后单击“”。

    Toolbar

    On the … toolbar, click the button

    在“”工具栏上,单击“”(按钮)。

    List

    In the…list, click…, and then click….

    在“”列表中,单击“”,然后单击“”。

    Tab

    On the…tab, select …check box.

    在“”选项卡上,选中“”复选框。

     

    Under _, click _.

    在“”之下,单击“”。

    Check boxes

    Select the _ check box

    选中“”复选框。

     

    Clear the _ check box.

    清除“复选框。

    Body text

    To do _, do _.

    ,可

    事例:

    英文

    译文

    On the Tools menu, click Options.

    在“工具”菜单上,单击“选项”。

    In the File Types list, click Documents

    文件类型列表中单击文档

    On the View tab, select the ScreenTip check box

    在“视图”选项卡上,选中“屏幕提示”复选框。

    Click Options(Tools menu).

    单击“选项”(“工具”菜单)。

    Clicking the Insert Comment button on the Reviewing toolbar.

    单击“审阅”工具栏上的“插入批注”按钮。

    Clicking Track Changes(Tools menu), clicking Highligh Changes.

    单击“修订”(“工具”菜单),然后单击“突出显示修订”。


  • 数据库各种连接查询

    2010-07-19 10:23:33

     

    见附件,下载后把后缀改成docx

  • 敏捷软件开发模型--SCRUM

    2009-08-31 17:29:34

    一 什么是Scrum?

    Scrum (英式橄榄球争球队), 软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。

    Scrum的基本假设是:

    开发软件就像开发新产品,无法一开始就能定义软件产品最终的规程,过程中需要研发、创意、尝试错误,所以没有一种固定的流程可以保证专案成功。Scrum 将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝向目标有明确的推进。

    Scrum 开发流程通常以 30 天(或者更短的一段时间)为一个阶段,由客户提供新产品的需求规格开始,开发团队与客户于每一个阶段开始时挑选该完成的规格部分,开发团队必须尽力于 30 天后交付成果,团队每天用 15 分钟开会检查每个成员的进度与计划,了解所遭遇的困难并设法排除。


    二 Scrum较传统开发模型的优点

    Scrum模型的一个显著特点就是响应变化,它能够尽快地响应变化。下面的图片使用传统的软件开发模型(瀑布模型、螺旋模型或迭代模型)。随着系统因素(内部和外部因素)的复杂度增加,项目成功的可能性就迅速降低。


    下图是Scrum模型和传统模型的对比:
          

    三 Scrum模型

    一)  有关Scrum的几个名词

    backlog: 可以预知的所有任务, 包括功能性的和非功能性的所有任务。

    sprint:一次跌代开发的时间周期,一般最多以30天为一个周期.在这段时间内,开发团队需要完成一个制定的backlog,并且最终成果是一个增量的,可以交付的产品。

    sprint backlog:一个sprint周期内所需要完成的任务。

    scrumMaster: 负责监督整个Scrum进程,修订计划的一个团队成员。

    time-box: 一个用于开会时间段。比如每个daily scrum meeting的time-box为15分钟。

    sprint planning meeting: 在启动每个sprint前召开。一般为一天时间(8小时)。该会议需要制定的任务是:产品Owner和团队成员将backlog分解成小的功能模块,  决定在即将进行的sprint里需要完成多少小功能模块,确定好这个Product Backlog的任务优先级。另外,该会议还需详细地讨论如何能够按照需求完成这些小功能模块。制定的这些模块的工作量以小时计算。

    Daily Scrum meeting:开发团队成员召开,一般为15分钟。每个开发成员需要向ScrumMaster汇报三个项目:今天完成了什么? 是否遇到了障碍? 即将要做什么?通过该会议,团队成员可以相互了解项目进度。

    Sprint review meeting:在每个Sprint结束后,这个Team将这个Sprint的工作成果演示给Product Owner和其他相关的人员。一般该会议为4小时。

    Sprint retrospective meeting:对刚结束的Sprint进行总结。会议的参与人员为团队开发的内部人员。一般该会议为3小时。



    二)实施Scrum的过程简单介绍

    1) 将整个产品的backlog分解成Sprint Backlog,这个Sprint Backlog是按照目前的人力物力条件可以完成的。
    2) 召开sprint planning meeting,划分,确定这个Sprint内需要完成的任务,标注任务的优先级并分配给每个成员。注意这里的任务是以小时计算的,并不是按人天计算。
    3) 进入sprint开发周期,在这个周期内,每天需要召开Daily Scrum meeting。
    4) 整个sprint周期结束,召开Sprint review meeting,将成果演示给Product Owner.
    5) 团队成员最后召开Sprint retrospective meeting,总结问题和经验。
    6) 这样周而复始,按照同样的步骤进行下一次Sprint.

    整个过程如下图所示:




    The diagrams in this article are all from web site: http://www.controlchaos.com.  Thanks very much!           本文转载:http://www.cnblogs.com/Ring1981/archive/2006/09/07/496591.html

  • 软件项目中的成本构成及估算方法_zz

    2009-08-28 11:00:22

     
    随着知识经济、信息时代的来临,计算机软件业迅猛发展。商品化、资本化、资产化的计算机软件的价值 评估的社会需求也日益增多,而且有越来越多的趋势。由于系统软件通常是一些规模大、复杂程度高的人一 机系统,因此,系统软件的开发、使用、维护、管理的过程,是一个非常复杂的系统工程,需要有巨大的人 力、物力、财力资源,需要各种计算机软、硬件的支持。这一特点是在系统软件评估中应予充分考虑的,也 是从成本途径评估系统软件价值时应予着重关注的。据统计,软件成本在软、硬件总成本中的份额,已从50 年代的百分之十几,上升到近期的百分之七八十,而且还在持续上升。软件成本中的开发成本和维护成本的 比例,也从50年代的接近1:1,达到了近期的1:2。系统软件开发成本和维护成本在整个生命周期中份额。

    本文对上表的数字作了部分调整。主在维护阶段剔除了完善性维护成本。这一项成本不应列入委托评估系 统软件的本次价值评估。这样,开发、维护成本在整个生命周期中的份额也相应发生了变化。

    一、系统软件的成本构成


    系统软件的成本作为一个经济学范畴,应反映软件产品在其生产过程中所耗费的各项费用,为原材料、燃料、动力、折旧、人工费、管理费用、财务费用待项开支的总和。

    从财务角度来看,列入系统软件的成本有如下的项目:

    (1)硬件购置费如计算机及相关设备的购置,不 间断电源、空调器等的购置费。

    (2)软件购置费,如操作系统软件、数据库系统软件和其它应用软件的购 置费。

    (3)人工费,主要是开发人员、操作人员、管理人员、的工资福利费等。

    (4)培训费。

    (5)通讯费,如 购置计算机网络设备、通讯线路器材、租用公用通讯线路等的费用。

    (6)基本建设费,如新建、扩建机房、购置计算机机台、机柜等的费用。

    (7)财务费用。

    (8)管理费用,如办公费、差旅费、会议费、交通费。

    (9)材料费,如打印纸、包带、磁盘等的购置费。

    (10)水、电、汽、气费。

    (11)专有技术购置费。

    (12)其它费用,如资料费、固定资产折旧费及咨询费。

    从系统软件生命周期构成的两阶段即开发阶段和维护阶段看,系统软件的成本由开发成本和维护成本构成。其中开发成本由软件开发成本、硬件成本和其他成本 组成,包括了系统软件的分析/设计费用(含系统调研、需求分析、系统分析)、实施费用(含编程/测试、硬件购买与安装、系统软件购置、数据收集、人员培 训)及系统切换等方面的费用;维护成本由运行费用(含人工费、材料费、固定资产折旧费、专有技术及技术资料购置费)、管理费(含审计费、系统服务费、行政 管理费)及维护费(含纠错性维护费用及适应性维护费用)。

      二、系统软件的成本测算程序

    1、根据待开发软件的特征、所选用硬件的特征、用户环境特征及以往同类或相近项目的基础数据,进行软件规模测算。

    2、由系统软件的成本构成,结合成本影响因素、环境因素以及以往同类或相近项目数据分析,进行软件 成本测算。其中包括了安装、调试的人力和时间表、培训阶段的人力和时间表。

    3、系统软件成本测算的风险分析。这是基于系统软件成本测算的不确定性、成本测算的理论和测算技术 的不成熟性而提出的工作程序。系统软件成本测算的风险因素应包括:

    (1)对目标系统的功能需要、开 发队伍、开发环境等情况的了解的正确性;

    (2)所运用历史数据及模型参数的可靠性;

    (3)系统分析 中的逻辑模型的抽象程度、业务处理流程的复杂程度及软件的可度量程度;

    (4)软件新技术、替代技术的出现和应用对成本测算方法的冲击的影响;(5)用户在系统软件开发中的参 与程度,开发队伍的素质及所采用开发模式对开发成本的影响;

    (6)对系统软件开发队伍复杂因素认识程度;

    (7)系统软件开发人员及其组成比便的稳定性;

    (8)系统软件开发和维护经费,时间要求等方面的变更等非技术性因素所带来的风险等。

    在系统软件价值评估中实施上述程序进行成本测算时,除了应坚持持资产评估操作程序中规定的各项原 则外,还应遵循真实性与预见性原则、透明性与适应性原则和可操作性与规定性原则。

      三、系统软件成测算

    综上所述,系统软件的成本由软件的开发和维护成本所构成,即: C=C1+C2 (1)

    式中:C为系统软件的开发成本;C1为系统软件的开发成本所构成;C2为系统软件的维护成本。

    1、系统软件的开发成本C1的测算。

    我们认为系统软件的开发成本按其工作量及单位工作量成本来测算是可行的,具体测算方法为按系统软 件的软件规模(一般为软件源程序的指令行数,不包括注释行)、社会平均规模指数以及工作量修正因素来 进行。尤其是CAD系统软件的实际测算,结合国内外研究成果的综合分析和专家咨询,软件社会平均生产率 参数和软件社会平均规模指数可分别确定为3.5和1.3左右;软件工作量订由八个因子、五个等级组成。

    2、系统软件维护成本C2的测算。

    系统软件的维护为修正现有可运行软件并维护欺其主要功能不变的过程。系统软件在其交付使用后,其维护阶段在软件生命周期或生存期中占较大比重,有的可达软件生存周期的50-70%。因此,系统软件的维护成本是软件成本测算中不可忽略的一部分。

    系统软件的维护包括三类:A、改正、纠正性维护;B、适应性维护;C、完美性维护。其中C类是为扩充 功能、提高性能而进行的维护,在软件资产价值评估中一般不计入该系统软件成本,而A、B两类,则与软 件的开发过程有着紧密的联系,应计入软件成本。

    在系统软件维护阶段,对软件工作量的影响因素与开发阶段的影响因素基本相同,是开发阶段影响因素 的后的影响。因此,系统维护的可靠性越大,规模越复杂,隐错越难发现,纠错越难。系统软件越复杂, 要使其适应软、硬环境变化,进行适应性维护也越困难。当然,可靠性大、复杂度高的系统软件,其可维 护性要求也越高,软件在运行中出错的可能性也会少些。基于上述分析,系统软件维护成本的测算,可按 系统软件开发成本乘以一个该系统软件的维护参数来求取。这一维护参数,可按系统软件的复杂度从简单 到一般、到复杂的顺序,分别取0.15、0.20、0.25及0.30、0.35、0.40等。

    计算机系统软件作为计算机系统的组成部分,是信息社会的重要商品,也是知识经济社会中的重要资产。 系统软件同其他计算机软件一样,具有如下的特点:

    1、系统软件是由许多人共同完成的高强度智力劳动的结晶,是建立在知识、经验和智慧基础上的具有独 创性的产物。系统软件的开发可以工程化,软件生产可以工厂化,因此,系统软件具有价值和使用价值。 同时,系统软件具有独创性(即原始性),所以软件著作权人对系统软件产品依法享有发表权、开发者身份权、使用权、许可权、获取报酬权及转让权。

    2、系统软件产品是无形的,存在于磁盘等介质的有形载体中,通过载体进行交易。因此,带有系统 软件的磁盘交换价值,是磁盘自声价值与系统软件之和,而且主要是系统软件的价值。

    3、系统软件产品的复制(批量生产)相应简单,其复制成本同其开发成本比较,几乎可以忽略不 计。因此,系统软件产品易被复制乃至剽窃。为保护系统软件产品的著作权,必须依法登记。

    4、系统软件产品一般没有有形损耗,仅有无形损耗。系统软件产品的维护,一是由于系统软件自身 的复杂性,特别是为了对运行中新发现的隐错进行改正性维护;二是由于系统软件对其硬、软件环境有依赖性。硬、软环境改变时,系统软件要进行适应性维护;三 是由于需求的变化,要求增强系统软件功能和提高系统软件性能,系统软件要进行完美性维护。因此,系统软件的维护在其生命周期中占有重要地位。同时,系统软 件的维护过程是一个软件价值的增值过程。由上述测算方法可知,系统软件的维护费用,即使不计入完善性维护费用也已相当昂贵。不断的升级的新版本代替旧版本 软件也是系统软件价值评估中应予考虑的一个特点。
Open Toolbar