軟件測試經典10題(含解析)


可以用這 10 道題目,找到自己的薄弱點,對症下葯。

我的建議是:你可以拿出紙筆,寫下這 10 道題的答案,然后再與文末的答案進行對照。

選擇題

1. (單選)當需要對某個系統進行測試的時候,應該從哪些方面來設計測試用例?

A. 功能驗證

B. 性能相關的驗證

C. 兼容性相關的驗證

D. 安全性相關的驗證

E. 以上全是

2. (多選)軟件測試過程中,測試數據准備的痛點有哪些?(多選)

A. On-the-fly 測試數據准備的時間消耗

B. Out-of-box 測試數據的“臟數據”

C. 測試數據本身組合的復雜性和多樣性

D. 性能測試數據准備的時間消耗

E. 微服務化后,跨多個微服務的數據准備缺乏完整的知識體系

F. 微服務化后,測試數據准備的環境依賴性

3. (單選)無頭瀏覽器的主要應用場景是?

A. 網絡爬蟲

B. GUI 自動化功能測試

C. 頁面監控

D. 以上全是

4. (單選)以下不屬於 API 測試工具的是哪個?

A. Postman

B. SoapUI

C. JMeter

D. Selenium

5. (單選)以下屬於移動應用測試的工具是哪個?

A. Appium

B. UFT

C. TestNG

D. LoadRunner

問答題

  1. GUI 自動化測試腳本分層設計的最佳實踐是怎么樣?
  2. 多個 API 連續調用的測試用例的難點是什么?你是如何來解決的?
  3. 單元測試中,樁函數和 Mock 函數用來解決什么問題,兩者又有什么區別?
  4. 性能壓測過程中,當面對大量並發用戶調用的時候,服務器端 CPU 的使用率是高好還是低好?為什么?
  5. 當需要在盡可能短的時間內完成大量 GUI 自動化測試用例的執行時,業界主流的解決方案是什么?

答案與解析

1. (單選)答案:E

解析:除了要考慮顯示的功能性需求外,還要涉及安全性、性能、兼容性等非功能性需求的驗證。

2. (多選)答案:ABCDEF

解析:關於現在流行的微服務模式,由於每個單一功能的服務都是獨立分開部署的,所以我們在准備測試數據時,還可能會遇到諸如環境依賴、跨多個微服務的數據准備缺乏完整的知識體系等問題。

3. (單選)答案:D

解析:無頭瀏覽器的主要應用場景,包括 GUI 自動化測試、頁面監控以及網絡爬蟲這三種。

4. (單選)答案:D

解析:Selenium 屬於 GUI 自動化測試工具。

5. (單選)答案:A

解析:UFT(以前的 QTP)屬於一款 GUI 測試工具,LoadRunner 屬於性能測試工具。而 TestNG 是一個用來簡化廣泛的測試需求的測試框架,適用於從單元測試到集成測試階段的測試。

Appium 則是一款很好用的移動測試工具。

6. GUI 自動化測試腳本分層設計的最佳實踐是怎樣的?

考點分析:GUI 自動化測試腳本的分層設計原理。

答案與解析:

大量 GUI 自動化測試能夠成功的關鍵,就在於腳本的分層設計。而腳本分層設計的核心思想就是模塊化。

首先,我們需要對頁面進行抽象,形成頁面對象模型。在這樣的測試用例中,你看到的都是類似於 XXXPage.YYYComponent.ZZZOperation 的語句。它們和實際的手工測試可以建立一一對應的關系,用通俗的話語來講,就是某某頁面上的某某元素,執行了某某操作。

接下來,為了使 GUI 自動化測試腳本更加符合業務場景的描述,同時進一步提高腳本的封裝性和可重用性,就需要引入業務流程腳本的概念。這里,業務流程和實際的業務流程也是一一對應的關系。這樣,測試用例就可以通過調用業務流程腳本來實現,測試用例本身的可讀性以及可維護性也會更好。同樣地,業務流程腳本,也是基於頁面對象模型實現的。

7. 多個 API 連續調用的測試用例設計難點是什么?你是如何解決的?

考點分析:多個 API 連續調用時,前后兩個 API 之間的參數傳遞。

答案與解析:

單個 API 測試並不難,難的是多個 API 的連續調用,並且后一個 API 的參數值使用的是前一個 API 調用的返回結果,這就要求多個 API 調用之間可以方便地進行參數傳遞。一個最典型的場景就是,前一個 API 調用會返回一個有效的 token,后一個 API 調用需要帶着這個 token 才能調用成功。

為了解決這個問題,一般來講有三種處理方法:

  • 第一種方法是,手工復制前一個 API 返回結果中的某個值,然后粘貼給后一個 API 作為輸入參數。當然,這是最基本的方法,但是效率太低,而且無法實現自動化。
  • 第二種方法是,使用基於代碼的 API 測試框架。由於此時所有的測試邏輯都是通過代碼來實現的,因此可以很容易地實現 API 之間的參數傳遞。
  • 第三種方法是,借助於類似 HttpRunner 之類的已有 API 測試框架。此類框架可以通過關鍵字,很方便地將前一個 API 的返回值中的某個值傳遞給下一個 API 作為輸入參數。

8. 單元測試中,樁函數和 Mock 函數主要用來解決什么問題?這兩者又有什么區別呢?

考點分析:理解樁函數和 Mock 函數的本質區別。

答案與解析:

當被測函數中調用了第三方的函數時,我們一般會采用樁函數或者 Mock 函數來模擬這些第三方函數,以此來實現被測函數的高代碼覆蓋率。可以說,樁函數和 Mock 函數的使用大大方便了單元測試的開展,同時也解決了單元測試的代碼耦合性問題。

但是,這兩者到底有什么區別呢?

通俗來講,如果你的測試驗證是在被測函數中進行的,那么此時你使用的就是樁函數;而如果你的測試驗證是在被模擬的函數中進行的,那么這個被模擬的函數就是 Mock 函數。

9. 性能壓測過程中,當面對大量並發用戶調用的時候,服務器端 CPU 的使用率是高好還是低好?為什么?

考點分析:理解性能測試指標解讀的復雜性,必須要全盤考慮多個指標間的相互關聯和制約。

答案與解析:

這個問題的答案,一定會有堅持不同意見的兩派人。

  • 一部分人認為,CPU 使用率當然是越低越好。這說明后端代碼實現得很高效,只占用很少的計算資源就能實現較高的並發。並發情況下,越低的 CPU 占用率,說明系統可以繼續承載越多的並發負載。
  • 而另一部分人則認為,CPU 的使用率是越高越好。這說明系統的計算資源被充分利用了起來。

你同意哪個觀點呢?

其實,這個問題本身就是個偽命題,單單通過題干中的信息是不足以給出孰好孰壞的結論的。這里的關鍵是,隨着並發用戶數的上升,事務的響應時間是如何變化的。

如果隨着並發用戶數的增加,事務的響應時間也呈線性增長,但 CPU 的使用率一直上不去,這就是典型的 CPU 資源沒有被充分利用的現象。此時,你就需要去進一步診斷為什么 CPU 資源不能在並發場景下被充分利用。

而如果隨着並發用戶數的增加,事務的響應時間能基本保持穩定,同時 CPU 的使用率會隨着並發用戶數的增加呈線性增加,這反倒是我們希望看到的結果,也就是說更多的並發用戶會需要使用更多的 CPU 資源。

10. 當需要在盡可能短的時間內,執行完大量 GUI 自動化測試用例時,業界主流的解決方案是什么?

考點分析:測試執行架構的設計

答案與解析:

這個問題其實不難回答,業界一般會采用兩種方案:

  • 一種是,使用第三方的雲測服務,比如國外的 Sauce Labs、國內的 Testin 等;
  • 另一種是,自己搭建 Selenium Grid 集群。

其實,這兩種方案的本質都是將大量的測試用例以並發的方式來執行。



作者:大數據專欄
鏈接:https://www.jianshu.com/p/2330fac9496e
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM