百度校招二面掛,突然又收到通知讓面開發測試崗,只有一晚上準備測試內容。臨時抱佛腳,不少問題果然問到。記錄如下。
相關概念
測試過程
測試過程包括五大部分,分別為:單元測試、集成測試、確認測試、系統測試、驗收測試。
黑盒
在完成完成后關注程序功能是否符合需求,是否能適當地接收輸入數據、產生正確的輸出信息。
白盒
在開發中關注代碼運行的效率和結果。
在設計測試用例時,有用到過哪些方法?
黑盒測試:等價類,邊界值,因果圖,功能劃分,錯誤猜想。。。
白盒測試:語句覆蓋,分支覆蓋,邏輯覆蓋。。。
單元測試
對軟件中最小可測單元進行檢查和驗證。
C語言單元指一個函數、JAVA單元指一個類。
集成測試
在單元測試的基礎上,將所有模塊安裝設計需求組裝成子系統或者系統,進行集成測試。
實踐表明,一些模塊雖然能夠單獨工作,但并不能保證連接起來也能正常工作。一些局部上反映不出來的問題,在全局上可能暴露出來。
系統測試
將已確認的軟件與計算機硬件、外設、網絡等所有元素結合在一起,進行系統的各種組裝測試和確認測試。驗證系統是否滿足需求規格,找出與需求規格不符或與之矛盾的地方,從而提出更加完善的方案。
數據庫
鎖
類型、粒度、應用場景
類型
共享(S)鎖:多個事務可封鎖一個共享頁;任何事務都不能修改該頁; 通常是該頁被讀取完畢,S鎖立即被釋放。
排它(X)鎖:僅允許一個事務封鎖此頁;其他任何事務必須等到X鎖被釋放才能對該頁進行訪問;X鎖一直到事務結束才能被釋放。
更新(U)鎖:更新鎖在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現象。
使用共享鎖時,修改數據的操作分為兩步:
首先獲得一個共享鎖,讀取數據;
然后將共享鎖升級為排它鎖,然后再執行修改操作。
這樣如果同時有兩個或多個事務同時對一個事務申請了共享鎖,在修改數據的時候,這些事務都要將共享鎖升級為排它鎖。這時,這些事務都不會釋放共享鎖而是一直等待對方釋放,這樣就造成了死鎖。
如果一個數據在修改前直接申請更新鎖,在數據修改的時候再升級為排它鎖,就可以避免死鎖。
粒度
鎖是具有粒度的,即可以對不同的資源加鎖。
鎖定的粒度包括 行、頁、擴展盤區、表、庫等。
鎖定在較小的粒度的資源(例如行)上可以增加系統的并發量但需要較大的系統開銷,從而也會影響系統的性能,因為鎖定的粒度較小則操作可能產生的鎖的數量會增加;
鎖定在較大的粒度(例如表)就并發而言是相當昂貴的,因為鎖定整個表限制了其它事務對表中任意部分進行訪問,但要求的開銷較低,因為需要維護的鎖較少。
什么時候用行鎖什么時候用表鎖
對于InnoDB表,在絕大部分情況下都應該使用行級鎖,因為事務和行鎖往往是我們之所以選擇InnoDB表的理由。但在個別特殊事務中,也可以考慮使用表級鎖。
第一種情況是:事務需要更新大部分或全部數據,表又比較大,如果使用默認的行鎖,不僅這個事務執行效率低,而且可能造成其他事務長時間鎖等待和鎖沖突,這種情況下可以考慮使用表鎖來提高該事務的執行速度。
第二種情況是:事務涉及多個表,比較復雜,很可能引起死鎖,造成大量事務回滾。這種情況也可以考慮一次性鎖定事務涉及的表,從而避免死鎖、減少數據庫因事務回滾帶來的開銷。
測試要點
正確性、可用性、邊界條件、性能、壓力測試、錯誤恢復、兼容性、安全性。
測試用例
微信朋友圈
1.是否可以正常點贊和取消;
2.點贊的人是否在可見分組里;
3.點贊狀態是否能即時更新顯示;
4.點贊狀態,共同好友是否可見;
5.不同手機,系統顯示界面如何;
6.性能檢測,網速快慢對其影響;
7.點贊顯示的是否正確,一行幾個;
8.點贊是否按時間進行排序,頭像對應的是否正確;
9.是否能在消息列表中顯示點贊人的昵稱、備注;
10.可擴展性測試,點贊后是否能發表評論;
11.是否在未登錄時可查看被點贊的信息。
自動販賣機
金額剛夠,順利出貨
金額超出,找零出貨
金額超出, 沒錢找零,出貨
金額不足,進行提示,把貨幣退出
金額足夠,取消交易
假幣,不出貨
掃碼支付
1,通過網銀充值10元(標題) 然后請自己描述詳細操作步驟
預期結果 支付寶帳戶中增加10元(前提是不考慮網絡延時,或各網銀的出帳延時)
2,通過網銀充值時 網銀余額不足
預期結果 充值失敗 不影響支付寶中帳戶金額
3,通過網銀充值時,在任意操作步驟中(建議是最后一步)取消該服務
預期結果 充值失敗 不影響支付寶中帳戶金額
4,充入0元 (基本上不會同意充0的操作的吧)
預期結果 充值失敗 提示輸入大于0的金額
5,充入n元(N= 支付寶每次限制的最大充值金額)
預期結果 支付寶帳戶中增加n元
6 充入N+1元 (與第5條一樣,都是邊界值法。但是要分開寫成兩條)
預期結果 充值失敗/提示金額大出限制
百度首頁測試
界面測試
文字、按鈕、圖標等大小顯示正常,風格一致,整體美觀自然。
功能測試
百度首頁呈現的功能:新聞,網頁,貼吧,知道,音樂,圖片,視頻,地圖,這8個是最主要的;
緊接著次要的百科,文庫,hao123,更多;
除此之外就是把百度設為主頁,安裝百度瀏覽器,加入百度推廣,關于百度等等;
和用戶相關的還有登錄,注冊。
邊界條件測試
- 用例說明: 最小輸入值為0個字時。
輸入: 不輸入文字,直接按搜索。
預期結果: 頁面刷新,無變化。 - 用例說明: 百度搜索文本框內可輸入的最大字數是100個漢字。
輸入: 鍵盤輸入或復制粘貼一段很長的中文進入文本框。
預期結果: 100字時不能輸入或被百度自動截取其中前100個字。 - 用例說明: 百度搜索文本框的輸入值在點擊搜索按鈕后,會被截取前38個漢字,其后面的字詞均被忽略。
輸入: 鍵盤輸入或復制粘貼大于38個漢字進入搜索框。
預期結果: 按下搜索按鈕,百度跳轉到搜索結果頁面,并提示“"××" 及其后面的字詞均被忽略,因為百度的查詢限制在38個漢字以內”,將被自動截取的內容復制粘貼到word,統計字數為38。 - 用例說明:任意一個中文、英文、符號、空格在輸入進文本框內第一次計數時均視同一個漢字。
輸入:輸入或者復制粘貼任意一個中文、英文、符號、空格后輸入大于38漢字。
預期結果: 第一個字符被當做漢字計算。 - 用例說明: 連續的空格在點擊搜索按鈕后進行搜索時會自動合并,并轉化一個單獨的空格。
輸入: 復制粘貼38個漢字進入搜索文本框,并中間加入62個連續空格后按下搜索。
預期結果: 搜索結果里最后一個漢字被忽略,因為前面有37個漢字加1個合并后的空格長度已達38.并且在文本框里原來62個空格的位置現在顯示一個空格。
兼容性測試
WINDOWS/LINUX/UNIX等各類操作系統下及各版本條件下的應用;
IE/FIREFOX/GOOGLE/360/QQ等各類瀏覽器下及各版本條件下的應用;
SQL/ORACLE/DB2/MYSQL等各類數據庫存儲情況下的兼容性測試;
簡體中文、繁體中文、英文等各類語種軟件平臺下的兼容性測試;
IPHONE/IPAD、安卓等各類移動應用平臺下的兼容性測試。