㈠ 資料庫測試的主要目的和方法是什麼
資料庫測試的主要目標是:確保資料庫訪問方法和進程正常運行,數據不會遭到損壞。測試方法:
㈡ 幾個常用的MySQL性能測試工具
1、mysqlslap
安裝:簡單,裝了mysql就有了
作用:模擬並發測試資料庫性能。
優點:簡單,容易使用。
不足:不能指定生成的數據規模,測試過程不清楚針對十萬級還是百萬級數據做的測試,感覺不太適合做綜合測試,比較適合針對既有資料庫,對單個sql進行優化的測試。
使用方法:
可以使用mysqlslap --help來顯示使用方法:
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
--concurrency代表並發數量,多個可以用逗號隔開,concurrency=10,50,100, 並發連接線程數分別是10、50、100個並發。
--engines代表要測試的引擎,可以有多個,用分隔符隔開。
--iterations代表要運行這些測試多少次。
--auto-generate-sql 代表用系統自己生成的SQL腳本來測試。
--auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--number-of-queries 代表總共要運行多少次查詢。每個客戶運行的查詢數量可以用查詢總數/並發數來計算。
--debug-info 代表要額外輸出CPU以及內存的相關信息。
--number-int-cols :創建測試表的 int 型欄位數量
--auto-generate-sql-add-autoincrement : 代表對生成的表自動添加auto_increment列,從5.1.18版本開始
--number-char-cols 創建測試表的 char 型欄位數量。
--create-schema 測試的schema,MySQL中schema也就是database。
--query 使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。
--only-print 如果只想列印看看SQL語句是什麼,可以用這個選項。
mysqlslap -umysql -p123 --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam --number-of-queries=10 --debug-info
或:
指定資料庫和sql語句:
mysqlslap -h192.168.3.18 -P4040 --concurrency=100 --iterations=1 --create-schema='test' --query='select * from test;' --number-of-queries=10 --debug-info -umysql -p123
要是看到底做了什麼可以加上:--only-print
Benchmark
Average number of seconds to run all queries: 25.225 seconds
Minimum number of seconds to run all queries: 25.225 seconds
Maximum number of seconds to run all queries: 25.225 seconds
Number of clients running queries: 100
Average number of queries per client: 0
以上表明100個客戶端同時運行要25秒
2、sysbench
安裝:
可以從http://sourceforge.net/projects/sysbench/ 下載
tar zxf sysbench-0.4.12.tar.gz
cd sysbench-0.4.12
./autogen.sh
./configure && make && make install
strip /usr/local/bin/sysbench
安裝時候可能會報錯,後來發現個好文 http://blog.csdn.net/icelemon1314/article/details/7004955 怕以後找不到,也貼過來吧
1.如果mysql不是默認路徑安裝,那麼需要通過指定--with-mysql-includes和--with-mysql-libs參數來載入mysql安裝路徑
2.如果報錯:
../libtool: line 838: X--tag=CC: command not found
../libtool: line 871: libtool: ignoring unknown tag : command not found
../libtool: line 838: X--mode=link: command not found
../libtool: line 1004: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1005: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
../libtool: line 2231: X-g: command not found
../libtool: line 2231: X-O2: command not found
那麼執行下根目錄的:autogen.sh文件,然後重新configure && make && make install
3.如果報錯:
sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
那麼執行下:
n -s /usr/local/mysql5.5/mysql/lib/libmysqlclient.so.18 /usr/lib64/
4.如果執行autogen.sh時,報如下錯誤:
./autogen.sh: line 3: aclocal: command not found
那麼需要安裝一個軟體:
yum install automake
然後需要增加一個參數:查找: AC_PROG_LIBTOOL 將其注釋,然後增加AC_PROG_RANLIB
作用:模擬並發,可以執行CPU/內存/線程/IO/資料庫等方面的性能測試。資料庫目前支持MySQL/Oracle/PostgreSQL
優點:可以指定測試數據的規模,可以單獨測試讀、寫的性能,也可以測試讀寫混合的性能。
不足:測試的時候,由於網路原因,測試的非常慢,但是最終給的結果卻很好,並發支持很高,所以給我的感覺是並不太准確。當然也可能我沒搞明白原理
使用方法:
准備數據
sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=400000 --mysql-db=dbtest2 --mysql-user=root --mysql-host=192.168.1.101 --mysql-password=pwd prepare
執行測試
sysbench --num-threads=100 --max-requests=4000 --test=oltp --mysql-table-engine=innodb --oltp-table-size=400000 --mysql-db=dbtest1 --mysql-user=root --mysql-host=192.168.1.101 --mysql-password=pwd run
sysbench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 100
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 4000
Threads started!
Done.
OLTP test statistics:
queries performed:
read: 56014
write: 20005
other: 8002
total: 84021
transactions: 4001 (259.14 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 76019 (4923.75 per sec.)
other operations: 8002 (518.29 per sec.)
Test execution summary:
total time: 15.4393s
total number of events: 4001
total time taken by event execution: 1504.7744
per-request statistics:
min: 33.45ms
avg: 376.10ms
max: 861.53ms
approx. 95 percentile: 505.65ms
Threads fairness:
events (avg/stddev): 40.0100/0.67
execution time (avg/stddev): 15.0477/0.22
3、tpcc-mysql
安裝:
如果從原網站上下載源碼比較麻煩,需要工具、注冊、生成證書等。這里提供一個下載包http://blog.chinaunix.net/blog/downLoad/fileid/8532.html
export C_INCLUDE_PATH=/usr/include/mysql
export PATH=/usr/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/mysql
cd /tmp/tpcc/src
make
然後就會在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start
作用:測試mysql資料庫的整體性能
優點:符合tpcc標准,有標準的方法,模擬真實的交易活動,結果比較可靠。
不足:不能單獨測試讀或者寫的性能,對於一些以查詢為主或者只寫的應用,就沒有這么大的意義了。
使用方法:
載入數據
創建庫
mysql>create database tpcc10;
創建表:
shell>mysql tpcc10 < create_table.sql
添加外鍵:
shell>mysql tpcc10 < add_fkey_idx.sql
載入數據:
1、單進程載入:
shell>./tpcc_load 192.168.11.172 tpcc10 root pwd 300
|主機||資料庫||用戶||密碼||warehouse|
2、並發載入:(推薦,但需要修改一下)
shell>./load.sh tpcc300 300
|資料庫||warehouse|
3、測試
./tpcc_start -h192.168.11.172 -d tpcc -u root -p 'pwd' -w 10 -c 10 -r 10 -l 60 -i 10 -f /mnt/hgfs/mysql/tpcc100_2013522.txt
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '192.168.11.172'
option d with value 'tpcc'
option u with value 'root'
option p with value 'pwd'
option w with value '1'
option c with value '100'
option r with value '120'
option l with value '60'
option i with value '10'
option f with value '/mnt/hgfs/mysql/tpcc100_2013522.txt'
<Parameters>
[server]: 192.168.11.172
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: pwd
[warehouse]: 1
[connection]: 100
[rampup]: 120 (sec.)
[measure]: 60 (sec.)
RAMP-UP TIME.(120 sec.)
MEASURING START.
㈢ 軟體測試常見性能指標有哪些,並簡述其定義
包括負載測試,強度測試,資料庫容量測試,基準測試以及競爭測試
1、負載測試
負載測試,一種性能測試指數據在超負荷環境中運行,程序是否能夠承擔。在這種測試中,將使測試對象承擔不同的工作量,以評測和評估測試對象在不同工作量條件下的性能行為,以及持續正常運行的能力。
2、強度測試
強度測試,一種性能測試,他在系統資源特別低的情況下軟體系統運行情況。這類測試往往可以書寫系統要求的軟硬體水平要求。
實施和執行此類測試的目的是找出因資源不足或資源爭用而導致的錯誤。如果內存或磁碟空間不足,測試對象就可能會表現出一些在正常條件下並不明顯的缺陷。而其他缺陷則可能由於爭用共享資源(如資料庫鎖或網路帶寬)而造成的。強度測試還可用於確定測試對象能夠處理的最大工作量。
3、資料庫容量測試
資料庫容量測試指通過存儲過程往資料庫表中插入一定數量的數據,看看相關頁面是否能夠及時顯示數據。資料庫容量測試使測試對象處理大量的數據,以確定是否達到了將使軟體發生故障的極限。容量測試還將確定測試對象在給定時間內能夠持續處理的最大負載或工作量。
4、基準測試
基準測試與已知現有的系統進行比較,主要檢驗是否與類似的產品具有競爭性的一種測試。
5、競爭測試
軟體競爭使用各種資源(數據紀錄,內存等),與其他相關系統對資源的爭奪能力。
(3)資料庫相關的測試擴展閱讀
軟體測試原則:對計算機軟體進行測試前,首先需遵循軟體測試原則,即不完全原則的遵守。不完全原則即為若測試不完全、測試過程中涉及免疫性原則的部分較多,可對軟體測試起到一定幫助。
因軟體測試因此類因素具有一定程度的免疫性,測試人員能夠完成的測試內容與其免疫性成正比,若想使軟體測試更為流暢、測試效果更為有效,首先需遵循此類原則,將此類原則貫穿整個開發流程,不斷進行測試,而並非一次性全程測試。
㈣ 資料庫如何進行查詢,如何進行資料庫測試
對於今天測試方面的提高一直很模糊,但最近整理好了思路。今年重點還是在資料庫的測試方向上下手吧,因為我們公司的資料庫中數據准確性非常重要,希望能提高自己對這一方面的工作經驗吧。
前期一直進行資料庫的測試,大約3個月。也總結了一些測試經驗,拿出來與大家共享。
1、資料庫日誌查看測試法。這個方法是跟一個oracel DBA的老師學習的。呵呵。就是你在前台操作時,比如按一下新增按鈕。新增一條數據,這是觀察資料庫中的日誌,通過對日誌的查看來明確數據的流向。從而來測試數據的正確性。當然這種方法需要測試人員本人對oracle資料庫的日誌很熟悉,水平很高,對數據表結構也有大體的了解。目前我還沒有做到這一點,這是我今後的發展方向。
2、介面數據的測試方法。這個方法也是跟開發人員學習來的。當2個系統之間有介面時,介面傳輸中數據的正確性非常重要。這時候可以將系統1中與介面有關的數據提取出來形成臨時表;將系統2中與介面有關的數據提取出來形成臨時表。比對2個表的介面數據的一致性。通過這種方法可以發現介面數據是否一致。當然,直接在前台看2個系統的數據是否一致也是很好的方法之一。
3、數據測試的統計方法。這個方法可以同方法2組合使用,當一個系統試運行了一段時間後,可以統計系統一個月內或2個月內的數據,查看數據的正確性。因為由於數據流向的復雜性,導致我們測試數據正確性時很難能覆蓋到所有的情況。這時就可以採用統計法來測試。
4、對報表參數的整理測試法。對每個前台頁面需要呈現的或生成的參數,整理一個計算方法。即此參數與後台哪些表相關,是怎麼生成的。我們測試人員需要對前台呈現的每個參數都明白他的數據流向,但是有時候在文檔不起全的情況下,沒辦法明白整個的測試流程。所以需要我們自己進行每個參數的數據流向整理。
上面是總結的4條測試方法,可能還不齊全,希望大家一起來補充。還有一點是當頁面查詢沒有任何數據時,這時候一定要弄清楚為什麼沒有任何數據,是不是有bug才沒有數據的。好了,嘮叨這么多。希望大家多提建議吧。
㈤ 資料庫測試的介紹
資料庫測試是依據資料庫設計規范對軟體系統的資料庫結構、數據表及其之間的數據調用關系進行的測試。