http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
http://blog.csdn.net/wgyscsf/article/details/54783101?winzoom=1
推薦下我用著覺得不錯(cuò)的:Toad:在 Mac App Store 上的內(nèi)容**免費(fèi),可以直接在AppStore下載,支持:Oracle,PostgreSQL,MySQL,MongoDB
DBeaver:http://dbeaver.jkiss.org/**Github開源,免費(fèi);支持主流操作系統(tǒng):Windows,Linux,Mac OS X,Solaris支持所有流行的數(shù)據(jù): MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, Teradata, MongoDB, Cassandra, Redis, etc.
作者:CorningSun鏈接:https://www.zhihu.com/question/20498949/answer/140156456來源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
########################################################################
http://www.cnblogs.com/wangcp-2014/p/6060019.html
http://www.cnblogs.com/star91/p/5059222.html
一、經(jīng)典公式1:
一般來說,利用以下經(jīng)驗(yàn)公式進(jìn)行估算系統(tǒng)的平均并發(fā)用戶數(shù)和峰值數(shù)據(jù)
1)平均并發(fā)用戶數(shù)為 C = nL/T
2)并發(fā)用戶數(shù)峰值 C‘ = C + 3*根號(hào)C
C是平均并發(fā)用戶數(shù),n是login session的數(shù)量,L是login session的平均長度,T是值考察的時(shí)間長度
C’是并發(fā)用戶數(shù)峰值
舉例1,假設(shè)系統(tǒng)A,該系統(tǒng)有3000個(gè)用戶,平均每天大概有400個(gè)用戶要訪問該系統(tǒng)(可以從系統(tǒng)日志從獲得),對(duì)于一個(gè)典型用戶來說,一天之內(nèi)用戶從登陸到退出的平均時(shí)間為4小時(shí),而在一天之內(nèi),用戶只有在8小時(shí)之內(nèi)會(huì)使用該系統(tǒng)。
那么,
平均并發(fā)用戶數(shù)為:C = 4004/8 = 200
并發(fā)用戶數(shù)峰值為:C‘ = 200 + 3根號(hào)200 = 243
舉例2, 某公司為其170000名員工設(shè)計(jì)了一個(gè)薪酬系統(tǒng),員工可進(jìn)入該系統(tǒng)查詢自己的薪酬信息,但并不是每個(gè)人都會(huì)用這個(gè)系統(tǒng),假設(shè)只有50%的人會(huì)定期用該系統(tǒng),這些人里面有70%是在每個(gè)月的最后一周使用一次該系統(tǒng),且平均使用系統(tǒng)時(shí)間為5分鐘。
則一個(gè)月最后一周的平均并發(fā)用戶數(shù)為(朝九晚五):
n = 1700000.50.7/5 = 11900
C= 11900*5/60/8 = 124
吞吐量計(jì)算為:F = Vu * R / T 單位為個(gè)/s
F為事務(wù)吞吐量,Vu為虛擬用戶數(shù)個(gè)數(shù),R為每個(gè)虛擬用戶發(fā)出的請(qǐng)求數(shù),T為處理這些請(qǐng)求所花費(fèi)的時(shí)間
二、通用公式2:
對(duì)絕大多數(shù)場(chǎng)景,我們用(用戶總量/統(tǒng)計(jì)時(shí)間)影響因子(一般為3)來進(jìn)行估算并發(fā)量。
比如,以乘坐地鐵為例子,每天乘坐人數(shù)為5萬人次,每天早高峰是7到9點(diǎn),晚高峰是6到7點(diǎn),根據(jù)8/2原則,80%的乘客會(huì)在高峰期間乘坐地鐵,則每秒到達(dá)地鐵檢票口的人數(shù)為5000080%/(36060)=3.7,約4人/S,考慮到安檢,入口關(guān)閉等因素,實(shí)際堆積在檢票口的人數(shù)肯定比這個(gè)要大,假定每個(gè)人需要3秒才能進(jìn)站,那實(shí)際并發(fā)應(yīng)為4人/s*3s=12,當(dāng)然影響因子可以根據(jù)實(shí)際情況增大!
三、根據(jù)PV計(jì)算公式:
比如一個(gè)網(wǎng)站,每天的PV大概1000w,根據(jù)2/8原則,我們可以認(rèn)為這1000w pv的80%是在一天的9個(gè)小時(shí)內(nèi)完成的(人的精力有限),那么TPS為:
1000w80%/(93600)=246.92個(gè)/s,取經(jīng)驗(yàn)因子3,則并發(fā)量應(yīng)為:
246.92*3=740
四、根據(jù)TPS估計(jì):
公式為 C = (Think time + 1)*TPS
五、根據(jù)系統(tǒng)用戶數(shù)計(jì)算:
并發(fā)用戶數(shù) = 系統(tǒng)最大在線用戶數(shù)的8%到12%
######################################################################
###################################################################################
新產(chǎn)品自動(dòng)化測(cè)試方案和計(jì)劃 Test Plan
01
梳理新產(chǎn)品自動(dòng)化的核心業(yè)務(wù)模塊和一些數(shù)據(jù)業(yè)務(wù) 包括夜審 價(jià)格算法 和房量算法
02
使用SQL語句和業(yè)務(wù)腦圖 梳理清楚 核心模塊的 業(yè)務(wù)流程用例
03
使用Python SQL 開發(fā)和實(shí)現(xiàn) 業(yè)務(wù)核心的自動(dòng)化 用例
04
05
使用自動(dòng)化 用例 集成CI Jenkins 對(duì)核心業(yè)務(wù)進(jìn)行驗(yàn)證
JMeter 核心接口壓力測(cè)試 壓測(cè)
################################################################################### 日志測(cè)試SQL語句##############
use log_dev database, change your table name and timestamp day value, and excute it **
select log_cd,func_cd,log_dhms from log_operate_1709 where created_date >= to_timestamp('2017-09-11', 'yyyy-mm-dd')****and log_cd <> '日志類型' order BY created_date DESC;****select log_cd,func_cd,log_dhms,infurl,infnm from log_pdt_data_1709 where created_date >= to_timestamp('2017-09-11', 'yyyy-mm-dd')****and log_cd <> '日志類型' ORDER BY created_date DESC;
--testing log SQL statementsselect log_cd,func_cd,log_dhms,from_ip from log_operate_1709 where created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd')and log_cd <> '日志類型' order BY created_date DESC;select log_cd,func_cd,log_dhms,infurl,infnm,from_ip from log_pdt_data_1709 where created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd')and log_cd <> '日志類型' ORDER BY created_date DESC;--count log_operate_1709 and log_pdt_data_1709 tables current date record select count(log_cd) from log_operate_1709 where log_cd <> '日志類型' and created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd');select count(log_cd) from log_pdt_data_1709 where log_cd <> '日志類型' and created_date >= to_timestamp('2017-09-14', 'yyyy-mm-dd');
#################################################################################################################
白盒測(cè)試 需求用例 名詞解釋 houseblock鎖房 RT+ 只改房含 RT 不管改不改房含 只要改了房價(jià) noshow 預(yù)定未到 結(jié)賬folio 就是結(jié)賬賬單-已結(jié)賬下面 下個(gè)+下面的****001.房價(jià)=====================================================每日房價(jià)記錄數(shù)與住店時(shí)間一致houseblock記錄數(shù)與住店時(shí)間一致每日收取的房含要出現(xiàn)在每日房含表中的每一天,首日房含只能出現(xiàn)在首日一期所有每日房價(jià)的價(jià)格代碼、折扣一樣RT+只能有一套房含RT只能有一套房含,且每日價(jià)格設(shè)定一樣
002.預(yù)訂=====================================================沒有來期大于等于今日的noshow賬戶沒有離期小于今日的在店賬戶沒有來期小于今日的預(yù)訂賬戶沒有來期大于今日的在店賬戶每個(gè)賬戶至少有一個(gè)住店客人,且賬戶表里的住店客人ID對(duì)應(yīng)的存在每個(gè)賬戶只能有一個(gè)預(yù)訂人,且賬戶表里的預(yù)訂人ID對(duì)應(yīng)的存在
003.賬務(wù)====================================================客賬交易金額與賬務(wù)明細(xì)金額一致,12個(gè)細(xì)項(xiàng)金額也一致賬單的余額為0已結(jié)賬戶余額為0結(jié)賬folio里的幾個(gè)金額與明細(xì)一致轉(zhuǎn)賬folio里的幾個(gè)金額與明細(xì)一致
004.客房====================================================空房態(tài)沒有在店賬戶占用房態(tài)必有在店賬戶維修房態(tài)有對(duì)應(yīng)的維修記錄
houseblock
###################################################################
白盒測(cè)試 by 20170622****房價(jià) housingprice_test001 housingprice_test002 housingprice_test003
1.每日房價(jià)記錄數(shù)與住店時(shí)間一致
SELECT country, SUM( CASE WHEN sex = '1' THEN population ELSE 0 END), --男性人口 SUM( CASE WHEN sex = '2' THEN population ELSE 0 END) --女性人口 FROM Table_A GROUP BY country
2.houseblock記錄數(shù)與住店時(shí)間一致
select * from emp where empno=7369 for update;
3.每日收取的房含要出現(xiàn)在每日房含表中的每一天,首日房含只能出現(xiàn)在首日
select * from emp where empno=7369 for update;
4.一期所有每日房價(jià)的價(jià)格代碼、折扣一樣
select * from emp where empno=7369 for update;
5.RT+只能有一套房含
select * from emp where empno=7369 for update;
6.RT*只能有一套房含,且每日價(jià)格設(shè)定一樣
select * from emp where empno=7369 for update;
7.每日房含12個(gè)分項(xiàng)的合計(jì)與每日房價(jià)的一致
select * from emp where empno=7369 for update;
預(yù)訂 reserve_test001 reserve_test002
1.沒有來期大于等于今日的noshow賬戶
SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='NSW' AND arr_dt>今日
2.沒有離期小于今日的在店賬戶
SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='STY' AND dpt_dt<今日
3.沒有來期小于今日的預(yù)訂賬戶
SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='RSV' AND arr_dt<今日
4.沒有來期大于今日的在店賬戶
SELECT arr_dt,dpt_dt,acct_no,resv_no FROM rsv_account WHERE acct_stus='STY' AND arr_dt>今日
5.每個(gè)賬戶至少有一個(gè)住店客人,且賬戶表里的住店客人ID對(duì)應(yīng)的存在
SELECT resv_no,acct_no,acct_stus FROM rsv_account WHERE acct_stus IN ('RSV','STY','WAT') AND resv_no NOT IN ( SELECT DISTINCT(M.resv_no) FROM rsv_account M INNER JOIN rsv_account_guest D ON M.resv_no=D.resv_no AND M.acct_no=D.acct_no WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='RE' ORDER BY M.resv_no)
6.每個(gè)賬戶只能有一個(gè)預(yù)訂人,且賬戶表里的預(yù)訂人ID對(duì)應(yīng)的存在
(SELECT guest_id FROM rsv_account m INNER JOIN rsv_account_guest d ON m.resv_no=d.resv_no AND m.bkguest_id=d.guest_id WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='BK' ORDER BY m.resv_no,d.acct_no)
SELECT acct_stus,resv_no,acct_no FROM rsv_account WHERE acct_stus IN ('RSV','STY','WAT') AND acct_no IN ( SELECT d.acct_no FROM rsv_account m INNER JOIN rsv_account_guest d ON m.resv_no=d.resv_no AND m.acct_no=d.acct_no WHERE acct_stus IN ('RSV','STY','WAT') AND guest_flg='BK' GROUP BY d.acct_no HAVING COUNT(*)>1)
賬務(wù) financial_test001 financial_test002
1.客賬交易金額與賬務(wù)明細(xì)金額一致,12個(gè)細(xì)項(xiàng)金額也一致
金額一致:
SELECT * from (SELECT mtrn_id,SUM(trntot_amt) as amt1 FROM hpt_fin_transaction GROUP BY mtrn_id) A, (SELECT trn_id,SUM(trn_amt) as amt2 FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='REVN' GROUP BY trn_id) B WHERE A.mtrn_id=B.trn_id AND amt1<>amt2
細(xì)項(xiàng)一致:
SELECT * FROM (SELECT mtrn_id,acct_no,room_num,trn_cd,trn_drpt,trntot_amt AS amt1,trn_net+trn_tax1+trn_tax2+trn_tax3+trn_tax4+trn_tax5+trnsvc_net+trnsvc_tax1+trnsvc_tax2+trnsvc_tax3+trnsvc_tax4+trnsvc_tax5 AS amt2 FROM hpt_fin_transaction) A WHERE A.amt1<>A.amt2
2.賬單的余額為0
SELECT acct_no,bill_no,SUM(trntot_amt) from hpt_fin_transaction WHERE COALESCE(bill_no,'')<>'' GROUP BY acct_no,bill_no HAVING SUM(trntot_amt)>0 ORDER BY acct_no
3.已結(jié)賬戶余額為0
SELECT a.acct_no,SUM(trntot_amt) from rsv_account a LEFT JOIN hpt_fin_transaction t ON a.acct_no=t.acct_no WHERE a.acct_stus='OUT' GROUP BY a.acct_no HAVING SUM(trntot_amt)>0
4.結(jié)賬folio里的幾個(gè)金額與明細(xì)一致
SELECT F.acct_no,F.folio_no,credit_amt,debit_amt,check_amt,T.acct_no,T.bill_no,T.normal,trnamt FROM hpt_fin_folio F LEFT JOIN (SELECT acct_no,bill_no,normal,sum(trntot_amt) AS trnamt FROM hpt_fin_transaction WHERE bill_no<>'' GROUP BY acct_no,bill_no,normal ORDER BY acct_no,bill_no) T ON F.acct_no=T.acct_no AND F.folio_no=T.bill_no WHERE F.folio_typ='BILL' AND COALESCE(credit_amt,0)<>COALESCE(debit_amt,0) OR CASE T.normal WHEN 'C' THEN COALESCE(debit_amt,0)<>trnamt WHEN 'D' THEN COALESCE(credit_amt,0)<>trnamt ELSE 1=1 END
5.轉(zhuǎn)賬folio里的幾個(gè)金額與明細(xì)一致
SELECT F.acct_no,F.folio_typ,F.folio_no,credit_amt,debit_amt,check_amt,J.trn_amt from hpt_fin_folio F LEFT JOIN (SELECT acct_no,pkgfolio_no,sum(trn_amt) AS trn_amt FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='MOVE' GROUP BY acct_no,pkgfolio_no ORDER BY acct_no,pkgfolio_no) J ON F.acct_no=J.acct_no AND F.folio_no=J.pkgfolio_no WHERE F.folio_typ='MVIN' OR F.folio_typ='MVOUT' AND (COALESCE(credit_amt,0)+COALESCE(debit_amt,0)<>COALESCE(check_amt,0) OR COALESCE(check_amt,0)<>COALESCE(trn_amt,0))
SELECT F.acct_no,F.folio_typ,F.folio_no,credit_amt,debit_amt,check_amt,J.normal,J.trn_amt from hpt_fin_folio F LEFT JOIN (SELECT acct_no,pkgfolio_no,normal,sum(trn_amt) AS trn_amt FROM hpt_fin_transaction_jrnl WHERE jrnl_typ='MOVE' GROUP BY acct_no,pkgfolio_no,normal ORDER BY acct_no,pkgfolio_no,normal) J ON F.acct_no=J.acct_no AND F.folio_no=J.pkgfolio_no WHERE F.folio_typ='MVIN' OR F.folio_typ='MVOUT' AND CASE J.normal WHEN 'C' THEN COALESCE(credit_amt,0)<>J.trn_amt WHEN 'D' THEN COALESCE(debit_amt,0)<>J.trn_amt ELSE 1=1 END
客房 hotelroom_test001 hotelroom_test002
1.空房態(tài)沒有在店賬戶
SELECT arr_dt,dpt_dt,resv_no,acct_no,room_num FROM rsv_account WHERE acct_stus='STY' AND room_num IN (SELECT room_num FROM hpt_hk_room WHERE fo_room_stus='V')
2.占用房態(tài)必有在店賬戶
SELECT arr_dt,dpt_dt,resv_no,acct_no,room_num FROM rsv_account WHERE acct_stus='STY' AND room_num IN (SELECT room_num FROM hpt_hk_room WHERE fo_room_stus<>'O')
3.維修房態(tài)有對(duì)應(yīng)的維修記錄
SELECT room_num FROM hpt_hk_room WHERE room_stus='OOO' AND room_num NOT IN (SELECT room_num FROM hpt_hk_room_repair WHERE repair_typ='OOO' AND start_dt<=當(dāng)日 AND end_dt>=當(dāng)日)
PMS Clean SQL Statements
####################delete clean all data################
delete from grp_crm_corp;
delete from grp_crm_corp_address;
delete from grp_crm_corp_blacklist;
delete from grp_crm_corp_contact;
delete from grp_crm_corp_contactway;
delete from grp_crm_corp_contract;
delete from grp_crm_corp_manageunit;
delete from grp_crm_corp_notice;
=====================================================delete from grp_crm_profile;
delete from grp_crm_profile_address;
delete from grp_crm_profile_blacklist;
delete from grp_crm_profile_certificate;
delete from grp_crm_profile_class;
delete from grp_crm_profile_company;
delete from grp_crm_profile_contactway;
delete from grp_crm_profile_notice;
#############################################################################################################
delete from hpt_fin_folio;
delete from hpt_fin_transaction;
delete from hpt_fin_transaction_jrnl;
delete from rsv_account;
delete from rsv_account_guest;
delete from rsv_account_package;
delete from rsv_account_package_price;
delete from rsv_account_rate;
delete from rsv_account_rate_copy;
delete from rsv_account_roomrequest;
delete from rsv_houseblock;
update hpt_hk_room set room_stus='V',clean_stus='C',fo_room_stus='V'
**悲觀鎖(Pessimistic Lock)/ **樂觀鎖(Optimistic Lock) : ******悲觀鎖(Pessimistic Lock) 每次獲取數(shù)據(jù)的時(shí)候,都會(huì)擔(dān)心數(shù)據(jù)被修改,所以每次獲取數(shù)據(jù)的時(shí)候都會(huì)進(jìn)行加鎖,確保在自己使用的過程中數(shù)據(jù)不會(huì)被別人修改,使用完成后進(jìn)行數(shù)據(jù)解鎖。由于數(shù)據(jù)進(jìn)行加鎖,期間對(duì)該數(shù)據(jù)進(jìn)行讀寫的其他線程都會(huì)進(jìn)行等待。
樂觀鎖(Optimistic Lock):****每次獲取數(shù)據(jù)的時(shí)候,都不會(huì)擔(dān)心數(shù)據(jù)被修改,所以每次獲取數(shù)據(jù)的時(shí)候都不會(huì)進(jìn)行加鎖,但是在更新數(shù)據(jù)的時(shí)候需要判斷該數(shù)據(jù)是否被別人修改過。如果數(shù)據(jù)被其他線程修改,則不進(jìn)行數(shù)據(jù)更新,如果數(shù)據(jù)沒有被其他線程修改,則進(jìn)行數(shù)據(jù)更新。由于數(shù)據(jù)沒有進(jìn)行加鎖,期間該數(shù)據(jù)可以被其他線程進(jìn)行讀寫操作。 適用場(chǎng)景:
悲觀鎖:比較適合寫入操作比較頻繁的場(chǎng)景,如果出現(xiàn)大量的讀取操作,每次讀取的時(shí)候都會(huì)進(jìn)行加鎖,這樣會(huì)增加大量的鎖的開銷,降低了系統(tǒng)的吞吐量。
樂觀鎖:比較適合讀取操作比較頻繁的場(chǎng)景,如果出現(xiàn)大量的寫入操作,數(shù)據(jù)發(fā)生沖突的可能性就會(huì)增大,為了保證數(shù)據(jù)的一致性,應(yīng)用層需要不斷的重新獲取數(shù)據(jù),這樣會(huì)增加大量的查詢操作,降低了系統(tǒng)的吞吐量。
總結(jié):兩種所各有優(yōu)缺點(diǎn),讀取頻繁使用樂觀鎖,寫入頻繁使用悲觀鎖。houseblock
** 提交BUG主要 COVER 以下三方面BUG######################################################
前端功能BUG — pangtao 開BUG類型選擇功能BUG
**后端借口BUG **** — zhaoxiang **開BUG類型選擇接口BUG****
**UI設(shè)計(jì)BUG ** — yangxuelian **開BUG類型選擇設(shè)計(jì)BUG******
################################################################################################這個(gè)文檔主要是 jdk, eclipse/eclipse plugging,maven 和后端代碼示例的配置和開發(fā)使用. owner is liubowen.
1.Install JDK Set env and Unzip eclipse and add pluggings
2 Tomcat and openexper plugging
3、按照培訓(xùn)資料配置eclipse中maven插件(maven本地庫從 \192.168.20.200\cshispublic\劉博文\JAVA示例工程\ 中獲取m2.rar,并解壓)
4 import java priject to eclipse
- following Training and config projects
6、解壓縮zookeeper-3.4.8.rar,并運(yùn)行其中zookeeper-3.4.8\bin下的zkServer.cmd7、解壓縮redis64-2.6.12.1.rar,并使用“redis-server.exe redis.conf”命令運(yùn)行8、解壓縮apache-tomcat-7.0.27.rar,按照培訓(xùn)在eclipse中配置相應(yīng)tomcat插件,并運(yùn)行9、若tomcat中配置的上下文為/jwBsWeb,則訪問http://127.0.0.1:8080/jwBsWeb/login.do,登錄名密碼為admin\1
10 ,install and use git.