1. 軟件測試的目的與原則是什麼?
目的:
A. 通過測試工作可以發現並修復軟件當中存在的缺陷,
B. 可以降低同產品開發遇到的風險,
C. 記錄軟件運行過程中的一些數據,從而爲決策者提供技術支持。
原則:
A. 缺陷集羣性,2/8定律:核心功能佔20%,非核心佔80%,我們會集中測試20%的核心功能,發現缺陷的機率會高於80%,因此,遇到的缺陷都會集中20%功能模塊裏。
B. 窮盡測試是不可能的:有些功能是無法將所有測試情況邏輯出來的,任何的測試都有結束的時間。
C. 測試需要儘早介入:爲了更好地發現和解決軟件中的缺陷。
D. 殺蟲劑悖倫:同樣的一個測試用例不能重複執行多次,不然軟件會對它產生免疫
E. 測試顯示軟件存在缺陷
F. 測試活動依賴於測試內容:某些測試需要依賴於特殊的環境
G. 沒有錯誤是好是謬論:任何軟件都不可能是完美的
2. 測試人員在測試中的任務是什麼?
A. 儘早的找出系統當中的Bug
B. 避免軟件開發過程中缺陷的出現
C. 確保缺件的質量
D. 關注用戶的需求,並保證系統符合用戶需求
3. 缺陷報告內容包括什麼?
A. Bug的優先級
B. Bug的嚴重程度
C. 開發的接口人員,與Bug產生對應的軟件版本
D. Bug可能屬於的模塊。如果不能確認,可以由開發人員來判讀
E. Bug標題,需要清晰的描述現象
F. Bug描述,需要儘量給出新的Bug步驟
G. Bug附件中能給出相關的日誌與截圖
4. 請您描述一下測試的V模型?
用戶需求-需求分析-概要設計-詳細設計-編碼-單元測試-集成測試-系統測試-驗收測試
5. 性能測試關注的指標是什麼?
- 用戶數
①註冊用戶數
註冊用戶數指軟件中已經註冊的用戶,這些用戶是系統的潛在用戶,隨時都有可能上線。這個指標的意義在於讓測試工程師瞭解系統數據中的數據總量和系統最大可能有多少用戶同時在線。
②在線用戶數
在線用戶數是指某一時刻已經登錄系統的用戶數量。在線用戶數只是統計了登錄系統的用戶數量,這些用戶不一定都對系統進行操作,對服務器產生壓力。
③併發用戶數
不同於在線用戶數,併發用戶數是指某一時刻向服務器發送請求的在線用戶數,他是衡量服務器併發容量和同步協調能力的重要指標,從這個含義上講,我們可能會如下兩種理解:
同一時刻向服務器發送相同或者不同請求的用戶數,也就是說,既可以包括對某一業務的相同請求,也可以包括對多個業務的不同請求
同一時刻向服務器發送相同請求的用戶數,僅限於某一業務的相同請求 - 事務的響應時間
事務是指用戶在客戶端做一種或多種業務所做的操作集,事務的響應時間就是衡量用戶執行這些操作集所花費的時間。在性能測試中,一般通過計算事務的開始時間和結束時間的差值來獲取事務的響應時間。
一個事務表示一個“從用戶發送請求->web server接受到請求,進行處理-> web server向DB獲取數據->生成用戶的object(頁面),返回給用戶”的過程,一般的響應時間都是針對事務而言的。 - 每秒點擊數
每秒點擊數是指每秒鐘像web服務器提交的HTTP請求數,它是衡量服務器處理能力的一個常用指標。需要注意的是,這裏的相應時間並非鼠標的一次單擊操作,因爲在一次單擊操作中,客戶端可能向服務器發出多個HTTP請求,切勿混淆。 - 吞吐率
吞吐率通常指單位時間內從服務器返回的字節數,也可以單位時間內客戶提交的請求數。吞吐率是大型web系統衡量自身負載能力的一個重要指標,一般來說,吞吐率越大,單位時間內處理的數據就越多,系統的負載能力也強。吞吐率與很多因素有關,服務器的硬件配置,網絡的寬帶及拓撲結構,軟件的技術架構等。 - 業務成功率
指多用戶對某一業務發起操作的成功率。例如,測試網絡訂票系統的併發處理性能,在早上8:00——8:30半小時的高峯裏,要求能支持10萬比訂票業務,其中成功率不少於98%。也就是說系統允許200筆訂票業務超時或者因其他原因導致未能訂票成功。 - TPS - 吞吐量
TPS表示服務器每秒處理的事務數,他是衡量系統處理能力的一個非常重要的指標,在性能測試中,通過檢測不同用戶的TPS,可以估算出系統處理能力的拐點。 - 資源利用率
資源利用率就是指資源的使用情況
CPU使用率70%—80%,內存使用率80%以下
網絡帶寬利用率 100Mbps=12.5MB/s - QPS - 查詢率
QPS:每秒查詢率,因特網上經常用每秒查詢率來衡量域名系統服務器的機器的能。
對應請求數/sec,即每秒的響應請求數,也即是最大吞吐能力。 - 錯誤率:一批請求中結果出錯的請求所佔比例。
6. Bug不能復現怎麼辦?
A. 首先考慮環境問題,看是否能夠還原原來的環境
B. 遇到問題就要提,不能放過任何一個Bug,在提交的Bug描述中加上一句話,那就是復現概率,嘗試20次,出現一次或嘗試10次,交給開發,開發會根據Bug的復現概率,調整改Bug的優先級。
C. 儘量回想發生問題時的復現步驟,不要漏掉任何一個細節,按照步驟的組合嘗試復現
D. 與開發人員配合,讓開發人員對相應的代碼檢查,看是否通過代碼層面檢查出問題。
7. 什麼是Http協議,請求方法是什麼?Http協議與Https協議的區別?
Http協議:又叫超文本傳輸協議,是定義了一個客戶端到服務器請求與應答的標準。
請求方法:get、post、head、delete、put、peach
HTTPS協議:以安全爲目標的HTTP通道,簡稱Http的安全版。
HTTPS與HTTP的區別:
A. http協議需要ca申請證書,一般免費證書較少,需要一定費用。
B. http的鏈接簡單,是無狀態的,而https協議是由SSL+http協議構建的可進行加密傳輸,身份認證的網絡協議要比HTTP協議安全。
C. http協議是超文本協議,又叫明碼傳輸,而https是具有安全性的SSL加密傳輸協。
D. http協議與HTTps協議使用的鏈接方式不同,一個用的端口是80(http),一個是443(https)。
8. get請求與post請求的區別?
- Get是不安全的,因爲在傳輸過程,數據被放在請求的URL中;Post的所有操作對用戶來說都是不可見的。
- Get傳送的數據量較小,這主要是因爲受URL長度限制;Post傳送的數據量較大,一般被默認爲不受限制。
- Get限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。
- Get執行效率卻比Post方法好。Get是form提交的默認方法。
9. 重載與重寫的區別?
重載是發生同一個類中,方法名相同,參數列表(列表類型,參數個數,或者二者接不同)卻不同,與返回值無關。
重寫是發生在父類與子類之間,子類的重寫方法必須與父類的重寫方法聲明完全相同,有相同的返回值類型,比父類的重寫方法更好訪問。
10. APP測試與Web測試的區別?
相同點:
同樣的測試用例方法相同。
同樣的測試方法:都會依據原型圖或效果圖來檢查UI。
測試應用系統的穩定性。
不同點:
A. app測試平臺:百度雲測,testin雲測不同。
B. App的安裝卸載:全新安裝,升級安裝,第三方工具安裝,第三方工具卸載,直接卸載刪除,消息推送測試,手機授權測試,前後臺切換,網絡環境(wifi/2G/3G/4G/無網絡)。
C. App的中斷測試:來電中斷,短信中斷,藍牙,鬧鐘,拔插數據線,手機鎖定,手機斷電,手機問題(系統死機重啓)。
D. 兼容性測試:Web項目考慮不同瀏覽器的兼容,app需要考慮手機不同的操作系統,不同機型,不同屏幕等。
E. 網路測試:不同網絡與運營商,目前我國有三大運營商如:電信,移動,聯通,不同的網絡制式,如:GSM,CDMA,3G等,在不好或無網絡的情況下的APP行爲。
11. BS/CS架構的區別是什麼?
概念:所謂的架構就是用來指導我們軟件開發的一種思維,目前最常見的就是BS/CS。
B -- browser 瀏覽器
C -- client 客戶端
S -- server 服務端
區別:
A. 標準:相對於C/S架構來說B/S架構的兩端都是使用現成的成熟產品,B/S會顯示的標準一些。
B. 效率:相對於B/S架構來說C/S中的客戶端可以分擔一些數據的處理,執行效率會高一些。
C. 安全:B/S架構當中得到數據的傳輸都是以Http協議進行傳輸的,而Http協議又是明文輸出。可以被抓包,那麼B/S架構相比C/S架構顯得就不那麼安全了
D. 升級:B/S架構只需要在服務器端將數據進行更新,前臺只需要刷新頁面就可以升級,而C/S架構必須要將兩端都進行更新纔可以。
E. 開發成本:相對於B/S架構來說C/S當中的客戶端需要自己開發,B/S不用,所以說C/S成本會高一些。
12. 舉例說一下你的接口測試是怎麼做的?
- 下單這個接口用的是http協議,使用post請求方式,發送給服務器的參數有token,產品ID,購買數量,收貨人地址等等,這些參數都是必傳的參數。
- 我們是使用Jmeter來做接口測試的,首先,要新建一個線程組,在線程組下面添加一個http的請求,然後填寫好服務器地址,接口路徑,請求方式,請求參數。
- 由於下單的接口依賴於登錄,所以我們會先調用登錄接口,從中獲取token值,在下單接口中使用
${參數名}
的方式引用,接下來還要對其他參數進行參數化,構造各種正常和異常的數據,我們先在本地創建一個txt文檔,把參數填寫到文檔裏面,在Jmeter中添加一個csv文件設置,填寫好txt文檔的路徑,然後在請求參數中使用Json提取器把token值關聯出來,然後在下單接口中使用${參數名}的方式引用;接下來添加斷言,檢查服務器返回的結果和預期結果是不是一致的。 - 最後,添加查看結果樹查看測試結果。
13. Android手機和IOS手機,系統有什麼區別?
A. 運行機制不同:IOS採用的是沙盒運行機制,安卓採用的是虛擬機運行機制
B. 兩者後臺制度不同:IOS中任何第三方程序都不能在後臺運行,安卓中任何程序都能在後臺運行,直到沒有內存纔會關閉
C. IOS中用於UI指令權限最高,安卓中數據處理指令權限最高
14. 缺陷引起原因
- 軟件結構複雜
- 編碼問題
- 使用新技術
- 需求不明確或者更改需求
- 項目週期短,時間緊迫
15.接口測試流程?
項目啓動後,測試人員儘早找開發人員拿到接口文檔,獲取接口文檔後進行接口用例的編寫和調試,完成後部署到持續集成的測試環境中,進行接口的日常監控,定期對接口腳本的維護更新,接口異常的處理。
16. 你以前工作時的測試流程是什麼?(自己編寫,結合表格)
先要有需求評審(有開發人員---產品經理---測試人員---項目經理)需求確定(出一份確定好的需求文檔)開發設計文檔(開發人員在開始寫代碼前就能夠輸出設計文檔)制定測試計劃---寫出測試用例---發給開發人員與測試經理看一下---接到測試版本---執行測試用例---提交Bug---交給開發人員修改---迴歸測試。
17. 當你參加評審時,你的評審原則是什麼?
首先要從正確性,一致性,可行性,必要性,可跟蹤性,分配優先級,可測性,可修改性考慮:
正確性:每一條需求都必須準確的陳述其要開發的功能。
一致性:必須與其他軟件需求或高層需求不相矛盾。
可行性:其每一項需求都必須是已係統和環境的權能和限制範圍可以來實施的。
必要性:每項需求都是用來授權你編寫文檔的“根源”,要使每項需求都能回潮至某項客戶的輸入。
可測性:每項需求都能通過設計測試用例或其他的驗證方法來進行測試。
可修改性:每項需求只應在SRS中出現一次,這樣更改會容易保持一致性。
可跟蹤性:在每項軟件需求與它的根源與設計元素,源代碼,測試用例之間建立起鏈接,而這種可跟蹤性要求每項需求都必須以一種結構化的,粒度好(fine-grained)的方式編寫
分配優先級:應當對所有的需求分配優先級,如把所有需求都看作同樣重要,那麼項目管理者在開發或節省預算或調度中喪失控制自由度
18.軟件測試的需求標準是什麼?
A. 文檔版本信息:包含文檔版本,作者,完成日期,修訂版需要加上修訂記錄(版本號,修訂者,日期,內容)。
B. 目錄結構要清晰,不同級別的標題要區分字號。
C. 產品架構:一般只有功能以及信息架構,
D. 功能:一級-二級,三級功能要劃出。以及產品特性(功能列表,原型界面,詳細設計)。
19.請寫一下W模型圖
20. 軟件質量的特性是什麼?
A. 功能性:軟件需求要滿足用戶顯示或者穩式的功能。
B. 易用性:軟件易於學習和上手使用。
C. 可靠性:軟件必須實現需求當中指明的具體功能。
D. 效率性:類似於軟件的功能。
E. 可維護性:需求軟件具有將某個功能修復之後繼續使用的功能。
21. 測試計劃工作的目的是什麼?測試計劃文檔的內容包括什麼?
目的:明確測試任務與測試方法,保持測試實施過程的順暢溝通。
內容:測試目的、測試資源、測試範圍、測試風險、人員分工、測試策略、測試準則、測試進度、提交測試文檔。
22. 搭建過什麼環境,搭建工作環境是如何搭建的?
搭建過web測試環境 app測試環境等
個人PC(windows)可以搭建測試環境,但是由於個人PC硬件和軟件的侷限性,我們一般不使用其搭建測試環境,但如果是自己做模擬實驗是沒問題的。但是在企業中我們一般都不使用windows平臺搭建服務器,而是選擇Linux平臺。這是因爲我們經常選擇Linux平臺作爲服務器的操作系統。搭建測試環境
如果你需要搭建的測試環境是剛裝的Linux操作系統,
通常測試環境包括JDK環境,Tomcat環境和MySQL環境
下邊是安全配置的步驟,大家可以理解,不用強背...,面試的時候,可以說就從網上找一份文檔,按照文檔進行配置
1.安裝jdk
如果有自帶,先卸載再裝
1.把包複製/usr/local
2.解壓
3.配置環境變量
export JAVA_HOME=/usr/local/jdk1.7.0_71
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
4.檢查java是否安裝成功
java -version
2.安裝tomcat
1.把下載的tomcat包複製/usr/local
2.解壓
3.在tomcat/bin目錄執行startup.sh文件
啓動服務
在瀏覽器中連接:IP:8080
4.如果連接不上,但tomcat又是顯示啓動OK,檢查firewall
路徑爲 /etc/sysconfig/iptables,將8080端口開啓
5.重啓服務
3.安裝數據庫
數據庫一般安裝mysql和oracle多一些
首先下載相應的數據庫安裝包
mysql安裝比較簡單,可以使用源碼安裝,也可以使用yum在線安裝,在這裏簡單地介紹一下yum在線安裝
用yum在線安裝
1. rpm -qa|grep mysql --檢查Linux是否有存在的mysql
2.如果有mysql,卸載
rpm -e --nodeps mysql
3.安裝
yum install mysql-server mysql mysql-dev -y
4.安裝成功後,啓動服務
service mysqld start
service 服務名 restart/start
5.直接輸入mysql 進入到數據庫
以上的只會在乾淨的操作系統上進行安裝,一般來說只需要安裝一次
23. 怎樣保證覆蓋用戶需求
項目開始前,我們會先熟悉需求,畫好流程圖,保證整個流程都覆蓋全面來講解一下自己對測試點的理解,用例編寫完之後,再進行用例的評審,看看測試點有沒有用遺漏,測試場景是否覆蓋完全。
24. 開發環境與測試環境有什麼區別?
開發環境:是在編碼階段,一般我們的代碼基本上都是在開發環境中,不會再生產與測試環境,如操作系統,web服務器,語言環境,php,數據庫等等。
測試環境:項目完成後,找Bug,以及修改Bug。
25. 如果給你購物商城網頁(京東,淘寶等)你會怎樣進行測試?測試哪些主要功能?
A. 首先要先進行需求分析,xmind梳理測試點,編寫案例,案例評審,尋求他人意見,再完善案例,交給其他人檢查。
B. 測試點:如UI,美觀度,易操作型,易理解型方面進行測試。
C. 在考慮功能點,如登陸註冊,添加購物車,下單,付款,發貨,確認收貨,評價。
E. 性能方面:如打開網頁,確認訂單,付款的響應時間等。
F. 兼容性:如支持各種主流瀏覽器,如(EI,360,火狐,谷歌等)。
26.紅包的測試用例?
- 功能:
a)在紅包錢數,和紅包個數的輸入框中只能輸入數字
b)紅包裏最多和最少可以輸入的錢數 200 0.01
c)拼手氣紅包最多可以發多少個紅包 100
d)超過最大拼手氣紅包的個數是否有提醒
e)當紅包錢數超過最大範圍是不是有對應的提示
f)當發送的紅包個數超過最大範圍是不是有提示
g)當餘額不足時,紅包發送失敗
h)在紅包描述裏是否可以輸入漢字,英文,符號,表情,純數字,漢字英語符號,
i)是否可以輸入它們的混合搭配
j)輸入紅包錢數是不是隻能輸入數字
k)紅包描述裏許多能有多少個字符 10個
l)紅包描述,金額,紅包個數框裏是否支持複製粘貼操作
m)紅包描述裏的表情可以刪除
n)發送的紅包別人是否可以領取
o)發的紅包自己可不可以領取 2人
p)24小時內沒有領取的紅包是否可以退回到原來的賬戶
q)超過24小時沒有領取的紅包,是否還可以領取
r)用戶是否可以多次搶一個紅包
s)發紅包的人是否還可以搶紅包 多人
t)紅包的金額裏的小數位數是否有限制
u)可以按返回鍵,取消發紅包
v)斷網時,無法搶紅包
w)可不可以自己選擇支付方式 - 兼容:
a)蘋果,安卓是否都可以發送紅包
b)電腦端可以搶微信紅包
c)界面
d)發紅包界面沒有錯別字
e)搶完紅包界面沒有錯別字
f)發紅包和收紅包界面排版合理,
g)發紅包和收到紅包界面顏色搭配合理 - 安全:
a)對方微信號異地登錄,是否會有提醒 2人
b)紅包被領取以後,發送紅包人的金額會減少,收紅包金額會增加
c)發送紅包失敗,餘額和銀行卡里的錢數不會少
d)紅包發送成功,是否會收到微信支付的通知 - 易用性(有點重複):
a)紅包描述,可以通過語音輸入
b)可以指紋支付也可以密碼支付
27. 寫好測試用例的關鍵 /寫好用例要關注的維度?
- 覆蓋用戶的需求;
- 從用戶使用場景出發,考慮用戶的各種正常和異常的使用場景;
- 用例的顆粒大小要均勻。通常,一個測試用例對應一個場景;
- 用例各個要素要齊全,步驟應該足夠詳細,容易被其它測試工程師讀懂,並能順利執行;
- 做好用例評審,及時更新測試用例。
28.Jmeter的是如何進行測試的?(請您介紹一下Jemeter是如何使用的?Jemeter如何進行壓力測試?)
1.打開JMeter
2.創建線程組
3.設置線程數和循環次數。我這裏設置線程數爲500,循環一次
4.配置元件
5.配置我們需要進行測試的程序協議、地址和端口
6.構造HTTP請求
7.添加HTTP請求頭
8.添加斷言
9.添加察看結果樹
10.添加Summary Report
11.執行測試計劃,執行測試計劃不能用GUI,需要用命令行來執行
12.Web報告
29.Jmeter的連接數據庫
A. 添加需要的驅動
B. 添加jar包
C. 配置JDBC Connection Configuration
D. 添加JDBC Request
30.Jemeter爲什麼要參數化?
- 多用戶登錄的時候,如果不進行參數化就沒演示了。
- 需要使用CSV將參數放到文件,來演示多用戶登陸。
在進行錄製的時候,有可能存在第二個請求的參數是從第一個請求中獲取出來的,需要在第一個請求下,去將參數提取出來,再到第二個請求中進行參數化
31. Jemeter中有哪些常用元件?
面試寶典P140
32. 如果你要進行性能測試,你是如何展開操作的?
A. 確定關鍵業務,關鍵路徑
B. 確定輸入參數以及輸出參數,指定負載測試方案
C. 準備測試環境,完成腳本錄製,或者測試腳本開發,
D. 執行測試,觀察或輸出參數,如(數據吞吐量,響應時間,資源佔有率等)
E. 對測試結果進行分析
33. 自動化測試有了解嗎?自動化測試的工具有哪些?(瞭解)
常用的自動測試框架工具:Selenium、Appium、unittest、pytest等。
34. Selenium元素定位方法有哪些?
通過id、name、class_name、xpath、css_selector、link_text、partial_link_text、tag_name定位元素。
一般,如果有id就使用id,然後使用css或者xpath來定位,當然定位的時候,需要在瀏覽器裏邊安裝firebug firepath來抓取頁面元素對應的xpath信息。
35. 安全性測試包括哪些方面?
用戶驗證,用戶權限管理,系統數據的保護
36.爲什麼要進行抓包?
A. 有些時候公司沒有標準的接口文檔,測試人員只能抓包來獲取接口測試。
B. 抓包可以迅速找到請求,通過抓包可以查看整個請求的過程,以及響應時間,還可以分辨前臺與後臺Bug.
C. 通過抓包,可以查看是否有敏感信息,如(用戶密碼,個人賬戶信息等數據)
37. 一般抓包用什麼工具,怎麼進行抓包?
工具上使用:Fiddler、Charles這兩個工具
Fiddler:
A. 設置Http代理,設置端口號,在手機上設置與fiddler在同一網段上,設置代理ip,設置代理端口,手機上的請求就能獲取到了。
B. 抓取請求查看,可以過濾,找到自己域名下的請求,通過分析請求地址,請求參數,響應結果來查找問題。
Https包怎麼抓?
A. http與Https協議區別在於Https多了一個ssL協議,更加安全,默認端口是443,而http默認端口是80.
B. 抓取Https時,需要獲取申請證書,在fiddler與charles兩個工具中,可以模擬下載966證書,下載後,在手機上訪問代理服務器的ip與端口,下載證書,就可以抓取到HTTPS的請求了。
38. 你都做過什麼測試
功能測試,性能測試,以及接口測試,在公司中大部分是做的功能與性能測試
39. 如果迴歸測試不通過怎麼辦?
重新提交bug給開發
40. 測試報告包括哪些?
- 概述
- 編寫目的:測試報告的描述、項目簡介、測試內容描述。
- 人員分工:姓名、職務、任務
- 測試環境:軟件、硬件環境
- 測試過程
- 測試進度:測試任務、測試負責人、啓動時間、計劃完成時間、實際完成時間、備註
- 用例執行情況:模塊、用例總數、執行用例數、通過用例數、未通過用例數、阻塞用例數
- 缺陷統計:模塊、bug總數、新增bug總數、修復bug總數、遺留bug總數
- 缺陷分析
- 按照級別分:
- 按照缺陷模塊分:
- 按照缺陷類型分:版本、趨勢
- 測試總結
- 測試結論:是否通過。各種率、按級別描述缺陷
- 風險分析:編號、風險描述、規避方法和建議
- 遺留問題:編號、缺陷描述、缺陷等級、處理方法
41. 測試用例評審的流程是什麼?
目的:主要是爲了開展測試用例評審工作提供指引,規範測試用例管理工作。
流程:
測試用例是否按照公司定義的模板進行編寫的;
測試用例的本身的描述是否清晰,是否存在二義性;
操作步驟應與描述是否相一致;
測試用例是否覆蓋了所有的需求;
測試用例是否具有可執行性
測試用例應有正確的名稱和編號,
測試用例應標註有執行的優先級。
42.怎樣分析性能測試結果?
- 查看聚合報告和服務器的資源使用圖,檢查響應時間,事務成功率,CPU,內存和IO使用率是否達到要求,如果出錯率達到了總請求數的3%,我們會檢查是什麼原因導致的,修改好後,重新測試;
- 如果出現了性能瓶頸,比如響應時間,或者CPU使用率不達標,我們會從服務器上導出日誌,分析是哪個地方導致響應時間過長,如果分析不出來,就叫上開發一起討論,確定問題後,就提單給開發修復,修復好了就進行迴歸測試。
43.請說幾個常見的狀態碼?
200:請求發送成功。
302:代表重定向。
400:客戶端發送的請求語法錯誤。
401:請問的頁面沒有授權。
403:沒有權限訪問這個頁面。
404:沒有這個頁面。
500:服務器內部異常。
44. 請描述下接口測試與UI測試是如何協同測試的?
A. 有一部分是重疊的,Ui測試是通過前端寫的界面,是來調用接口的,而接口測試是直接調用接口。
B. 排除前端的處理邏輯與調用的正確性,在理論上接口測試是可以覆蓋所有的Ui測試,但實際中,如接口層覆蓋所有的業務流,在Ui上只測試前端的邏輯,而最終的結果會忽視很多原有的功能點,導致了Ui測試的不充分,那麼會存在人多分工且時間充分的時候可以嘗試接口去做業務流的全覆蓋,否則不要輕易的去嘗試。
45. 你們項目最佳的併發用戶數是多少?
我們當時做到1500個併發用戶的時候,查詢功能的響應時間超過了性能指標2秒多,原因是有幾個表的索引建得不合理導致的,我們當時做到1500併發用戶後,就沒再繼續增加用戶量了。
46. 如何判斷網絡是否存在瓶頸?
在性能測試結束之後,我們會根據性能測試的結果,查看在整個性能測試過程中,網絡的吞吐量是多少,如果網絡的吞吐量佔到了服務器的70%以上,我們就認爲網絡存在瓶頸,通常會增加帶寬或者壓縮傳輸數據。
47. 如何判斷響應時間不達標
響應時間不達標的話,我們會根據性能測試結果先檢查看下是否是服務器帶寬存在問題,如果帶寬存在瓶頸,則會考慮增加帶寬或者壓縮傳輸數據,如果帶寬沒有問題的話,我們會從服務器上導出日誌,開發一起討論分析是哪個地方導致響應時間過長,確定問題後,就提單給開發修復,修復好了就進行迴歸測試。
48. 如何判斷CPU使用率不達標
CPU使用率不達標,我們會從服務器上導出日誌,分析是哪個地方導致CPU使用率不達標,如果分析不出來,就叫上開發一起討論,確定問題後,就提單給開發修復,修復好了就進行迴歸測試。
49. App常見崩潰的原因?
A. 設備碎片化:由於設備極具多樣性,App在不同的設備上可能有不同表現形式。
B. 寬帶限制:寬帶不佳的的網絡對APP所需的快速響應時間不夠。
C. 網絡的變化:不同網絡間的切換可能會影響App的穩定性。
D. 內存管理:可能內存過低,或非是授權的內存位置的使用可能會導致App失敗。
50. 你在項目中最經典的BUG是什麼?
A. 兼容性問題,在ie瀏覽器,提交訂單按鈕可以點擊,到了谷歌,火狐就不能了。
B. 查詢訂單頁面,根據條件篩選的結果不是想要的結果,還有某些字段的值沒有顯示出來,或者顯示錯誤。(因爲開發從庫表取值有誤)
C. 付款成功後,訂單狀態一直不翻轉爲交易成功。(因爲代碼沒有正確獲取庫表中付款成功記錄的狀態碼)
51. 你在你工作中遇到最棘手的問題是什麼?
- bug無法復現
- 查詢功能,翻頁後第二頁的內容與第一頁的內容完全相同。原因是翻頁的時候刷新了頁面觸發了查詢語句。印象最深的原因:發生過兩次,才知道原因所在。
52.弱網情況下你是如何測試的?
A. 2G的網速150kbps,摺合下載速度15-20K/S.B=8b.g
B. 3G的網速 1-6Mbps,摺合下載速度120K/S-600K/S.
C. 4G的網速10-100Mbps,摺合下載速度1.5M/s-10M/s.
a) 使用真實的SIM卡,運營上網絡來進行測試。
53.跟開發人員因爲BUG產生分歧你是如何解決的?
A. 問題確認與評估
B. 明確開發不修改該缺陷的確切原因
C. 具體問題具體分析--注:dev代表開發 tester表示測試人員
D. 發揮TM與PM的溝通職責 注TM表示測試經理 PM表示產品經理強調溝通。
54.如何提交高質量的軟件缺陷記錄(報告)?
A. 通用UI要統一、準確。
B. 儘量使用業界慣用的表達術語和表達方法
C. 每條缺陷報告只包括一個缺陷
D. 不可重現的缺陷也要報告
E. 明確指明缺陷類型
F. 明確指明缺陷嚴重等級和優先等級
G. 描述 (Description) ,簡潔、準確,完整,揭示缺陷實質,記錄缺陷或缺陷出現的位置
H. 短行之間使用自動數字序號,使用相同的字體、字號、行間距
短行之間使用自動數字序號,使用相同的字體、字號、行間距,可以保證各條記錄格式一致,做到規範專業。
55. 手機端測試的關注點有哪些?
UI測試,功能,性能測試,安裝卸載測試,軟件升級測試,登陸測試,安全性測試,消息推送,前後臺切換,兼容性測試,網絡環境測試,monkey測試。
- 兼容性:
- 系統版本:android:原生安卓系統:4.4 5.8。定製版本:小米、華爲、魅族..
IOS:原生系統:5.0.。。 - 屏幕分辨率:7201280 19281888.,圖片(根據分辨率做一些圖片)
- 網絡狀態:2g 3g 4g 5g wifi
56. Web測試的方法有哪些?
57. 軟件測試的分類有哪些?
58. 測試用例的方法有哪些以及包含的內容?
方法:等價類劃分法、邊界值分析法、場景法,因果圖、錯誤推測法
解釋:
- 等價類劃分:把所有可能輸入的數據分爲若干個區域,然後從每個區域中取少量有代表性的數據進行測試即可,分爲有效等價類和無效等價類。
- 邊界值分析法:取稍高於或稍低於邊界的一些數據進行測試,使用離點、上點、內點確定取值。
- 錯誤推測法:測試經驗豐富的人喜歡使用的一種測試用例設計方法。
一般這種方法是基於經驗和直覺推測程序中可能發送的各種錯誤,有針對性地設計。只能作爲一種補充。 - 因果圖方法:比較適合輸入條件比較多的情況,測試所有的輸入條件的排列組合。所謂的原因就是輸入,所謂的結果就是輸出。
- 場景法:通過模擬業務場景來對系統的功能點或業務流程的描述,從而提高測試效果的黑盒測試方法
59. App的性能測試怎麼做的?
App的性能分爲服務器端的性能和手機端的性能。 服務器端的性能,我們用Jmeter工具進行測試的,我們是用monkey做手機端App的穩定性測試的,如果出了問題,那我就要去看看monkey日誌中有沒有crash或者anr的關鍵字,如果有還需定位到是什麼原因導致的anr或者crash的問題。並且將相關日誌和logcat日誌與進程號提交給開發定位,如果是anr的問題,還需要從安卓中獲取/data/anr/traces.txt文件提交給開發定位。
60. 代碼的版本管理用什麼工具,上傳和合並代碼?SVN介紹用的版本管理工具
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的
SVN需要部署服務端和客戶端,我們公司服務端部署在服務器上,我們只需要在自己的電腦上安裝客戶端(小烏龜),服務端給分配好賬號密碼和權限,並且給我們倉庫的地址,我們就可以對倉庫中的文件或代碼進行checkout update commit等操作,當然共同協作開發可能還會有衝突發生,這就需要處理衝突
當然除了SVN我會使用GIT, Git是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。 是一個開放源碼的版本控制軟件。Git 與常用的版本控制工具 CVS, Subversion 等不同,它採用了分佈式版本庫的方式,不必服務器端軟件支持。
在使用GIT都是使用指令進行操作:
- 配置用戶信息 用戶名和郵箱
git config --global user.name "DashShi"
git config --global user.email [email protected]
- 創建版本庫 git init進行倉庫的初始化
- 添加文件到版本庫(其實是到版本庫的緩存)
git add . 把這個文件夾下面所有的文件都添加到庫
git add abc.txt 把某一個文件添加到庫中
git status -s 可以查看添加的狀態
- 提交添加到緩存的文件到真實的倉庫git commit -m "提交的信息說明"
- 查看提交的日誌/記錄
git log
git log --pretty=oneline 簡略信息查看日誌
- git的遠程倉庫
//遠程倉庫存在,把本地的代碼推送到遠程需要執行
git push -u origin master
- 如果想把github遠程倉庫的代碼拿到本地
git clone "url"
61. APP出現ANR的原因?
線程阻塞的,內存不足,CPU滿負荷(由於現在的手機基本都是8核CPU,所以基本不會出現CPU滿負荷的情況)。
62. APP出現CRASH的原因:
- 空值指針
- 數組越界
- 內存不足
- CPU滿負荷(由於現在的手機基本都是8核CPU,所以基本不會出現CPU滿負荷的情況)
63. Appium的工作原理是什麼?
我們的電腦(c端)上運行自動化測試腳本,調用的是appium的webdriver的接口,appium服務器(s端)接收到我們client上發送過來的命令後,他會將這些命令轉換爲UIautomator認識的命令,然後由UIautomator來在設備上執行自動化。
64. MySql數據庫查詢語言有哪些?多表聯查會嗎?什麼是子查詢?
-
數據庫語言最常SQL (結構化查詢語du言)
創建表:create table user(id int(11) primary key auto_increment,name varchar(20),age int(4),sex varchar(10),); 增:insert into user(name,age,sex) values(?,?,?); 刪:delete from user where name=?; 改:update user set age=?,sex=? where name=?; 查詢所有:select * from user; 根據名稱查找:select * from user where name=?;
-
多表聯查:
select * from customer,orders; select * from customer,orders where customer.id=orders.customer_id; select * from customer c left join orders o on c.id=o.customer_id; select * from customer c right join orders o on c.id=o.customer_id;
-
子查詢:老師和學生
//查詢李老師所教的學生 select id from teacher where name=’李老師’ select student_id from teacher_student where teacher_id=id select * from student where id in(select student_id from teacher_student where teacher_id =(select id from teacher where name='李老師')); //查詢張三的所有老師 select * from teacher where id in(select teacher_id from teacher_student where student_id=(select id from student where name='張三'));
65. SQL語句處理與代碼處理哪個好,舉例?
如果用sql語句,數據處理比較快,處理後傳輸的數據量稍大,由123變成了漢字。
在代碼中處理,傳輸的數據量小點,處理速度取決於代碼怎麼處理。
如果數據量不大,兩種方法區別不明顯,建議用sql語句。
66. SQL內關聯和外關聯的區別?
內關聯是求交集
外觀連是以主表爲標準,去附表找需要的信息
67. Linux系統TOP命令介紹?
顯示,管理執行中的程序 就是任務管理器
68.liunx磁盤滿了,怎麼處理?
#ls –bailR /home >;files.txt
#diff filesold.txt files.txt
69.Linux系統操作的指令說一下:增加,刪除,複製,移動等問題?
目錄操作
cd usr/ 切換到該目錄下usr目錄
cd .. 切換到上一層目錄
cd / 切換到系統根目錄
mkdir 目錄名稱 創建目錄
ls 目錄名稱 查詢該目錄下所有的目錄和文件
ls [-a] 目錄名稱 查詢該目錄下所有的目錄和文件,包含隱藏文件
ls [-l] 目錄名稱 查詢該目錄下所有的目錄和文件的詳細信息
find / -name 目錄名稱 查找/root下的目錄(文件)
mv 目錄名稱 新目錄名稱 修改目錄名稱
mv 目錄名稱 目錄的新位置 剪切
cp -r 目錄名稱 目錄的目標位置 拷貝
rm -rf 目錄 強制刪除目錄
文件操作
touch 文件名稱 創建空文件
cat/more/less/tail 文件 查看文件內容
tail -f 文件 動態查看/實時查看文件(日誌)
grep 要搜索的字符串 要搜索的文件 關鍵字搜索
vi/vim 文件 修改文件內容
rm -rf 文件 強制刪除文件
文件的打包
tar -zcvf 文件名.tar 要打包的文件
文件的解壓
tar -xvf 文件名.tar
擴充:將文件解壓到固定位置
tar -xvf 文件名.tar -C 指定解壓的位置
查詢當前所在位置
pwd
查看進程
ps -ef | grep 進程名稱(tomcat/mysql)
殺死進程
kill -9 進程pid
查看端口號
netstat -an | grep 端口號(3306)
查看服務器ip
ifconfig
查看網絡是否能正常使用
ping 外網地址 查看是否能訪問外網
ping 內網ip 查看是否能訪問內網
權限命令
chmod 777 文件 賦權
查看cpu
top
查看磁盤信息
df -h
查看內存信息
free
關機命令
shutdown -h now 立刻關機,其中now相當於時間爲0的狀態
shutdown -h 10:23
shutdown -h +10 系統再過十分鐘後自動關機
重新啓動
reboot 重新啓動操作系統
70.Linux系統日誌查看指令,壓縮,解壓指令等問題?
Tar -n logcat 查看系統日誌
tar -zcvf 文件名:壓縮
tar -xvf 文件名 :解壓
71. Linux上能不能直接進行性能測試?
不能,腳本需要通過windows調試好後,才能在Linux上運行,運行的時候,只能通過non GUL形式進行啓動jmeter,但需要注意的是,csv文件在windows上與LInux上要統一路徑,最好使用相對路徑,放到統一目錄下邊。
72.說幾個常用的adb指令?
Adb install(apk的文件路徑) 安裝軟件到手機或者模擬器
Adb uninstall(包名) 卸載手機或模擬器上的某款軟件
Adb devices 查看與當前電腦連接的移動設備
Abd ,adb start-server 啓動
Adb,adb kill-server 殺死
Adb logcat 查看日誌
Adb logcat -v time process >
73.軟件負蓋安裝的adb命令?
adb install -r xx.apk覆蓋低版本的
adb install -r -d 覆蓋高版本的
74.性能測試的Adb命令?
adb shell dumpsys cpuinfo 查看手機cpu的使用情況
adb shell getprop|findstr dalvik 手機系統自己運行的內存使用
75.說幾個Monkey指令?
adb shell monkey -p 包名
adb-shell--ignore-crashes 忽略崩潰
adb-shell--ignore-timeouts 忽略延時
adb-shell--ignore-throttle 延時毫秒值
adb-shell--pct-touch--pct-motion 觸摸與滑動事件的比例
76. Postman與jmeter的區別是什麼?
- 用例組織不同,jmeter的組織是比較扁平,首先他沒有工作空間的概念,直接就是測試計劃,而postman功能上更簡單,組織方式是輕量級,他主要針對的是單個的http請求。
- 支持接口的類型與測試的類型不同:jmeter的功能更強大,可以通過各種類型的接口,不支持的也可以通過網上或者自己編寫的插件進行擴展,而postman更輕量級,定位不同,可用來測試Rest接口。
- 配置不同:jmeter可以在線程組裏添加http,tcp,而postman只支持Rest接口。
77. Postman做哪些操作?
Postman是一款功能超級強大的用於發送 HTTP 請求的 Chrome插件 。做web頁面開發和測試的人員應該是無人不曉無人不用!其主要特點 特點是可以創建和發送任何的HTTP請求。
78. 瀏覽器的兼容性測試是怎麼測試的?
大型的、用戶羣體多的網站都需要做瀏覽器兼容性測試,需要測試主流的瀏覽器(除特定要求的瀏覽器以外)
測試的內容:一般是頁面的排版,頁面格式,字體,顏色,下拉菜單,複選框等測試(UI:CSS,HML,Js在不同瀏覽器下的表現)
再就是對功能進行檢查
79. 最近工作功能測試流程?意思是問測過哪些功能?
- 測試流程:
A. 待測應用在不同的操作系統平臺上正常運行,包括待測試項目能在同一操作系統平臺的不同版本上正常運行;
B. 待測應用能與相關的其他軟件或系統“協調工作”; - 測過哪些功能:
A. 兼容性測試就是測試電腦硬件之間是否有不兼容等問題或軟件問題。
B. 兼容性測試側重哪些方面
- 向前兼容和向後兼容。向前兼容是指可以使用軟件的未來版本,向後兼容是指可以使用軟件的以前版本。
- 不同版本之間的兼容。實現測試平臺和應用軟件多個版本之間能夠正常工作。
80. 測試手機兼容性測試是如何測試的?
一般測試手機兼容性的時候會考慮到手機的型號,分辨率以及安卓版本號,一般常用的手機型號如:華爲,錘子,小米,魅族等,一般碎片化會嚴重,從Android6.0到Android10.0的版本是不一樣的,而最近的版本號已經到10了,也就是AndroidQ,它是協助開發者利用5G,摺疊屏,無框屏,設備內置Al等最新技術繼續創新,同時確保用戶安全,隱私及數字健康。向分辨率這塊大部分是1920*1080,一般會買真機去測。。
81. 如何理解壓力、負載、性能測試測試?
性能測試是一個較大的範圍,實際上性能測試本身包含了性能、強度、壓力、負載等多方面的測試內容。
壓力測試是對服務器的穩定性以及負載能力等方面的測試,是一種很平常的測試。增大訪問系統的用戶數量、或者幾個用戶進行大數據量操作都是壓力測試。
負載測試是壓力相對較大的測試,主要是測試系統在一種或者集中極限條件下的相應能力,是性能測試的重要部分。
100個用戶對系統進行連續半個小時的訪問可以看作壓力測試,那麼連續訪問8個小時就可以認爲負載測試,1000個用戶連續訪問系統1個小時也可以看作是負載測試。
實際上壓力測試和負載測試沒有明顯的區分。測試人員應該站在關注整體性能的高度上來對系統進行測試。
82. shell寫腳本
- 語法
- 執行
83. selenium和appium使用
84. Charles和Fiddler如何移動端抓包
86. bug流轉過程
87. Charles功能操作,需要實操
網絡抓包
移動端抓包
證書安裝
斷點
過濾
模擬慢速網絡
修改網絡請求
壓測服務器
模擬404、403