首頁>Club>
14
回覆列表
  • 1 # 那年那些事er

    令開發者萬分高興的是,開發自己的測試框架的日子終於結束了。以前,開發團隊接手一個專案並開始開發時,除了專案模組的實際開發之外,他們不得不為這個專案構建一個自動化測試框架。一個測試框架應該具有最佳的測試用例、假設(assumptions)、指令碼和技術來執行每一處程式碼和模組,從而發現程式碼缺陷和不足。不同的專案需要不同的測試用例、假設和指令碼,而這也是為什麼會在這些開發中花費大量時間。

    隨著技術的進步和自動化技術的出現,市面上出現了一些自動化測試框架,你可以使用這些框架,在調整特定測試適用性和效率引數後,測試你專案的任何模組。這節省了時間,而且由於這些框架被廣泛使用,它們非常穩健,具有廣泛多樣的用例集和技術來輕易發現微小的缺陷。今天,我們將看一看可用的Python自動化測試框架。

    Robot Framework

    Robot Framework是最流行的Python自動化測試框架。它是完全用Python開發的,對於驗收測試非常有用。這個框架可以執行在Java和.NET環境。它還支援跨平臺,例如Windows、MacOS和Linux。這個產品是由世界上一些著名的測試人員建立的,擁有關鍵詞驅動方案。它有如此多可用的工具和庫,使得這個框架非常先進和健壯。

    它是一個開源框架,並且留有API擴充套件空間。表格式的測試資料語法和關鍵詞驅動測試使得它在全球的測試人員中非常流行。它無疑是最易用的自動化測試框架,並且允許你進行並行測試。

    RedwoodHQ

    RedwoodHQ是一個流行的自動化測試工具,它的流行是由於大部分流行的程式語言都可以用來編寫測試,例如Java、Python、C#和likewise。它有一個網站介面,在那裡多個測試人員可以在一個平臺上協作和執行測試用例。在RedwoodHQ中出現的action關鍵字可以用來毫不費力地建立和修改測試用例。你所需要做的只是找到你需要的action,將它拖到你的測試盒中,然後輸入引數並改變它們的值來生成一份完整的測試報告。它有一個內建的IDE(整合開發環境),你可以在那裡建立和修改測試用例,並且並行執行它們。它是對使用者最友好或對測試人員最友好的平臺之一,它關注一個重大專案的全部測試過程。

    Jasmine

    Jasmine對於JavaScript單元測試使用行為驅動開發框架。它適用於任何使用JavaScript的地方。除了JavaScript之外,它還被用於Python和Ruby自動化測試。因此,它使得你可以並行執行客戶端測試用例和服務端測試用例。它是一個將客戶端和服務端單元測試結合起來的完美的測試框架,而且被認為是測試領域的未來。它現成可用,除了需要一個名為Karma的測試執行器之外,不需要其它外部依賴。

    Pytest

    如果你的專案比較小、複雜度比較低,Pytest是最適合的自動化測試平臺。非常多的Python開發者都喜歡它,他們大部分用它來進行單元測試。它也具有Robot Framework所聞名的驗收測試能力。Pytest最好的特性之一是,它提供了測試用例的詳細失敗資訊,使得開發者可以快速準確地改正問題。它相容最新版本的Python。它還相容unittest、doctest和nose,開箱即用。它還有包含更多功能的外掛和多樣化的現有測試技術和測試用例。事實上,有300多個可用外掛來自它的活躍社群。該平臺設計用於編寫更簡單錯誤率更小的程式碼。你可以將Pytest與諸如Selenium和Splinter之類的圖形使用者介面一起使用,來使得測試工作更輕鬆。

    結論

    對於任何程式語言來說,都沒有絕對理想的測試框架。它取決於開發者的舒適度、專案需求和專案中特定模組所需的測試型別。可用的自動化測試框架有線性自動化、基於模組的測試、函式庫框架測試、混合測試、關鍵詞驅動和資料驅動測試等。每個框架都有它的優點和缺點。上面列舉的python框架是效能最全面的自動化測試框架。

  • 2 # 軟體測試開發技術棧

    首先我們需要明白自動化測試框架更傾向於一種設計思想 ,這種思想指導工具的使用或者自研開發,並且不是隻能使用僅僅一種框架,結合被測系統本身特性一般是選擇多種測試框架的組合,來滿足測試和設計需求(開發、維護角度)。

    錄製回放測試框架

    錄製回放測試框架所採用的原理是通過錄制應用程式產生的線性指令碼進行回放從而達到自動化測試的目的。

    優點:對測試人員測試開發能力要求最低,通過錄制就可以得到所需指令碼。缺點:一般不具有邏輯判斷的能力 ,可維護性差 ,效率低。適應場景:不推薦,傳統的UI自動化測試逐步弱化。關於U自動化,一定要清楚 被測系統是否滿足開展自動化的條件,在被測系統變動頻繁的專案中,開展UI自動化無疑是挖了一個很大的坑,其後期維護工作足以讓大心疲憊,被迫放棄自動化測試。測試庫構架框架(The Test Library Architecture Framework )

    測試庫構架框架的核心思想可以概括為系統功能操作和業務邏輯的解耦。將所有的針對測試系統支援的功能操作封裝在測試庫中,測試指令碼呼叫測試庫的同時傳遞外部的測試資料,測試庫的編寫由自動化測試發工程編寫(可以不懂業務),負責控制元件的變更和維護, 測試指令碼的編寫可由對業務比較掌握的自動化測試開發工程編寫,負責業務邏輯、測試資料的變更和維護。

    優點:被測試系統無論是哪層發生變化(程式碼層或業務層等),只需要相應的人員進行變更維護即可。缺點:變更引起的維護工作同時附加在自動化測試開發工程師與業務測試人員身上,維護程式碼建級大。適應場景:基於各種自動化開展方式(基於工具如Jemet或不基於工具的自研研發+持續整合)一般都會應用該框架。資料驅動的自動化測試框架( The Data-Driven Testing Framework )

    資料驅動的核心思想可以概括為資料(測試資料、配置資料)與程式碼解耦。該種框架的原理是採用了資料驅動指令碼進行測試,資料驅動指令碼是將資料輸入儲存在獨立的資料檔案中,指令碼只存程式碼,執行時指令碼的輸入直接從檔案中讀取,如此相同的指令碼(程式碼模版)可以運行於不同的測試用例中,實現了程式碼與資料的分離。

    優點:對於業務人員由面向程式碼的開發轉換為面向配置的設計(引數組合設計), 降低了開發難度與開發成本,同時提高了測試用例的易擴充套件性,可以快速擴充套件相似測試,實現了自動化程式碼不隨用例的增長而增缺點:測試指令碼的維護由自動化測試開發工程師負責,要求懂自動化程式設計和業務邏輯,初始測試指令碼設計成本較大,具有一定侷限性 (針對相同的測試內容並具有相同的測試邏輯).適用場景:更適應於測試內容測試邏相重複度高,被測物件對測試用例易擴充套件性、可複用性要求較高的場景。關鍵字或表驅動的自動化測試框架(The Keyword-Driven or Table-Driven Testing Framework )

    關鍵字驅動是對資料驅動的邏相擴充套件,它的核心思想可以概括為資料程式碼流程(邏輯)解耦,同時完成了程式碼與測試描述(針對被測物件的測試描述)的對映。該框架的原理是基於資料驅動的基礎上,完成了對被測物件的拆分、抽象、 封裝使之對映成個個“關鍵詞” (測試描述),編寫測試用例時,僅需要對關鍵詞進行組合 ,即可完成不同場景的測試用例開發。

    優點:對於業務手工測試人員,由面向程式碼或配置的開發轉化為面向自然語言(測試描述)的開發,最大程度的降低了開發難度與維護成本,同時提高了測試用例的易擴充套件性、易組織性,實現了自動化程式碼不隨用例的增長而增多。

    缺點:對測試人員的測試開發能力以及業務瞭解程度要求很高。

    適用場景:被測物件包含複雜業務流程(邏輯),當然複雜的能做簡單的更ok。

  • 3 # 星鏈全球

    不知道你的問題是使用python來做自動化測試,還是要測試python的程式碼的自動化測試框架。

    有非常多的自動化測試框架,目前都支援python來進行,就算沒有官方的介面,也有非常多的第三方庫來實現,看你測試的領域。

    移動APP測試

    移動app測試肯定離不開appnium框架,支援IOS與安卓的自動化UI測試,搭建好框架既可執行,幾乎可以實現應用的所有互動功能的測試。

    uiautomator2,谷歌官方只支援java,但是有第三方的python實現,據說網易的大部分遊戲測試都是使用python+uiautomator2,上手簡單,功能強大,也有相應的錄製與播放工具。

    web測試

    selenium,web測試,可以使用google瀏覽器的開發者模式來直接定位元素的位置,其實與appnium、uiautomator2,這種元素定位類似,可以直接來程式碼編輯使用,有一個selenium IDE,可以錄製指令碼,但是隻支援firefox,已經很久不更新,不過有可替代的免費產品Katalon Recorder,可以是瀏覽器外掛也有相應的IDE下載,還可以錄製安卓的測試指令碼。

    pytest

    用於python程式碼的測試,文件詳細而且整合眾多的外掛,如pytets-selenium等,可以簡潔而快速的進行介面自動化測試、自動化測試。

    不管是用python來進行自動化測試,還是測試python程式碼,都有非常多的框架和庫可以選擇,選擇主流的測試框架,維護的人多,資料也會相對好找。

  • 中秋節和大豐收的關聯?
  • 如何看待張傑《蝴蝶知道他愛誰》這首歌?