web自動化06-自動化流程


面試題

問題:你們公司的自動化測試框架是如何設計的?(你們是如何做自動化測試的?)提示:回答這個問題最好采用邊畫圖邊描述的方式,按照總分總的思路來描述。回答:我們公司的自動化測試框架的設計主要采用了:PO模式、UnitTest測試框架、數據驅動(參數化)這三個核心技術。

PO模式是一種面向對象的編程思想,就是把要測試的功能按照頁面進行封裝,把每一個要測試的頁面看作一個PO對象進行封裝。在進行PO封裝的時候我們把每一個頁面拆分成三層(也就是要定義三個類),分別為:對象庫層、操作層、業務層。對象庫層用來定義頁面中都包含了哪些元素,以及封裝了定位這些元素的方法,對象庫層只做這一件事情。操作層用來定義對頁面中的元素要執行什么樣的操作,並封裝成方法;操作層會直接調用對象庫層來獲取元素。業務層用來定義頁面中都包含了哪些業務操作的功能,並封裝成對應的方法。業務層就是將操作層的一個或多個元素的操作組合成一個具體的業務功能。調用關系:業務層會調用操作層,操作層會調用對象庫層。

等這些業務代碼編寫完之后,再根據測試用例編寫對應的測試腳本,測試腳本需要調用業務層封裝好的方法組合成一個完整的測試用例。我們采用UnitTest來管理測試腳本,之所以使用UnitTest這個測試框架,是因為使用這些測試框架可以很方便的管理和維護很多很多的測試用例;並且提供了豐富的斷言方法,方便對用例執行的結果進行判斷;而且還可以非常方便的生成測試報告。

我們引入了數據驅動的思想,主要是為了實現測試腳本與測試數據的分離,方便對測試數據的維護。(測試數據直接保存在了JSON文件中)

我們還使用Python的logging日志模塊來收集日志,方便對執行失敗的測試用例進行問題的定位和排查。

另外,我們還把那些公共的、通用的操作封裝成工具類和方法,供其他代碼方便直接調用,比如:把獲取瀏覽器驅動對象的方法、獲取警告框信息的方法都定義成了工具類。

以上就是我們公司對自動化測試項目架構的設計。

 
自動化測試流程
1. 自動化測試的流程
1. 需求分析
2. 挑選適合做自動化測試的功能
3. 設計測試用例
4. 搭建自動化測試環境 [可選]
5. 設計自動化測試項目的架構 [可選]
6. 編寫代碼
7. 執行測試用例
8. 生成測試報告並分析結果

 

1. 初始化項目
1.1 新建項目
項目名稱:webAutoTestTPshop
1.2 創建目錄結構

1.3 安裝依賴包
  • 安裝 selenium 包
  • 安裝 parameterized 包
  • 添加 HTMLTestRunner 
 
2. 初始化代碼 
  • 封裝驅動工具類
  • 封裝PO基類,定義 BasePage 和 BaseHandle 
 
編寫代碼
1. 抽取PO
根據用例分析待測功能,提取頁面對象
 
1. 定義頁面對象文件
登錄頁:login_page.py
首頁:index_page.py
后台頁面(個人中心頁):home_page.py
商品搜索頁:goods_search_page.py
商品詳情頁:goods_detail_page.py
購物車頁:cart_page.py
下訂單頁:order_page.py
訂單支付頁:order_pay_page.py
我的訂單頁:my_order_page.py
2. 分別編寫對象庫層、操作層、業務層的代碼
2. 編寫測試腳本
1. 定義測試腳本文件
登錄模塊:test_login.py
購物車模塊:test_cart.py
訂單模塊:test_order.py
2. 使用unittest管理測試腳本
3. 執行測試腳本
1. 使用unittest執行測試腳本
2. 調試代碼 

 

完善代碼
 
1. 數據驅動
1.1 定義數據文件
1. 定義存放測試數據的目錄,目錄名稱:data
2. 分模塊定義數據文件
登錄模塊:login.json
購物車模塊:cart.json
訂單模塊:order.json
3. 根據業務編寫用例數據
1.2 測試數據參數化
修改測試腳本,使用 parameterized 實現參數化
 
2. 日志收集
使用logging模塊實現日志的收集
2.1 示例代碼
import logging.handlers
import os
# 工程目錄
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) 
def init_log_config():
"""
初始化日志配置
"""
# 日志輸出格式
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(messag
e)s"
# 創建日志器
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# 創建格式化器
formatter = logging.Formatter(fmt)
# 輸出到控制台
sh = logging.StreamHandler()
sh.setFormatter(formatter)
logger.addHandler(sh)
# 輸出到文件,每日一個文件
log_path = os.path.join(BASE_DIR, "log", "tpshop.log")
fh = logging.handlers.TimedRotatingFileHandler(log_path, when='MIDNIGHT', interval=1
, backupCount=3)
fh.setFormatter(formatter)
logger.addHandler(fh)

 

3. 生成測試報告
使用HTMLTestRunner生成測試報告
report_file = "./report/report{}.html".format(time.strftime("%Y%m%d-%H%M%S"))
with open(report_file, "wb") as f:
runner = HTMLTestRunner(f, title="TPshop商城自動化測試報告", description="Win10.Fire
fox")
runner.run(suite)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM