发布新日志

  • apache+svn配置

    2008-12-05 10:33:44

    Subversion配置安装教程(一)

    1.       引言:一直以来我都认为,MS应该从开源项目中汲取有益的东西,开源项目也要向MS学习,而不是象网上每次提到.NetJava就要打嘴仗一样,有些文人相轻的意思。^……^我从工作以来很有幸的能够参与多个Java.Net项目开发,时常在这两种技术之间比较思考,现在有机会和大家分享,说的不对的地方,请大家多多指教。首先我准备谈谈SCM,个人认为在现在的大型软件开发中,团队合作是项目成功最重要的因素之一,尤其是使用.NetJava这些强大的面向对象的语言开发程序,必然会多次分层,基于组件的共享等等,所以SCM就更重要了。MSVSS我想大家应该都用过,也知道VSS的优劣,我就不多说了。(风传VSS不是MS自己开发的,记得有次我去过真正开发VSS的公司的网站,现在地址也忘记了。并且MS内部也不会使用VSS作为自己的SCM工具,呵呵,不知道是不是真的?)在以后的系列文章里,我会讲解SubversionCVS这些主流的开源项目SCM工具,并且会延伸到CIContinues Integration,即继续集成)和BugTrace领域,毕竟只有版本控制系统对于一个大型软件的开发是远远不够的。在这个旅程中,我还会带大家领略一下python(我的最爱。。。呵呵,不想试试吗?非常强大!)的旖旎风光,而且这一系列文章也会收录在我准备撰写的《Using Open Source Software to Implement Your .Net Applications》(中英双语版,呵呵。。。考察一下自己的英语)。首先来介绍一下Subversion,以下引自赛迪网-开放系统世界,作者:顾宏军
        长久以来,在开源世界中,CVSConcurrent Versions System)一直都是版本控制的首选。但是现在用户有了另一个选择,就是SubversionSubversion是下一代版本控制系统,能替代CVS,项目主页是http://subversion.tigris.org 

        Subversion是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件, 其中包括程序源码。 
        它的初始目标很明确,实现绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。。。

    如果你使用过CVS就能体会到上文所说的Subversion好处了,比如目录版本控制,目录的改名等。对于Subversion的原子提交,我想多说几句,大家可以想象,我们一般做一个修改,可能需要改动多个文件,尤其现在大家多对分层已经趋之若鹜了,除非你还在用着哪种什么东西都写在一起的语言。(比如PB?呵呵,感觉好像是这样的东西。我现在正在作一个遗留系统的迁移到.Net上的工作,这个系统就是用类似PB的一种脚本语言Pantherui,逻辑和数据访问全在一个文件里面,我在代码里面还看到了80年代的注释。呵呵,很强吧?我们公司几个程序员可能是中国为数不多的懂panther语言的人了。扯远了。。。)如果你的一次提交过程中,由于网路原因或者机器的硬件原因或者根本是你自己落下了一些文件没提交,在逻辑意义上这次提交是不完整的,Subversion的原子提交能很好的解决这个问题,个人认为这也是对于CVS最大的改进了。怎么样,是不是有些想数据库的事务的概念呢?动心了吧?ok,废话少说,let's go!Follow me! Fire in the hole!^……^

    Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。下面我讲解的是基于Apache Http ServerSubversion,这样做几个好处:A.能使用WebDAV协议。B.能使用浏览器作为客户端工具浏览源码仓库。C.可以很容易的支持到SSPIWindows域认证)和LDAPAD?),这些都是Apache本身就支持的。D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。

    安装Subversion
    1.
    www.apache.org上下载apache http server,注意要下载2.0.X以上的版,否则不能和当前最新的Subversion工作。
    安装apache_2.0.63-win32-x86-openssl-0.9.7m.msi,请参照Apache安装

    2.     安装svn-1.4.5-setup.exe。安装Subversion
    5.
    检查$\apache group\apache2\modules下是不是已经有了mod_dav_svn.so
    mod_authz_svn.so
    6.
    检查$\apache group\apache2\modules下是不是已经有了libdb42.dll,如图:

    7.
    搜索$\apache group\apache2\conf\httpd.conf配置文件中的#LoadModule dav_fs_module modules/mod_dav_fs.so
    # LoadModule dav_module modules/mod_dav.so
    把前面的注释#去掉;

    并检查LoadModule配置节的末尾是不是有了LoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so,如图:

    注意,请先安装Apache,然后再安装Subversion,这样上述567步骤都可以免了,在安装Subversion过程中它会自动拷贝相应文件到相应目录中,并且修改http.conf文件,然后重新启动apache服务使修改生效。但是我发现现在这个版本的Subversion安装文件可能有个bugapachehttp.conf的配置文件中#LoadModule dav_fs_module modules/mod_dav_fs.so注释没有去掉,所以大家还是小心检查一下。如果你是先安装的Subversion,然后再安装的Apache的,那么上述的步骤一个也不能漏,都需要自己手动完成。
    配置Subversion

    1.
    在硬盘上建立源码库的根目录,例如
    E:\SVN
    2.
    E:\SVN之下建立一个新的目录,例如TestRepository作为我们的测试源码库

    3.
    建立Subversion数据库,当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDB Berkeley Database)。在命令行下输入svnadmin create --fs-type bdb TestRepository建立BDB格式的数据库(确保当前目录已经切换到E:\SVN\),在命令行下输入svnadmin create --fs-type fsfs TestRepository建立FSFS格式的数据库(确保当前目录已经切换到E:\SVN\)。建好数据库以后,到E:\SVN\TestRepository下看看是不是多了很多目录和文件,可以研究一下这些文件,对理解Subversion有帮助,但是不要试图直接修改这些文件!如图:


    如果大家经常关注开源技术,就知道BDB是一个轻量级的关系数据库,可以作为一个轻巧的内置数据库,在很多开源项目下有很多应用,比如CVSTracFSFS格式主要的特点是可以支持Subversion的数据库和Subversion服务器可以在不同的物理机器上,可以通过网络共享(不知道是否支持NFS?),能很好的工作在MS Win98上,并且速度更快,但是由于FSFS是一种新的格式,稳定性可能没有BDB好。推荐大家使用BDB,毕竟BDB有很多年开发历史,比较稳定,而且我觉得把SubversionDB和服务器分开放置好像没有什么必要吧?(谁能告诉我这样做的好处?),大家也不会拿一台Win98server吧?^……^。不要试图在BDB的格式的数据库上使用网络共享,也不要使用网络磁盘映射,否则会导致无法预料的错误。
    4.
    打开$\apache group\apache2\conf\httpd.conf配置文件,在文件的末尾加入以下语句,

    <Location /svn>
    DAV svn
    SVNParentPath e:\SVN
    AuthType Basic
    AuthName "Subversion repositories"
    AuthUserFile passwd
    #AuthzSVNAccessFile svnaccessfile
    Require valid-user
    </Location>
    这里建立了一个虚拟目录http://yourServer/svn/,所有的Subversion源码仓库都在这个虚拟目录中,并且使用“passwd”文件中username/password(用户名/密码)列表访问http://yourServer/svn/。关于Subversion的安全配置是一个比较重要的部分,我会留到下次配置SSL加密连接再讲。

    5.
    在命令行下切换到$\apache group\apache2,执行bin\htpasswd -c passwd <username>,这里<username>是你想要加入的用户名,比如doudou。执行这个命令成功以后就会在bin目录下建立一个passwd文件,之后如果再加入新的用户和更改已有用户的密码,执行bin\htpasswd passwd <username>即可。如图:


    注意一定要在$\apache group\apache2下执行,这样生成的passwd文件$\apache group\apache2根目录下,而不是在bin目录下,apache默认是在$\apache group\apache2根目录下寻找passwd文件,如果你在bin目录下执行了这个命令请把生成的passwd文件剪切到$\apache group\apache2根目录下。这一点也可以从Apachelog日志中看得出来,如图:

    6.
    重启Apache服务
    7.
    在浏览器地址栏中输入 http://YourServer/svn/TestRepository,输入用户名密码,okSubversion现在已经可以正常工作了。
    如图:


    在写作本文的时候参考了TortoiseSVN的帮助文档,在此感谢TortoiseSVN团队杰出的工作!

     

  • 配置软件SVN的介绍

    2008-12-04 11:36:08

    本来是发在公司内刊上的,现在拿来这里凑个数。
     
        前一段时间,公司讨论统一配置管理工具时,我推荐了svn(subversion)。照理说,在公司已经使用了vss、cvs和ClearCase三种工具的情况下,再提一种基本没人用过的新工具不是什么明智的选择。但我确实觉得svn的优点很突出,值得一荐。下面我就对svn进行一下简单介绍,让各位同事对其有一个初步的了解。

    1. 与其他工具的对比

        vss是我用的最多的配置工具,所以我相信每个用过vss的人都会对它的离线操作功能头疼不已。虽然它允许在与服务器断开的情况下修改文件,但重新连接后必须非常小心的处理每个文件,一旦出错,就会造成不小的麻烦。svn则没有这个问题。二者更详细的区别我会在下一节说明,这里就不多啰嗦了。
        svn相对cvs是有明显优势的,因为svn的设计目标之一就是“一个更好的cvs”。而且,从众多开源项目的反映看,它也确实达到了这个目标:06年,最大的开源网站SourceForge开始支持svn;KDE和GNOME的开发团队也已经换用svn;如果大家多注意一下的话,还会发现更多著名的开源项目使用了svn。
        ClearCase我没有实际使用过,按说应该无权评价。不过,我没有用过它的原因是因为它太难用了,曾经学过几天,但后来觉得太过复杂,就转向vss了。相比之下,svn是比较简单的,我大概花了一两天的时间就可以完成基本操作了,用的比较熟练也不过两周。另外就是ClearCase要钱,而svn是免费的。
        下表是这几种工具的对比,列出的功能都是我比较关心的。更详细的比较,大家可以看看http://better-scm.berlios.de/comparison/

    项目

    Vss

    Clearcase

    Cvs

    svn

     文件/目录的重命名或移动

    是?

     原子提交

     变更集

    可间接实现

     中文支持

    未知

     visual studio集成

     eclipse集成

    未知

    未知

     http访问

    8.0支持

    是 

    是 

     离线操作

    未知 

    是 

    是 

     权限管理

    是 

    较差 

    是 

     易用性

    简单

    复杂

    较简单

    较简单

     授权

    商业

    商业 

    GPL 

    Apache/BSD 

    2. svn能解决哪些问题

        一直以来,XXXX项目都是使用vss作为配置管理工具的,但应用过程中我也越来越感觉到vss满足不了项目的需要,所以决定在项目组内试用svn,并在合适的时机完全转换到svn。具体说来,svn可以解决以下几个(包括但不限于)问题。
    2.1. 获取某个以前的版本
        我想获得三天前签入的某个版本怎么办?在vss中,如果没有打标签,那可能就只有一个文件一个文件的去找了。规定每次签入都打个标签或许是个解决办法,不过这项规定能否很好的执行就是另一个问题了。在svn中,每次签入(准确地说应该是“提交”)都会为整个代码库生成一个确定的版本,所以能够轻松完成此任务。
    2.2. 自动递增版本号
        XXXX发布后,现场经常会反馈回来一些问题。但我发现这些问题中有不少是由于程序版本不匹配或没有用最新的程序造成的。所以我就想在编译过程中实现一个自增版本号的功能,每次修改后,能自动生成一个版本号,并且能把它显示在程序的关于对话框等位置,这样工程人员就能直接把这些原因造成的问题排除掉了。让我失望的是vss做不到这一点,虽然它有“关键字扩展(keyword expansion)”功能,但实现不了我的需求。而如果要求每次编译前手工修改版本号,就是另外一个能否切实执行的问题,我对这类问题的总是很悲观的。
        前面已经说过,在svn中,每次签入(提交)都会为整个代码库生产一个版本。生成它的同时,svn还会为其指定一个递增的修订号,利用这个修订号和一个配套的工具(SubWCRev),就可以做到自动生成版本号了。
    2.3. 变更集
        作为项目经理或设计人员,大家可能还会经常希望知道某个开发人员的某次签入到底修改了哪些内容,这一点在vss中也是做不到的。而在svn中,只要比较签入前的版本和签入后的版本就行了。实际上,在svn中,你可以比较任意两个版本之间的区别,甚至能追查到一个文件中每行代码的责任人。
    2.4. 离线操作
        这个在前面已经说过了,再提一次是想强调一下我有多希望配置管理工具支持此功能。

    3. 相关工具和网站

    TortoiseSvn:是windows下功能最强、最实用的svn客户端。它与资源管理器的右键菜单集成,可以管理包括源代码在内的任何文件。它的“图标叠加(Icon Overlay)”功能,可以让我们从文件和文件夹的图标中直观的看出它们的状态,如是否被修改等。另外,前面提到的SubWCRev就是它的一部分。
    AnkhSvn:一个visual studio的svn插件,支持svn的大部分功能,并且比较好用。
    VisualSvn:也是一个visual studio的svn插件,应该比AnkhSvn好一些,不过它是商业软件。
    VisualSvn Server:windows下svn+apache的组合,提供了一个mmc的管理界面,喜欢gui界面的人的福音。而且,虽然它和VisualSvn是同一家公司的产品,但它是免费的。
    Subclipse:eclipse的svn插件,也已经很成熟,据说使用风格和eclipse自带的cvs插件非常像。
    p4merge:这是一个文件对比/合并工具,TortoiseSvn自带的文件比较工具还比较好用,但合并工具就差点了,起码没有vss的好用。能找到的工具大多只支持双视图合并。p4merge则能支持三视图甚至四视图,用起来方便很多。开发这个工具的公司也是做配置管理软件的,不过这个公司比较好,只对它的服务器端收费,其他工具都可以免费用。
    http://www.tigris.org/这是subversion、TortoiseSvn、AnkhSvn以及其它众多开源软件开发管理工具的官方站点。
    http://www.subversion.org.cn/svn中文网站。
    http://www.iusesvn.com/也是一个svn的中文网站,内容和上一个有很多是重复的。
  • 测试用例模板

    2008-10-21 11:54:34

    暂无
  • 关于测试中的文档

    2008-10-21 11:47:07

    软件测试文档的流程
    整个测试过程的文档。

    先写测试策略,测试策略包括:所要测试的范围,阶段的划分,已经每个阶段完成的标准;

    然后是书写测试计划,测试计划主要包括:谁来做,在哪里做,什么时间做,为什么做,和做什么;

    接着书写测试方案,如果比较简单的就不需要书写测试方案,直接在测试计划里就可以写明白,比较复杂的才写测试方案,测试方案是书写专项测试计划的,以保证专项测试完成;

    再写测试用例,也就是说该怎么做;

    测试执行后生成测试记录和缺陷报告;

    测试结束后,生成测试报告。
Open Toolbar