深度解析自動化測試流程(純干貨)

首發(fā)知乎地址:https://zhuanlan.zhihu.com/p/114787270

最近很多小伙伴咨詢自動化測試到底該怎么做?流程是什么樣的?在每個階段都需要注意什么?本文也就主要從自動化測試的基本流程入手,對面試自動化測試工程師的同學(xué)會有不少幫助。對于在職的朋友,也可以參考此流程,推進自己項目的自動化測試。

今天就通過這篇文章給大家深度解析一下自動化測試的流程。

自動化測試的流程和功能測試其實挺相似的,整個流程也是按照需求分析及測試計劃階段、測試設(shè)計階段、測試執(zhí)行和測試總結(jié)階段,總結(jié)下來就是下面一張圖,ppt中純手繪,效果不好,大家見諒:

一、測試需求分析及計劃階段

自動化測試是要在手工測試之后進行的,也就是回歸測試階段,這時候其實是已經(jīng)具備完善的功能測試用例啦,并且經(jīng)過前期功能測試,系統(tǒng)版本也已經(jīng)比較穩(wěn)定啦,這就具備了自動化測試的必要條件,下面需要完成幾個小任務(wù):

1、抽樣分析項目自動化測試的可行性

在進行項目自動化測試之前,第一步就是要確認其可行性,是否可以實行測試自動化。如果項目時間緊迫、項目周期短、項目需求變幻無常則建議和上級領(lǐng)導(dǎo)商議,不要開展自動化測試。想要開展自動化測試,還是應(yīng)該遵循以下幾個前提條件:

軟件需求變動不頻繁

項目周期足夠長

自動化測試腳本可重復(fù)使用

通過可行性分析后,接下來需要做一個demo ,使用選定的框架嘗試識別頁面元素,運行簡易腳本,如果沒問題,即可采用該框架對該項目進行自動化測試,常見的需要的驗證的環(huán)境有:

WEB端的自動化測試采用python+selenium+unittest框架是否可行?

App端自動化測試采用Java+Appium+Junit框架是否可行?

2、測試需求分析

對系統(tǒng)的功能需求進行再次梳理,劃分出可以進行自動化測試的需求,劃分的標準一般是簡單、重復(fù)性高、業(yè)務(wù)復(fù)雜度低的需求,這樣便于我們快速地實現(xiàn)一個版本,從而建立推進自動化的信心。相反,選擇了業(yè)務(wù)復(fù)雜的需求,則會花費大量的時間在腳本制作上,并且各種異常情況的處理,會嚴重打擊我們推進自動化測試的積極性和信心,最后也就喪失了我們做自動化的初衷(自動化測試是不需要也沒有必要做到 100%覆蓋率的)。所以,在測試需求分析這個階段,確定測試覆蓋率以及自動化測試粒度、測試用例上的篩選等都是重點工作。

3、制定測試計劃

理想情況下,測試始于測試目標和測試策略的建立,測試策略應(yīng)滿足測試目標的要求。管理層的測試計劃包括評估完成所有測試活動的時間,測試活動安排及資源分配,控制測試過程以及跟蹤整個測試過程所需采取的活動,這些高層次活動應(yīng)該在項目開始前就實施,并貫穿項目的整個開發(fā)過程。

測試計劃是測試過程中最重要的活動,包括如下活動:

準入準出原則,確定什么時候可以開展自動化,達到什么標準,自動化項目可以結(jié)束

測試范圍,鑒別和確定測試需求的優(yōu)先級

進度安排,在什么時間交付什么成果

人員安排,根據(jù)團隊成員情況,技術(shù)好的復(fù)雜腳本實現(xiàn);業(yè)務(wù)能力強的進行功能步驟拆解等

風(fēng)險評估,對項目過程中的風(fēng)險進行預(yù)估

二、測試設(shè)計、開發(fā)階段

本階段主要的工作是測試用例的設(shè)計及腳本開發(fā),一般情況下,我們是先進行測試用例的設(shè)計,在通過評定之后,保證測試用例已經(jīng)覆蓋了需求之后,再進行測試腳本的開發(fā),這種方式是經(jīng)過實踐驗證的,最為理想的做法。

1、測試用例設(shè)計

前面已經(jīng)提到過,自動化測試用例不必從0開始,是完全可以從功能測試用例,通過篩選、簡單修改就可以直接拿來用的,主要步驟為:

篩選功能測試用例

將其轉(zhuǎn)化為自動化用例模板

補充、修改不適于自動化的用例

持續(xù)維護和優(yōu)化自動化用例

篩選功能測試用例的標準參考如下:

不是所有的手工測試用例都要轉(zhuǎn)為自動化測試用例

考慮到腳本開發(fā)的成本,不要選擇流程太復(fù)雜的用例

選擇的用例最好可以構(gòu)建成場景

選取的用例可以是你認為是重復(fù)執(zhí)行,很繁瑣的部分

選取的用例可以是主體流程,這部分適用于冒煙測試

在設(shè)計(補充、修改)自動化測試用例過程需要遵循的原則:

一個用例為一個完整的場景,從用戶登錄系統(tǒng)到最終退出并關(guān)閉瀏覽器

一個用例只驗證一個功能點,不要試圖在用戶登錄后把所有的功能都驗證一遍

盡可能少的編寫逆向測試用例。

用例和用例之間盡量避免產(chǎn)生依賴

一條用例完成測試之后需要對測試場景進行還原,以免影響其它用例的執(zhí)行

2、測試腳本開發(fā)

測試腳本開發(fā)包括創(chuàng)建具有可維護性、可重用性、簡單性、健壯性的測試程序。同時要注意確保自動測試開發(fā)的結(jié)構(gòu)化和一致性。根據(jù)已經(jīng)開發(fā)好的測試用例,編寫各個功能點的自動化測試腳本,并添加檢查點,進行參數(shù)化。該過程還需要編寫數(shù)據(jù)文件處理腳本、日志文件處理腳本、數(shù)據(jù)庫處理腳本、公共檢查點處理腳本等。

在腳本開發(fā)中,常見的模型有:

線性模型:是我們開發(fā)腳本的基礎(chǔ)

模塊化驅(qū)動測試:需要將一些功能模塊獨立出來,便于維護和調(diào)用

數(shù)據(jù)驅(qū)動測試:參考作者文章:

捉蟲布道人:【selenium】數(shù)據(jù)驅(qū)動測試DDT?zhuanlan.zhihu.com

關(guān)鍵字驅(qū)動測試:參考作者文章:

捉蟲布道人:【selenium】關(guān)鍵字驅(qū)動測試KDT?zhuanlan.zhihu.com

為了更好地團隊合作進行自動化測試,我們需要對項目進行分層管理,可以根據(jù)需要劃分公共模塊部分、測試用例、測試數(shù)據(jù)、測試報告、測試日志等,并提供執(zhí)行主模塊。

>need-to-insert-img

其中公共模塊可以包括:日志模塊,郵件發(fā)送模塊,公共登錄、退出模塊、數(shù)據(jù)庫操作模塊等,主要是便于測試用例中調(diào)用。

執(zhí)行主模塊主要負責(zé)所有測試用例調(diào)度的,可以參考如下代碼:

import unittest

import time

from HTMLTestRunner import HTMLTestRunner

from public.mailsend1 import mailsend

from public.Loginmodel import verylogin,veryLogout

import os

if __name__=='__main__':

? ? path1 = os.path.dirname(__file__)+r"/test_cases/"

? ? path2 = os.path.dirname(__file__)+r"/test_report/"

? ? send = mailsend()

? ? discover = unittest.defaultTestLoader.discover(path1,pattern='veryReg*.py')

? ? filename1 = time.strftime("%Y-%m-%d-%H-%M-%S")

? ? filename2 = filename1+r'.html'

? ? filename = path2+filename2

? ? with open(filename,'wb') as f:

? ? ? ? runner = HTMLTestRunner(stream=f,title='測試結(jié)果',description='第一輪測試結(jié)果')

? ? ? ? runner.run(discover)

? ? time.sleep(3)

? ? send.sendFujian(filename1)

最后為了生產(chǎn)一個可視化報告,我們可以選擇二次開發(fā)的HTML格式報告,具體的使用參考作者文章:

捉蟲布道人:【selenium】生成HTML可視化報告的兩個常見模塊?zhuanlan.zhihu.com

三、測試執(zhí)行階段

隨著測試計劃的建立和測試環(huán)境的搭建完畢,按照測試程序進度安排執(zhí)行測試,可以通過手動或自動或半手動半自動方式執(zhí)行,它們各自可以發(fā)現(xiàn)不同類型的錯誤。測試執(zhí)行結(jié)束后,需要對測試結(jié)果進行比較、分析以及結(jié)果驗證,得出測試報告(包括總結(jié)性報告和詳細報告)。

如果腳本已經(jīng)穩(wěn)定,可以采用Jenkins工具進行持續(xù)集成,最終實現(xiàn)無人值守測試,集成方式參考作者文章:

捉蟲布道人:【selenium】Python+selenium+Jenkins集成?zhuanlan.zhihu.com

四、測試總結(jié)階段

對測試結(jié)果文件中報告錯誤的記錄進行分析,如果確實是由于被測系統(tǒng)的缺陷導(dǎo)致,則提交缺陷報告。對自動化測試的結(jié)果進行總結(jié),分析系統(tǒng)存在的問題,并提交《測試報告》。

五、總結(jié)一下

自動化測試是現(xiàn)在企業(yè)中級測試工程師所要求的基本技能,如果想在軟件測試行業(yè)具備核心競爭力,就需要在這方面下點功夫,希望對面試自動化測試工程師的同學(xué)提供面試時候的思路。對于在職的朋友,提供推進自己項目的自動化測試的方法。

作者還寫過一篇如何提高團隊中推行自動化測試成功率的文章,希望對已經(jīng)具備自動化測試經(jīng)驗的朋友有所幫助:

捉蟲布道人:軟件自動化測試實施的幾點建議?zhuanlan.zhihu.com

好了就先寫到這里,文中還有很多不足之處,在后續(xù)持續(xù)維護更新,大家要是覺得對自己有幫助的話,就點贊、收藏下該文,鼓勵一下作者,繼續(xù)創(chuàng)作好文?。?/b>

【原創(chuàng)文章 全文手打 轉(zhuǎn)載請聯(lián)系作者】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容