一、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。安裝時domain和server都填了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-dist或php.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.dll到C:\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 版本是針對php4,2.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的時候對標題等SetFont,Mantis沒有做這個操作,因此漢字顯示出來都是亂碼。
解決方法是增加對圖形設置字體的代碼;
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; # 這個單位是K,10000000K=10 MB
PHP\php.ini 中upload_max_filesize = 10M 和 post_max_size = 10M
3、在mantis下新增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格式的圖片文件直接顯示了。