單元測試 002UI自動化測試

2022-09-12 00:39:19 字數 2924 閱讀 2111

2>開發在寫api請求相關**的時候沒有做資料容錯,測試在人工測試的時候都是正常的資料,所以測試通過。上線了之後,後台配置資料的時候出了點小問題,導致大面積崩潰,crash

自動化測試

自動化測試就是寫一些測試**,用**代替人工去完成模組和業務的測試。(自動編譯**

自動化測試有很多優點:

測試速度快,避免重複性的工作。

避免regression(回歸),讓開發更有信心去修改和重構**

有了自動化測試,持續整合(ci)會變得更可可靠

迫使開發人員寫出更高質量的**。(自動化測試不通過,**不允許合併)

自動化測試也有一些缺點:

開發和維護成本高;

不能完全替代人工測試;

無法完全保證測試的準確性 - 讓**去判斷一段邏輯是否正確很容易,但是,讓**判斷乙個控制項顯示是否正確卻沒那麼容易。

/*

在做自動化測試之前,首先要問自己幾個問題?

這個測試業務的變動是否頻繁?

這個測試業務是否屬於核心功能?

編寫測試**的成本有多少?

自動化測試能保證測試結果的準確麼?

*/

ui測試:ui測試是模擬使用者操作,進而從業務處層面測試。

關於ui測試,有幾個核心類需要掌握

xcuielement

xcuielementqueryui測試還有乙個核心功能是ui recording。

選中乙個ui測試用例,然後點選圖中的小紅點既可以開始ui recoding。你會發現

隨著點選模擬器,自動合成了測試**。(通常自動合成**後,還需要手動的去調整)

點選小紅點即可自動編譯-生成**

在寫ui測試用例的時候要注意:測試行為而不是測試**.

對應測試**如下:

- (void

)setup

- (void

)teardown

- (void

)testlogin

執行效果如下圖所示:

補充:列舉一些常用的斷言:

xctfail(format…) 生成乙個失敗的測試;

xctassertnil(a1, format...)為空判斷,a1為空時通過,反之不通過;

xctassertnotnil(a1, format…)不為空判斷,a1不為空時通過,反之不通過;

xctassert(expression, format...)當expression求值為true時通過;

xctasserttrue(expression, format...)當expression求值為true時通過;

xctassertfalse(expression, format...)當expression求值為false時通過;

xctassertequalobjects(a1, a2, format...)判斷相等,

[a1 isequal:a2

]值為true時通過,其中乙個不為空時,不通過;

xctassertnotequalobjects(a1, a2, format...)判斷不等,

[a1 isequal:a2

]值為false時通過,

xctassertequal(a1, a2, format...)判斷相等(當a1和a2是 c語言標量、結構體或聯合體時使用,實際測試發現nsstring也可以);

xctassertnotequal(a1, a2, format...)判斷不等(當a1和a2是 c語言標量、結構體或聯合體時使用);

xctassertequalwithaccuracy(a1, a2, accuracy, format...)判斷相等,(double或float型別)提供乙個誤差範圍,當在誤差範圍(

+/-accuracy)以內相等時通過測試;

xctassertnotequalwithaccuracy(a1, a2, accuracy, format...) 判斷不等,(double或float型別)提供乙個誤差範圍,當在誤差範圍以內不等時通過測試;

xctassertthrows(expression, format...)異常測試,當expression發生異常時通過;反之不通過;(很**)

xctassertthrowsspecific(expression, specificexception, format...) 異常測試,當expression發生specificexception異常時通過;反之發生其他異常或不發生異常均不通過;

xctassertthrowsspecificnamed(expression, specificexception, exception_name, format...)異常測試,當expression發生具體異常、具體異常名稱的異常時通過測試,反之不通過;

xctassertnothrow(expression, format…)異常測試,當expression沒有發生異常時通過測試;

xctassertnothrowspecific(expression, specificexception, format...)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過;

xctassertnothrowspecificnamed(expression, specificexception, exception_name, format...)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過

單元測試框架進行自動化測試

到底單元測試是做什麼用的?單元測試是一種測試,它不是 的一部分 單元測試是最低層級的測試,它只保證函式的可靠性,不保證其它 單元測試應該能保證每乙個函式的可靠性。單元測試是一種測試,所以,我們應該以一種測試的眼光去面對它 我們要測試正常情況,邊界條件,要對它的測試目標 函式做黑盒分析,白盒分析,選擇...

selenium自動化 單元測試框架

單元測試框架 在自動化中,單元測試框架是管理測試用例的,控制測試用例的執行順序和次數 unittest 前置條件 setup 一般是開啟瀏覽器操作 後置條件 teardown 一般是關閉瀏覽器 原始碼 coding utf 8 from selenium import webdriver impor...

安卓自動化單元測試 登入模組測試

參考資料 android自動化測試 從入門到入門 構建之法上說單元測試要整合到自動化框架中,要和產品 一起儲存和維護,不是很明白自動化框架是什麼。android 還需要在build.gradle中增加instrumentation testing所需要的依賴 dependencies android...