
摘要:隨著互聯網技術的發展和軟件應用的普及,自動化測試已成為提高軟件質量的重要手段。在日益激烈的市場競爭中,自動化測試能夠顯著提升測試效率,使測試人員能專注于更深入的測試任務。介紹了一種基于Python的自動化測試框架,該框架采用Selenium和HTTPTestRunner,適用于Scrum敏捷開發模式。通過模擬用戶操作前端界面及測試后端接口,該框架能自動生成詳盡的測試報告,有效減少重復性的功能測試工作,進而提高整體工作效率。實驗證明,此框架能夠顯著縮短測試周期,確保軟件產品的高質量交付。
關鍵詞:自動化測試;高效;多功能;Python;Scrum
一、前言
隨著互聯網技術發展越來越強大,軟件的使用也隨著越來越廣泛,互聯網公司之間的競爭越來越激烈。在這種情況下,軟件質量和功能成為搶奪用戶市場非常重要的一環。軟件測試是保證軟件質量必不可少的一環,在當前計算機功能發展越來越強大的背景下,自動化測試所能實現的功能也越來越多。它能夠在少量的資源使用上模擬大量的真實使用環境,模擬用戶通過自動化腳本重復進行固定、繁瑣的真實操作,可以無視場景和時間對產品進行24小時監控。目前在穩定的產品中,自動化測試被廣泛應用,它能夠大量節省測試人員在繁瑣的功能測試中花費的時間,測試人員得以進入更全面、更深入的測試環節,促使產品質量更上一層臺階。
自動化測試目前在測試環節中充當一個輔助作用,在大幅度提高回歸測試效率的同時還能夠模擬復雜的測試環境,比如關鍵系統在24小時×7天的高強度工作下的運行狀態,大量用戶在同一時刻并發運行軟件時的軟件性能測試,自動化測試都能夠在使用資源少的情況下,得到高效的結果。因此,在各大互聯網公司中,自動化測試已經成為不可或缺的一環,它為軟件測試環節提供了強大的技術支持,使得軟件質量得到更充分的保障[1]。
二、軟件自動化測試及Scrum敏捷開發模式概述
(一)自動化測試的概念
自動化測試是通過軟件實現對測試用例的自動化運行,實施測試流程。但是,完整的自動化測試不僅僅包括測試過程的實施,還應當能夠自動判斷測試結果與實際結果是否一致,能夠設置不同的前置條件與控制不同的測試條件同時進行測試,并自動生成測試報告[2]。
(二)自動化測試生命周期
1.確認自動化范圍
它是自動試驗的第一階段,其目的是用來判斷工程自動化的有效性。需要確定哪些應用模塊可以進行自動化;哪些測試可以進行自動化,如何實現自動化;討論自動化成本以及復用性和可維護性等因素[3]。
在進行測試自動化以前,必須完成下列技術測試:測試用例自動化可行性、AUT自動化可行性。
2.選擇正確的自動化測試工具
自動化測試非常依賴所使用的測試工具,因此選擇正確的自動化測試工具是至關重要的一步。在工作中,需要關注工具對板載數據的把握程度、直觀性、靈敏度等。工具能夠協助創建解決查詢困難或問題的支持團隊。假如需要一種對各種瀏覽器都兼容的監控工具,那么就需要一種能夠在不同的瀏覽器和設備之間連接的視頻日志及自動化腳本的元數據,并且突出顯示和監控錯誤的機制。
3.測試計劃+測試設計+測試策略
測試策略階段:選擇測試策略之前,必須要對項目產品進行很全面的了解,產品需要的應用技術對測試策略的影響起決定性作用。例如,項目是對一個Web軟件進行測試,那么就需要知道Web有哪些方法是完全不能實施的。
測試設計階段:工程設計部門主要確定了風險評估過程的創建目標和條件、設計要求、提供測試環境的程序目標和條件、初始測試計劃、測試數據要求、缺陷控制方式以及適當的質量控制手段等,以確保測試裝置與登臺環境的運行質量。
測試計劃階段:測試工程師團隊已經發展了一個軟件測試框架,用以介紹整個軟件測試流程的構成和在設計軟件測試流程模型后,管理整個軟件測試流程的方法。后期設計的是一個測試結構,在其中描述了整個測試程序的基本架構和對測試流程的管理。
測試工程師團隊已經研究了一個軟件測試框架,用以提供測試程序的架構和建立測試程序模式和控制軟件測試流程的方法。后期提供了一個測試架構,此架構提供了一個測試程序的架構和軟件測試流程的管理[4]。
4. Scrum敏捷開發模式
Scrum的工作流程是先把一個軟件項目分成若干個子任務,把整個開發時間分為若干個時間段,每個時間段可被稱為一個Scrum過程中的迭代周期,每個迭代周期都被稱為一個沖刺,英文為Sprint,一個沖刺周期的時間長度通常在兩周到四周之間,具體時間由開發團隊和項目主管決定。每一個Sprint中都有Sprint Backlog,在這里稱為沖刺任務集,沖刺任務集的子任務由Sprint計劃會議決定,并按照優先級把需要完成的目標計入Sprint Backlog,每個Sprint周期之后,都會交付一個可用的產品。每個可用的產品都會比前一周期的產品多出一些用戶所需的功能并且更加完善,所有迭代完成之后交付最終項目產品。
Scrum軟件敏捷開發中有三種角色。第一個角色是產品負責人,代表利益所有者,負責與項目有關的需求的整理,并確定這些需求的優先級,根據優先級來確定每一個沖刺周期的子任務,并對最終交付的項目負責。第二個角色是Scrum主管,英文是Scrum Master,負責整個項目過程,肩負起讓項目按照Scrum的開發流程來進行運轉,同時負責在開發過程中對出現的問題及時處理,以及在迭代過程中阻攔外界的干擾,保證能按照既定的計劃執行。第三個角色是開發團隊,負責每個沖刺周期的具體工作任務,一般是五到九人,包括設計人員、測試人員和開發團隊等。
三、自動化測試框架優缺點
在軟件測試領域,存在多種框架以應對不同規模和復雜度的應用程序需求。線性框架以其直觀易用的特點,通過自動記錄和回放測試腳本,簡化了小型應用或團隊的測試流程。這種框架的顯著優勢在于快速生成測試用例,無需深厚的編程基礎,降低了入門門檻。然而,其缺點同樣不容忽視,即錄制的腳本缺乏靈活性,一旦應用發生變動,便需重新錄制,增加了后期維護的成本。相比之下,基于模塊化的框架則通過將應用分割為獨立單元,實現了更高的測試效率和可維護性。每個模塊可獨立生成測試腳本,使得變更僅影響相關部分,降低了維護成本。高度的模塊化設計不僅資源消耗少,還促進了測試腳本的重用,但這一框架的構建對開發者的語言基礎有一定要求。庫結構框架在模塊化基礎上更進一步,通過分類測試腳本中的相似任務為通用功能,并創建數據庫以復用這些功能,進一步提升了效率和可維護性。然而,框架的復雜性也隨之增加,測試腳本的開發需要更多時間和技術投入。關鍵字驅動框架與數據驅動框架則代表了另一種思路,它們強調測試數據與腳本的分離,特別是關鍵字驅動框架,通過定義標準關鍵字來簡化測試腳本,實現跨測試場景的重用。這種框架的維護相對容易,能夠靈活應對多組測試數據的需求,但框架的設計與測試數據的準備都較為耗時,對測試人員的經驗和技術水平提出了較高要求。數據驅動框架作為數據驅動架構的深化,更進一步將測試腳本中的通用屬性剝離為關鍵字,使得測試腳本更加簡潔、易操作。盡管這種框架在降低腳本編寫難度和提高復用性方面表現出色,但其開發、維護和管理的成本也較高,對自動化測試的知識儲備有著較高的要求[5]。
(一)測試對象分析
該項目涉及端為wap端,項目需求為新增一個試駕有禮的留資頁面。
測試要素:URL鏈接打開以及參數拼接,前端界面展示,前端功能交互,留資場景測試,異常場景結果。
該項目主要是通過新增前端留資頁面,滿足廠商留資需求。測試重點在于各種參數拼接的入口進入頁面能否正確加載頁面,車型的切換、車型價格和優惠價格顯示是否有誤,最主要的功能便是留資。因此本次自動化的決定對象便是留資和入口參數拼接。
入口參數拼接:對各種有可能出現的拼接情況進行遍歷,包括無參數,只拼接車系/廠商ID,入口來源Sourcedetail的拼接進行,查看頁面數據加載是否正確。
留資:留資測試包括各種場景的留資操作,包括對手機號格式不正確、手機號缺失、沒有定位信息、個人保護申明未填寫、數據缺失等各方面進行全面測試,確保留資能夠正常操作。
線索入庫:留資成功或失敗的線索都會加載進入數據庫,成功的入庫線索會帶有頁面拼接的sourcedetail,如無則默認30;失敗的線索會被記錄留資失敗原因,如果新增10條失敗線索則會進行自動告警。
(二)確定自動化測試部分
1.url鏈接打開不同場景。
2.不同留資類型進行留資。
3.對后端接口進行重復請求。
4.將測試報告自動發送至指定郵箱。
(三)制定測試目標
1.使用PYcharm自帶selenium框架對wap端瀏覽器進行自動化測試。
2.對前端URL鏈接所有拼接組合進行測試,返回測試結果。
3.對前端所有交互功能進行測試,返回測試結果。
4.對前端留資功能進行全場景遍歷,查看前端攔截是否有缺漏。
5.對后端留資接口進行全場景遍歷,查看后端是否有攔截缺漏或返回狀態異常。
6.對自動化測試產生的留資數據自動進行數據庫查詢。
7.將測試結果通過HTMLTestrunner框架返回html測試報告文件。
8.將測試報告文件通過sende-mail方法庫發送給指定對象。
(四)案例需求信息管理模塊測試
需求信息管理模塊由產品負責人進行管理,可以進行增加、修改和刪除的操作,產品負責人在這個模塊可以提出代表利益相關者的需求,項目經理在其權限內可以查看這些需求,根據這些項目需求來分配子任務,如圖1、圖2所示。
四、結語
本框架的設計目前還不夠完善,與市面上成熟的系統相比,在許多功能上仍有不足之處。盡管如此,系統所蘊含的巨大潛力,以及它為特定應用場景帶來的獨特價值不容小覷。在此基礎上,今后將致力于提高框架的整體質量,包括但不限于增強其核心功能、優化用戶體驗、加強安全性以及提高系統的可擴展性和兼容性。通過持續的技術更新和深入的用戶反饋收集,本框架將會逐漸成長為一個功能齊全、性能穩定的解決方案。
參考文獻
[1]葉振宇.智能手機軟件開發中的質量控制策略[J].紹興文理學院學報,2005(01):68-72.
[2]許靜,陳宏剛,王慶人.軟件測試方法簡述與展望[J].計算機工程與應用,2003(13):75-78.
[3]黃蓉.基于Android操作系統的自動化測試系統的研究與實現[D].北京:北京郵電大學,2012.
[4]景慎艷.軟件集成測試的用例設計及測試管理[J].電子商務,2011,11(06):63-65.
[5]侯菊敏.基于Android的關鍵字驅動自動化測試框架研究[D].廣州:中山大學,2012.
作者單位:先臨三維科技股份有限公司
責任編輯:王穎振、楊惠娟