序
如今,軟件測試崗位受到很大的挑戰。一方面,敏捷開發模式、DevOps實踐等愈發流行,其強調開發與測試相融合,即測試人員能干開發的工作,開發人員能干測試的工作;另外一方面,測試行業開始認為自動化測試很重要,如果實現不了自動化測試,那麼測試就無法敏捷起來(特別是在快速迭代、持續交付的環境下)。
說起自動化測試,根據公眾號“軟件質量報道”和相關機構最近的調查,目前的自動化測試(特別是面向GUI的自動化測試)效果還不夠好,產出投入比不高,自動化測試做得好的公司或團隊也不多。但是,基於API進行自動化測試(接口自動化測試)還是比較容易實施的,自動化率能達到90%以上,並且投入產出比高。另外,如今軟件架構也慢慢轉向SOA架構、微服務架構,基於API進行測試的需求越來越大,這給自動化測試提供了更多的機會。
本書正是幫助那些自動化測試基礎比較弱,甚至是零基礎的測試工程師轉型做接口自動化測試,而且是基於現在如日中天的Python語言來開發自動化腳本,對渴望入門Python編程的朋友也有價值。本書循序漸進地引導讀者完成接口自動化測試。
本書直接基於Python代碼來實現接口自動化測試,不依賴其他測試工具,降低了學習門檻和使用成本。自動化測試所需的Python技能其實也很簡單,讀者也不用恐懼,用一些資深人士的話說:1~2天就可以了。即使學得慢一些,一周就能學會。在接口自動化測試過程中,一般建議以自動生成測試數據為主(即先基於自定義的業務數據模板來自動生成大部分測試數據,然後手工再補充一些特殊的測試數據)。未來可以結合人工智能算法來完善測試數據、自動分析與生成接口調用鏈等,雖然本書沒有介紹這方面的內容,但有了本書作為的基礎,讀者就可以通過自學深入下去。
最後需要提醒讀者:想要做好測試,深刻理解用戶、產品和業務是非常重要的。任何商業軟件最終都是為了解決業務問題和滿足用戶的需求,而測試正是對這種質量的保障。所以,在學習自動化測試的過程中,一定要重視業務需求、測試思維和測試方法等。隻有具備良好的測試素質,纔能讓自動化測試發揮其價值,纔能真正做到事半功倍。
朱少民
國內知名測試專家
前言:本書整體設計思想
自動化測試的前景
軟件測試,在大多數的公司還是處於相對弱勢的地位,原因還主要在軟件測試本身:相比於軟件開發,軟件測試無論是進入門檻還是編程能力,要求都低一些;而且大多數公司的軟件測試還局限於手工測試。這就造成了業界對軟件測試的偏見——軟件測試隻是隨便點一點鼠標、技術含量低。
誠然,軟件測試離不開手工測試,但不能隻有手工測試沒有編程能力。技術性測試的方法有很多,常見的有自動化測試、性能測試、白盒測試、安全性測試等,這些測試方法都需要測試人員有比較強的編程能力。其中,自動化測試的進入門檻較低,但效果最明顯,所以,自動化測試可以作為廣大測試人員進入技術性測試的切入點。
現階段,薪資高一些的測試崗位,普遍需要做從業人員具有自動化基礎及實際操作能力。所以,從就業角度來說,自動化測試是突破測試行業薪資瓶頸的一條捷徑;從測試人員的職業發展來說,學習一定的技術,有助於建立技術思維以及行業內部的溝通,便於將來或是繼續走測試技術路線,或是轉到其他崗位。
本書寫作目的
相信很多測試人員和我的經歷很像,從最開始的手工測試開始積累經驗,在這個過程中肯定想過做自動化,做技術。我最開始是用QTP(Quick Test Professional,一種自動測試工具)錄制了登錄功能,看著瀏覽器自動打開、自動輸入網址、自動登錄,那種愉悅的心情是不言而喻的,但是真正能轉型成功,或者說能有一技之長的測試人員還是偏少的,原因就在於技術點的突破。
各種編程語言本身都有相同點,隻要突破了一門,其他語言學起來也就沒那麼難了。所以,如何突破一門語言,如何跨過第一道門檻,成為制約測試人員技術能力提升的關鍵點,這也是本書編寫的目的——引導測試人員突破Python的入門難點。
為什麼要選擇Python?最主要的原因是——合適。正所謂鞋合不合適隻有腳知道。Python簡單易學的特點,恰好符合測試人員的要求。很多時候,我都在懷疑Python是不是專為測試人員量身打造的。關於Python的更多優勢,讀者可以在正文看到。
本書特點
作者在構思本書的時候,也翻閱了市面上很多同類技術書籍,發現絕大多數都有一個通病——采用教科書式的寫作模式。所謂“教科書模式”,即按照“語言的歷史→語法→章節練習→案例講解“的模式來展開。這種模式很經典,內容也很翔實,但是太過於死板和理論化。這樣的書雖然仔細閱讀後確實能收獲很多,但是不利於快速上手。
讀教科書模式的書時,學習者很容易半途而廢,包括我自己,經常是看不到三分之一的內容就放棄了,所有的新鮮勁、韌性都在語法和練習中消磨殆盡了。我真正開始寫腳本並不是從某本書開始的,而是從實際的項目拆分入手,遇到問題再去翻這類教科書,純粹將它當作工具書來使用。
所以,本書不是按照傳統的教科書模式編寫,而是從實際要實現的目的著手,一步步將其拆分成知識點,再對知識點進行突破,將每個點拆分成一個個小的突破點——類似於“拆書幫”的形式,將“Python+MySQL處理HTTP協議接口的過程”拆解到一個個章節中。讀者在每個章節中都能學到完整的一個知識點,最後串聯各個知識點,實現最終的學習目標。關於如何分解、如何逐個突破,讀者可以在正文中看到。
讀者通過每個章節的功能實現,逐步建立對Python的理解,通過小篇幅的功能實現來提升成就感,激發自己繼續往下看、繼續往下學的信心和勇氣。本書所介紹的方法是作者在實際項目中實踐過的,並且也被很多業內同事所采用。讀者不僅可以將其用在Python學習中,也可以用在其他語言甚至生活中。
讀者對像
\u0097 對Python語言感興趣的人員;
\u0097 想在項目中實現HTTP協議接口自動化測試的人員;
\u0097 想要提升技術,突破技術的人員;
\u0097 初、中級測試工程師。
代碼下載
本書配套代碼的下載地址:https://pan.baidu.com/s/1h_OVP0QdhIgZ0pl8OWWekw。
密碼:fa68
有關於任何問題、建議和疑問,歡迎發郵件到:smallprocess@yeah.net
致謝
感謝Guido van Rossum於1989年發明了Python。
感謝電子工業出版社,審校此書,以及為本書能夠快速出版而付出的辛苦。
感謝何飛在本書構思和出版中所做的指導和幫助。沒有他的指引也沒有該書的出現。
感謝我的家人,感謝你們對我工作的理解和支持,有你們一路的付出纔有今天的這本書。