qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

Mantis深入学习

一、mantis的配置和开发环境

  Mantis我用的1.2.5版,建议对mantis感兴趣的,都看看doc目录下的administration_guide和developers两个文档,自己试验里面的参数和功能,对mantis的理解能加深不少。当然了,即使不深入了解,直接使用mantis也不会有什么问题。

  二、mantis结构分析

  下面的内容,仅仅代表本人的一些看法,可能有不对的地方,大家可以随时指出,谢谢。

  Mantis的目录和文件很多,根目录下面的php文件主要都是功能页面,core目录中是需要的各种api函数文件,因为汉化的缘故,lang目录的strings_chinese_simplified.txt文件也是我们关心的内容。

  其实感觉mantis的结构安排不尽合理,根目录下面的大部分php文件,都应该放置到一个专门的目录,因为都是一些功能页面文件。而用户定义的内容,比如config_inc.php等,才应该放置在根目录或者专门的配置目录中,现在的安排显得很混乱,主次不清。

  如果看过mantis的源码,会发现很多源码文件中都首先引入

require_once( 'core.php' );

  core.php是我们第一个需要分析的文件,把此文件分析完,应该如何让mantis按照自己的心意修改,我们也就了解了。

  三、core.php到底做了什么

  下面的分析,我没有解释全部代码,只是挑选主要的说明mantis都在后面做了哪些魔法,感兴趣的可以直接去看完整的代码。

  1、constant_inc.php

  在core.php文件第45行:

require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'core'.DIRECTORY_SEPARATOR.'constant_inc.php' );

  在constant_inc.php文件中定义了mantis中使用的各种常量。

  2、custom_constants_inc.php

  第50、51行:

if ( file_exists( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php' ) ) {

require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php' );}

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/54/n-247254.html

  四、在config_inc.php中自定义配置

  上面的是分析,下面开始实践了,分两个部分,第一部分是通过修改config_inc.php配置文件,根据实际情况自定义需要的功能;第二部分是通过编写一个代码示例实现需要的功能。

  以下内容没有特殊说明,都在config_inc.php中定义。

  1、国际化

  在config_inc.php中,如果通过install.php安装,默认就有数据库相关的信息。

  比如我的就是:

$g_hostname = 'localhost';

$g_db_type = 'mysql';

$g_database_name = 'mantis';

$g_db_username = 'mantis';

$g_db_password = 'mantis';


接着把mantis的默认语言设置为中文:

$g_default_language = 'chinese_simplified';

  $g_default_language是很关键的参数变量,看源码就能清楚,在mantis中显示字段内容的时候,都是用lang_get()函数,lang_get函数会根据你设定的默认语言,找lang目录下对应的语言文件,比如$g_default_language 设定为'chinese_simplified'后,那么只要遇到lang_get(),就找lang/strings_chinese_simplified.txt文件中对应的变量,界面就相应显示为相应中文。

  2、新建角色

  不知道为什么,mantis缺省没有测试人员角色,只有报告员角色,但是报告员角色的权限比开发员低,也就是说,如果测试员设定为报告员角色,开发员因为权限更高,可以处理测试员的缺陷状态,比如直接关闭缺陷,我认为既然mantis主要给测试人员管理缺陷用的,那么测试人员的角色权限就应该在开发人员之上。

  根据以上说明,创建新的测试人员角色。还有给匿名用户新建一个匿名用户权限。

  在config_inc.php中,加入

$g_access_levels_enum_string = '5:匿名用户,10:复查员,25:报告员,40:修改员,55:开发人员,60:测试人员,70:经理,90:管理员';

  在lang目录的strings_chinese_simplified.txt中,查找并修改

$s_access_levels_enum_string = '5:匿名用户,10:复查员,25:报告员,40:修改员,55:开发人员,60:测试人员,70:经理,90:管理员';

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/54/n-247254.html

  五、开发版本默认值功能

  上一章用户定义的内容,都是通过系统自带的变量接口进行配置。但是一些内容,没有自定义的接口,怎么办?

  好在mantis是开源软件,自己动手修改吧。

  在提交缺陷的时候,有产品版本和目标版本,在处理缺陷的时候,有修正版本,这些版本都没有预设值,都需要自己手工选择版本,我们下一步就是通过自定义开发,给这些版本加上默认值。

  1、mantis中的版本

  在后台管理版本的时候,版本有两个选项:已发布、已过期。

  而mantis中使用版本的地方有三个:产品版本、目标版本、修正版本。

  我们需要考虑的是:mantis为什么这么设定,这么设定有什么意义。

  下面是我认为的三个版本的含义:

  产品版本:当前测试软件的版本。

  目标版本:预期解决缺陷的版本。

  修正版本:真正解决缺陷的版本。

  其中产品版本一定是已经发布的,目标版本是没有发布的,修正版本有可能发布、也有可能没有发布。

 在mantis中有两个功能模块:

  变更日志(Changelog):记录项目在各个不同的版本已经处理的缺陷。根据修正版本进行记录,只记录最终状态为已解决和已关闭的缺陷。

  路线图(Roadmap):在预期的目标版本是否真正处理了缺陷,给一个项目已经处理缺陷的百分比。根据目标版本进行分类,最终状态为已解决和已关闭的缺陷才计算为已经处理的缺陷。

  变更日志和路线图功能需要使用的时候,都必须设定相应版本。

  例如:一个问题,发现在1.2版本,目标1.4版本,关闭在1.5版本。相应的变更日志中,在1.5版本就记录一条状态为关闭的记录;在路线图中,1.4版会记录此问题关闭并且算已解决问题。

  所以说,mantis之所以设计为三个版本,是为了相关的功能需要。

  如果大家认为不需要使用变更日志和路线图功能,三种版本没有必要全部填写。

  2、通过编程实现版本默认值功能

  通过上一节的分析,我们了解了不同版本的差别,那么就可以确定,产品版本,是已经发布的版本,目标版本和修正版本,应该是没有发布的版本(也有可能是已发布版本版本,请手工选择即可,不在自动化提取默认值功能代码考虑范围之内)。根据版本是否发布,我们从版本列表中取得已发布或未发布的第一个版本作为相应版本的默认值。

  在根目录创建custom_functions_inc.php文件,在里面写入自定义的获取版本函数,$project_id参数是项目的id,$t_released参数确定版本是否已发布,此自定义函数取得版本列表中遇到的已发布或未发布的第一个版本作为函数返回值,代码如下:

<?php

function custom_version($project_id,  $t_released= VERSION_ALL) {

    foreach (version_get_all_rows( $project_id,  $t_released) as $t_version){

      $t_custom_version = $t_version['version'];

      break;  

    }

    return $t_custom_version;  

}

?>

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/54/n-247254.html

  六、总结

  此篇文章,仅仅是我对使用mantis这几个月的学习总结,我看过很多人写的mantis安装配置文章,里面都仅仅说如何配置mantis完成需要的功能。而我这个系列的文章,希望告诉大家,为什么按照别人说的配置下来,mantis就能相应改变,大家如果能从知其然到知其所以然,也就不枉费我花费这么多的精力了。

  个人的文笔有限,了解mantis的人可能会觉得我说的过于繁琐,但是我这个系列是给希望了解mantis的初学者看的,高手可以直接看代码,比我文中说的更详细和准确。

  其实觉得mantis的结构安排不尽合理,很多的内容过于绕。但是mantis确实考虑到了很多的情况,看过上文就知道,很多内容不需要大改,mantis尽可能的把函数参数接口都设计好了,可以根据需要由用户直接调整。

  大概就是这些了,文章虽然检查了几遍,但是个人不敢保证里面是否还有问题。

  再次感谢有耐心看完全文的的人。

 尝试着研究了下mantis。发现安装和配置还是比较负责的,期间会遇到很多麻烦的配置问题,

        比如邮件发送,乱码,图标支持,项目路径存取等等,网上没有详细的整理的资料。

 

        所以为了大伙能够迅速使用mantis,少走弯路,特整理了一下安装和配置文档。希望大家能够喜欢。这可是辛苦整理了几天的哦,呵呵!!!!

 

                           Mantis环境配置单

 

步骤一:安装Apache HTTP Server 2.2.4

      apache_2.2.4-win32-x86-no_ssl.msi。安装时domainserver都填了localhost,端口选择8080(如果不考虑IIS就用80)。   
    
启动服务,输入http://localhost:8080/,出现It works!表示Apache正常运行。

步骤二:安装PHP 5.2.5

      php-5.2.5-Win32.zip,解压到任意目录(我解压到d:\php-5.2.5\)。

步骤三:配置Apache使支持PHP

编辑\Apache2.2\conf\httpd.conf文件,在末尾添加两行:
    LoadModule php5_module "d:/php-5.2.5/php5apache2_2.dll"
    AddType application/x-httpd-php .php
    
如果Apache的版本为2.0那么应当使用php5apache2.dll,另外注意Apache的配置文件使用/而非\。然后可以写一个简单的php测试页面放到\Apache2.2\htdocs。内容如下:
    <html><body><h1><?php echo "It works!"; ?></h1></body></html>
    
出现It works!表示Apache可以解析PHP

 步骤四安装MySQL v5.1.46

     安装过后紧接就是配置,为了避免以后的麻烦请选择Detailed Configuration。在接下来的向导中务必记得两点:
    1
、选择Best Support For Multilingualism,这样MySQL的默认字符集设置为UTF8,能够支持中文存储。否则以后使用Mantis创建帐户、创建项目等等只要输入有中文,入库就报错。
    2
、设置root帐户的密码,因为Mantis建立数据库时似乎不支持空密码的root帐户。
     
而其余的仍可使用默认的。

步骤五配置PHP使支持MySQL

PHP安装目录,拷贝php.ini-distphp.ini-recommended并改名为php.ini
    1
、找到下面两行:
    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php\includes"
    
去掉include_path前面的分号,改为include_path = ".;d:\php-5.2.5\PEAR"
2
、找到下面两行:
    ; Directory in which the loadable extensions (modules) reside.
    extension_dir = "./"
    
改为extension_dir = "d:\php-5.2.5\ext",该目录包含有php_mysql.dll

3、找到extension=php_mysql.dll这行,去掉前面的分号。
    4
、拷贝D:\php-5.2.5\libmysql.dllC:\Windows\System32(能否不拷贝?望知情者告知)。
    5
、编辑\Apache2.2\conf\httpd.conf文件,在末尾加上一行:
    PHPIniDir "d:/php-5.2.5"
    
使用Apache解析PHP时必须这样指定php.ini文件的位置,进而使PHP加载MySQL的扩展模块。
    
以上缺少任何一步就会收到错误:Call to undefined function mysql_connect()

步骤六:安装Mantis 1.1.1

  InstantMantis-1.1.1.zip

解压到任意目录(我解压到d:\InstantMantis-1.1.1\)。

 1、映射虚拟路径,编辑\Apache2.2\conf\httpd.conf文件,在末尾添加:
    Alias /mantis "d:/instantmantis-1.1.1/root/mantis/"
    <Directory "d:/instantmantis-1.1.1/root/mantis/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
 2
、输入http://localhost:8080/mantis/admin/install.php,填写参数,应该都看得懂吧,然后点击按钮建立数据库。需要注意的是Hostname一栏,默认值为localhost:3360,修改为MySQL安装时默认端口为3306
    3
、更改数据库连接,编辑d:/instantmantis-1.1.1/root/mantis/config_inc.php,修改以下变量的值,如:
    $g_hostname = 'localhost:3306';
    $g_db_type = 'mysql';
    $g_database_name = 'mantis';
    $g_db_username = 'root';
    $g_db_password = '
密码';
    4
、输入http://localhost:8080/mantis,用内置的帐号administrator(密码root)登录。局域网内其它机器访问时记得开放8080端口(如果有防火墙的话)

 

配置邮件发送

1)         修改mantis中的config_defaults_inc.php配置邮箱发送功能

#############################

         # Mantis Email Settings

         #############################

         # --- email variables -------------

         $g_administrator_email          = 'jinchun1223@126.com';

         $g_webmaster_email             = 'jinchun1223@126.com';

         # the sender email, part of 'From: ' header in emails

        $g_from_email                       = 'jinchun1223@126.com';

         # the sender name, part of 'From: ' header in emails

         $g_from_name                       = 'Mantis Bug Tracker';

         # the return address for bounced mail

         $g_return_path_email   = 'jinchun1223@126.com';

         # allow email notification

         #  note that if this is disabled, sign-up and password reset messages will

         #  not be sent.

         $g_enable_email_notification = ON;

2)         修改mantis中的config_inc.php  修改配置文件使其支持中文

<?php $g_hostname='localhost:3306';$g_db_type='mysql';$g_database_name='mantis';$g_db_username='root';$g_db_password='root';

$g_default_language='chinese_simplified_utf8';支持中文显示和数据库插入查询等

$g_window_title='Mantis Bug';         

$g_page_title= 'Mantis Bug';   

$g_use_jpgraph=ON; 支持报表图形化显示

?>

mantis中如何显示统计报表

默认情况下,Mantis的图形报表是关闭的,需要安装JPGraph模块。
1).
请注意JPGraph 1.x 版本是针对php42.x 是针对php5的,请下载对应版本。
2). 
将下载包解压到一个目录下,我解压到mantis下的jpgraph目录

3). 然后在config_inc.php中添加下面几行:
$g_use_jpgraph = ON;
$g_jpgraph_path = './jpgraph/src/';
       //
你也可以按照你的地址填写文件的绝对路径。
4). 
php.ini“;extension=php_gd2.dll”前面的分号删除,这个模块是JPGraph在显示图表和进行汉字编码转换是所必须的。
(3) JPGraph
的中文显示
1) 
如果你的界面语言是用简体中文或者繁体中文,那么你会看到图形中的汉字都是乱码,这是因为Mantis对于JPGraph的编码设置不正确造成的。JPGraph会自动将汉字转换为UTF-8编码,但是需要在调用JPGraph的时候对标题等SetFontMantis没有做这个操作,因此汉字显示出来都是乱码。
解决方法是增加对图形设置字体的代码;
2) 
打开$mantis\core\graph_api.php,查找:graph_get_font(),在其中添加一行
'chinese_gbk' => FF_SIMSUN,
3) 
config_inc.php文件中添加
$g_graph_font           = 'chinese_gbk';
4) 
打开$JPGraph\src\jpg-config.inc.php
查找 DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');
改为 DEFINE('CHINESE_TTF_FONT','simsun.ttc');
jpg-config.inc.php
也可以不改,如果生成的图形中的字体想由自己定义,可以这样改。
这个时候,如果你选择的语言是chinese_simplified,现在你的图形报表应该就可以显示中文了。
5) 
但如果你选择语言跟我一样是chinese_simplified_utf8,则发现报表显示还是乱码。
原来JPGraph中处理的时候比较bt,只要看到字体设置是FF_SIMSUN,就认为字符串编码是GB2312,输出的时候都要转成UTF8
单实际上已经是UTF8了,根本不用转。
直接修改代码:
打开JPGraph下的jpgraph.php文件,搜索其中:
elseif( $aFF === FF_SIMSUN ) {
      // Do Chinese conversion
      if( $this->g2312 == null ) {
   include_once 'jpgraph_gb2312.php' ;
   $this->g2312 = new GB2312toUTF8();
      }
      return $this->g2312->gb2utf8($aTxt);
}
改为:
elseif( $aFF === FF_SIMSUN ) {
      // Do Chinese conversion
   /*
      if( $this->g2312 == null ) {
   include_once 'jpgraph_gb2312.php' ;
   $this->g2312 = new GB2312toUTF8();
      }
      return $this->g2312->gb2utf8($aTxt);
   */
   return $aTxt;

}
就是把转换编码的代码注释掉,最好不要直接删掉了,不然以后想改回来就麻烦了。
这样改实际是有些问题,如果mantis中有部分用户的语言选择为chinese_simplified,另一部分选择为chinese_simplified_utf8就不行了,

                     设置上传文件保存位置

主要配置项修改:

1修改mantis\config_inc.php配置文件

 $g_allow_file_upload  = ON;

 $g_file_upload_method = DISK;

   如果没有,则手动添加这两行。

2上传文件的大小受到 Mantis\config_inc.php  PHP\php.ini 的双重限制

   需要修改:/webapps/mantis/config_inc.php  $g_max_file_size = 10000000; # 这个单位是K10000000K=10 MB

   PHP\php.ini upload_max_filesize = 10M  post_max_size = 10M

3mantis下新增upload文件夹

   Mantis目录下新建目录如 upload ,再在mantis建立的项目中把文件上传路径设置为“upload”(通过Web方式)。这样上传的文件就会存放在upload目录中。

   但是设置是把服务器的绝对路径配进去了,结果我在其他机器上登录后,提交bug时,附件总是提交不上去,后来我把服务器上的upload目录设置为共享,并且赋予写的权限,然后再web页面上配置了然后再上传附件,发现就可以成功上传了。

在项目管理里面直接输入相对路径upload_boss就可以。

4、附件直接浏览功能:

     在提交一个issue的时候,有时候会有截图提交附件情况,希望能直接看到错误截图而不想自己下载后再看,目前Mantis只是针对bmp, png, gif, jpg格式的图片文件实现了在web页内直接浏览功能,其他各式的文件好像暂时不支持。

     实现方法,将config文件中的$g_preview_attachments_inline_max_size修改一下值

     当将这个设置为0的情况,那么查看issue的时候是永远不会出现附件贴图的,但是如果你将这个设置为一个足够大的尺寸,那么就会在issue里直接出现图片,这个数值是以字节计算,我设置$g_preview_attachments_inline_max_size=1000000,则bmp, png, gif, jpg格式的图片文件直接显示了。


posted on 2011-10-27 14:57 顺其自然EVO 阅读(8176) 评论(0)  编辑  收藏 所属分类: 测试学习专栏

<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜