一、基于阿里云部署
(一)先了解整個(gè)阿里云部署的整體框架,系統(tǒng)知識,如服務(wù)器ECS,負(fù)載均衡SLB,路由器,交換機(jī),redis,云數(shù)據(jù)庫等
負(fù)載均衡,英文名稱為Load Balance,其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行(我理解是:負(fù)載均衡會(huì)根據(jù)服務(wù)器的各種情況,隨機(jī)把請求給一個(gè)服務(wù)器)
redis:我的理解是相當(dāng)于一個(gè)中介。比如app發(fā)送一個(gè)請求,先去redis看下有無這個(gè)結(jié)果數(shù)據(jù)。如果有的話 ,就直接取redis的數(shù)據(jù)回來,不會(huì)再訪問數(shù)據(jù)庫了。因?yàn)閿?shù)據(jù)庫是保存在硬盤上,讀取數(shù)據(jù)庫數(shù)據(jù)比較慢,所以用了redis,還可以加快訪問速度
(二)做出基本方案,類似如下
負(fù)載均衡可以對應(yīng)多個(gè)端口號,服務(wù)器中可以同時(shí)部署多個(gè)項(xiàng)目(只要端口不沖突就行)

(三)購買服務(wù)器,負(fù)載均衡等
1、購買服務(wù)器ECS
到阿里云購買云服務(wù)器 ECS。選了最便宜的套餐:CPU: 1核 / 內(nèi)存: 1024 MB / 帶寬:1Mbps / 操作系統(tǒng): CentOS 7.0購買環(huán)節(jié)會(huì)設(shè)置 ssh 登陸密碼,記下密碼。登陸到阿里云,查看購買的實(shí)例。注意公網(wǎng) IP,下一步會(huì)用到

2、購買負(fù)載均衡SLB,另外可根據(jù)項(xiàng)目情況,決定是否購買云數(shù)據(jù)庫,或者自己安裝等
(四)登錄服務(wù)器ECS
打開 Terminal, 輸入 ssh root@公網(wǎng)IP 登陸服務(wù)器。首次登陸會(huì)詢問公鑰,yes 即可。關(guān)于 ssh 登陸,具體可以看SSH原理與運(yùn)用http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 這篇文章

(五)環(huán)境部署
1、上傳文件到Linux云主機(jī):
本地系統(tǒng)為Windows系統(tǒng),可以使用命令安裝 yum -y install lrzsz,運(yùn)行 rz ,會(huì)自動(dòng)打開一個(gè)Windows窗口,選擇你要上傳到服務(wù)器的文件,點(diǎn)擊確定。ls 看一下,這個(gè)文件已經(jīng)在你的目錄下
本地系統(tǒng)為mac系統(tǒng),打開終端,使用命令scp或者ftp
服務(wù)器端口號為默認(rèn)的22:scp 文件名稱 root@ip地址:
服務(wù)器端口號非22:scp -p 端口號 文件名稱 root@ip地址:
2、部署redis
可參考Redis的部署和啟動(dòng) https://yq.aliyun.com/articles/38257
3、部署JDK+tomcat+jenkis等
可參考百人計(jì)劃成員的文章阿里云服務(wù)器環(huán)境部署JDK+Tomcat+Jenkins+Maven+Python+Git http://www.itdecent.cn/p/0e67b4545d08
4、根據(jù)方案配置端口
1)如果是tomcat,在cd tomcat/conf目錄下的文件server.xml中配置端
2)如果是java等代碼,則在代碼里面的配置文件中配置即可(跟開發(fā)了解具體的配置)
5、在阿里云配置SLB端口
6、配置路由等
7、啟動(dòng)項(xiàng)目腳本配置(因?yàn)橛袝r(shí)候開發(fā)給的是開發(fā)環(huán)境的配置,我們要改為測試環(huán)境的才可以),也是我們說的發(fā)布測試環(huán)境的項(xiàng)目
二、測試與數(shù)據(jù)庫,linux的簡單打交道
因?yàn)?9%的軟件,處理的數(shù)據(jù)最終是需要落地,到數(shù)據(jù)庫或者文件里的,我們必須知道是數(shù)據(jù)本身的問題,還是處理數(shù)據(jù)的過程出了問題。在測試過程中會(huì)出現(xiàn)一些諸如session過期、數(shù)值校驗(yàn)、參數(shù)傳遞錯(cuò)誤等現(xiàn)象,知道開發(fā)的規(guī)則,是更好掌握測試結(jié)果的充分條件。
所以,建議測試都能拿到測試環(huán)境的賬號等,其實(shí)最嚴(yán)格的來說,開發(fā)是不能動(dòng)測試環(huán)境的,測試環(huán)境由測試人員掌管,但是看公司部門和測試人員的具體情況
(二)測試與數(shù)據(jù)庫的簡單打交道
1、測試通過查看表結(jié)構(gòu),快速定位問題
如發(fā)布評論功能,需求定義可以輸入文字200個(gè),但最后你發(fā)布成功之后,只顯示了100個(gè)字,剩余的100字不見了。這時(shí)候直接跟開發(fā)說?
====先查看表結(jié)構(gòu),看是否是字段的長度設(shè)置的不夠,如下圖,升級表中,升級內(nèi)容的長度是100,是絕對不夠的

2、驗(yàn)證數(shù)據(jù)的正確性
對數(shù)據(jù)庫的數(shù)據(jù)正確性的檢查,如時(shí)間的檢查。
比如一個(gè)活動(dòng),結(jié)束時(shí)間,你填的是2017/7/1.但是存到數(shù)據(jù)庫中是2017/7/1 00:00:00,這就代表你在2017/7/1號已經(jīng)看到這個(gè)活動(dòng)了=========正確是要存為2017/7/1 23:59:59

3、查看linux下的日志和數(shù)據(jù)庫結(jié)合起來看的一個(gè)例子
你在APP中發(fā)現(xiàn)有2條重復(fù)記錄,這時(shí)候你去數(shù)據(jù)庫查,數(shù)據(jù)庫中只有1條記錄,這時(shí)候能看日志的,就去看下日志返回了幾條記錄
用tail -f 日志文件名稱 | grep '關(guān)鍵詞1'|grep '關(guān)鍵詞2'
具體關(guān)鍵詞,可以平時(shí)多看接口文檔
4、通過日志和數(shù)據(jù)庫進(jìn)行測試
如配置了排序規(guī)則,通過關(guān)鍵字查看(tail -f ?a.log|grep '關(guān)鍵字a'),看到后臺返回的排序是[431, 433, 449, 434, 442, 443, 444, 432]
此時(shí)根據(jù)需求去查看正確的排序
(二)測試與服務(wù)器linux的簡單打交道
1、部署項(xiàng)目,有tomcat,java的;查看項(xiàng)目是否啟動(dòng)(***為需要查找的進(jìn)程名稱)ps -ef|grep ***
2、查看日志,尤其是報(bào)錯(cuò)日志(如內(nèi)部錯(cuò)誤等):tail -f error.log;也可以查看前端上傳的數(shù)據(jù),后端返回的數(shù)據(jù)是否有錯(cuò)
如有腳本沒有跑,會(huì)報(bào)錯(cuò):
3、發(fā)布測試環(huán)境的項(xiàng)目,一般是直接發(fā)布腳本,腳本是以.sh結(jié)尾的,發(fā)布操作,直接./腳本文件
現(xiàn)在有一種是直接發(fā)布腳本,腳本中會(huì)把最新代碼pull下來,這個(gè)方式是快,而且簡單,只要開發(fā)提交了代碼到相對于的分支即可,但是沒那么安全
一種是打成war包或者rar包,通過解壓之后,配置好部署文件再發(fā)布,這個(gè)方式是比較安全,但是比較麻煩,而且屬于非集成,失誤會(huì)比較多,而且如果是頻繁更新發(fā)布的話,會(huì)比較痛苦
最后的總結(jié):
我的習(xí)慣是:
1、一個(gè)新項(xiàng)目,我會(huì)拿到測試環(huán)境的數(shù)據(jù)庫,服務(wù)器等賬號。因?yàn)槲覀儠簳r(shí)沒有做數(shù)據(jù)庫的文檔,所有會(huì)要求開發(fā)給我大概講下數(shù)據(jù)庫的各種表(這個(gè)有文檔的話,就不用了,可以自己主動(dòng)去了解)
2、對于復(fù)雜功能,要求開發(fā)補(bǔ)充具體的邏輯文檔或者口頭給測試人員說明,防止漏測(這個(gè)覺得適合比較小的公司吧)
3、對于數(shù)據(jù)的更改要慎重,提前跟開發(fā)溝通,免得是更改數(shù)據(jù)導(dǎo)致的bug

