天天看點

從零開始搭建一個簡單的ui自動化測試架構01(pytest+selenium+allure)

一、 思想先行

在我們讨論如何用技術手段實作之前,不妨先思考一下,或者說,如同普通的項目開發一樣,首先是産品經理給出規劃,再由技術實作。

既然是個人的項目,那當然是我們自己來做這個産品經理了,那麼首先,我們的産品需要哪些點呢?

ui自動化,是測試層級的最上層,本質上是在容器裡模拟使用者的操作,來達到自動回歸業務邏輯的目的。這樣的話,就很容易想到了,如果我們想要實作這個目的,首先,

  1. 我們的産品要能夠根據用例規定的操作回放模拟操作;
  2. 用例應該是既能夠單獨執行,也可以按指定順序集合執行;
  3. 如果希望達到無人值守的目的,那麼郵件通知和CI必不可少;
  4. 我們肯定希望用例維護起來簡潔便利。

其他可能沒想到的做的過程裡添加,但是以上四點基本就可以滿足我們對簡單的ui自動化測試的需求了,接下來我們就可以考慮如何去實作這個産品。

首先是技術的選型,在大腦由混沌狀态逐漸清晰了我們的産品需求之後,我們就可以對市面上的技術進行選擇,選擇一個最合适我們的方向。

一般而言,肯定第一優先本公司的主流語言,另一方面,經過調查,目前來說已經可以确定隻能用selenium來實作我們的“模拟回放”的需求,這是因為他是開源而免費的,其他的工具例如QTP盡管更加易用且有專門的公司維護,但是,他太貴了(并不考慮盜版&破解)。

selenium可以了解為一個工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver等,經常有人問selenium和webdriver是什麼關系?這裡稍微解釋一下,可以視為selenium打包了webdriver,而webdriver本身是一套操作浏覽器的api協定規範。實際用的話,可以不糾結于概念。

selenium本身支援多種語言,由于本家公司主流技術是php,不被支援,權衡之下選擇了py作為開發語言,理由是py更加易于上手,現成的庫很多很友善。

到這裡,其實我們的第一需求,還記得嗎?(我們的産品要能夠根據用例規定的操作回放模拟操作;)已經确認了技術類型,我們接着看下面的需求。

第二個需求,實際上就是用例管理,一般而言各個語言都有自己的測試架構用于處理這些,python當然也不例外,py上的測試架構有unittest,pytest,nose等等,由于我們的需求各個架構基本都能滿足,是以直接選擇了py内置的測試架構unittest使用,如果想了解各大架構之間對比的話,可以點選

這裡

檢視。

ok,很順利,到這裡第二個需求也解決了技術選擇,那麼看看第三個需求,也就是無人值守。這裡因為我們公司的ci工具是jenkins,是以就直接標明了用jenkins作為技術手段。

那麼隻剩下最後一個需求,實際上是一個很重要的優化點,如何讓用例維護簡單?這裡其實是一個很彈性的選擇,我的選擇是隻通過架構設計來達到,更好的選擇是把用例的描述規範化甚至脫離代碼層面,例如使用yaml來描述用例。

至此,我們的技術選型已經全部完畢,接下來是開始設計我們的測試架構。