1、自動化測試概念
自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。通常, 在設(shè)計(jì)了測試用例并通過評審之后,由測 試人員根據(jù)測試用例中描述的規(guī)程一步步執(zhí)行測試,得到實(shí)際結(jié)果與期望結(jié)果的比較。簡言之,自動化測試就是讓被測試的軟件自己運(yùn)行起來,執(zhí)行軟件的功能,或者就是讓其他的工具自己運(yùn)行起來,去檢查軟件的內(nèi)部和外部。自動化測試包含自動化和測試兩個(gè)概念:
自動化:由程序(或機(jī)器、設(shè)備等)代替人工自動完成指定目標(biāo)的過程。
測試:校驗(yàn)系統(tǒng)是否滿足規(guī)定的需求。
自動化測試:讓程序(或機(jī)器、設(shè)備等)代替人工自動完成系統(tǒng)校驗(yàn)的過程。
那么,機(jī)器怎么知道人類的要求?關(guān)鍵點(diǎn)是編程語言。
機(jī)器學(xué)習(xí)一個(gè)編程語言,輕松和簡單到令人發(fā)指的地步:安裝上去,機(jī)器就學(xué)會了。好在人類學(xué)習(xí)編程語言也不是特別難的事情。有了編程語言,就有了人機(jī)交流的橋梁,剩下的事情,是幫機(jī)器挑選工具。做對應(yīng)的測試,找到對應(yīng)的工具,這樣自動化就自動起來了。
總之,自動化測試引入的原因是就把軟件測試人員從枯燥乏味的機(jī)械性手工測試勞動中解放出來,以自動化測試工具取而代之,使測試人員的精力真正花在提高軟件產(chǎn)品質(zhì)量本身。盡管自動化測試可以降低人工測試的工作量,但并不能完全取代手工測試,一味追求測試自動化只會給企業(yè)帶來運(yùn)作成本的急劇上升。
自動化測試優(yōu)缺點(diǎn)
◆ 優(yōu)點(diǎn):
- (1) 提高測試執(zhí)行效率,節(jié)約時(shí)間成本;
- (2) 解放人力去做更重要的工作;
- (3) 可重復(fù)利用,建設(shè)對人的依賴;
- (4) 提升客戶滿意度;
- (5) 提升測試團(tuán)隊(duì)的整體水平;
- (6) 可大幅度減少兼容性測試的工作量;
- (7) 有些測試工作必須依靠自動化實(shí)現(xiàn)來完成。
◆ 缺點(diǎn):
- (1) 開發(fā)測試腳本需要花費(fèi)較大的時(shí)間成本,拉長周期;
- (2) 產(chǎn)品的快速迭代,自動化腳本也將不斷迭代,時(shí)間成本很高;
- (3) 不同的項(xiàng)目之間自動化腳本的復(fù)用度很低;
- (4) 對短期型項(xiàng)目產(chǎn)品實(shí)現(xiàn)自動化價(jià)值不高;
- (5) 自動化無法完全代替手工測試找到 bug,實(shí)現(xiàn) 100%覆蓋;
- (6) 自動化更多的適用于回歸測試;
- (7) 自動化開發(fā)過程對軟件測試團(tuán)隊(duì)的技術(shù)有更高的要求。
現(xiàn)在我也找了很多測試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒人解答問題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開源的!??!
qq群號:691998057【暗號:csdn999】
手工測試與自動化測試
手工測試:手工測試就是由測試人員一個(gè)一個(gè)的執(zhí)行用例,然后觀察測試結(jié)果是否符合預(yù)期,手工測試一般是基于兩個(gè)原因:(1)時(shí)間資源不足;(2)技術(shù)水平不足。在這些情況下,手工測試能夠發(fā)揮重要的作用。利用手工測試,我們可以定義測試,還可以跟蹤測試。
自動化測試:自動化測試分為功能自動化和性能自動化,前者是通過測試工具(或框架)錄制/編寫測試腳本,對軟件的功能進(jìn)行測試,并驗(yàn)證測試結(jié)果是否正確,從而代替部分的手工測試工作,達(dá)到節(jié)約人力成本和時(shí)間成本的目的。后者是通過性能工具來模擬成千上萬的虛擬用戶向系統(tǒng)發(fā)送請求,從而驗(yàn)證系統(tǒng)的處理能力。
2、自動化測試適用場合
自動化測試前提條件
(1) 軟件需求變動不頻繁
測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個(gè)代碼開發(fā)的過程,需要修改、調(diào)試,必要的時(shí)候還要修改自動化測試的框架,如果所花費(fèi)的成本不低于利用其節(jié)省的測試成本,那么自動化測試便是失敗的。項(xiàng)目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大。我們便可對相對穩(wěn)定的模塊進(jìn)行自動化測試,而變動較大的仍使用手工測試。
(2) 項(xiàng)目周期足夠長
自動化測試需求的確定、自動化測試框架的設(shè)計(jì)、測試腳本的編寫與調(diào)試均需要相當(dāng)長的時(shí)間來完成,這樣的過程本身就是一個(gè)測試軟件的開發(fā)過程,需要較長的時(shí)間來完成。如果項(xiàng)目的周期比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程,那么自動化測試便成為笑談。
(3) 自動化測試腳本可重復(fù)使用
如果費(fèi)盡心思開發(fā)了一套近乎完美的自動化測試腳本,但是腳本的重復(fù)使用率很低,致使其間所耗費(fèi)的成本大于所創(chuàng)造的經(jīng)濟(jì)價(jià)值,自動化測試便成為了測試人員的練手之作,而并非是真正可產(chǎn)生效益的測試手段了。
自動化測試使用場景
(1) 比較頻繁的回歸測試;
(2) 任務(wù)測試明確,不會頻繁變動;
(3) 每日構(gòu)建后的測試驗(yàn)證;
(4) 需要在多平臺上運(yùn)行的相同測試案例、組合遍歷型的測試,大量的重復(fù)任務(wù);
(5) 軟件維護(hù)周期長;
(6) 項(xiàng)目進(jìn)度壓力不太大;
(7) 被測軟件系統(tǒng)開發(fā)較為規(guī)范,能夠保證系統(tǒng)的可測試性;
(8) 具備大量的自動化測試平臺;
(9) 測試人員具備較強(qiáng)的編程能力;
(10) 軟件系統(tǒng)界面穩(wěn)定,變動少。
3、自動化測試工具介紹
自動化測試主流工具介紹
目前市面上自動化工具非常多,我們可以根據(jù)測試需求的不同級別來酌情選擇,大體上,有三種級別:代碼級別、接口/協(xié)議級別、界面級別,以下是根據(jù)不同級別對應(yīng)常用工具及特性。
(1) 代碼級別:
- ◆ XUnit:為每個(gè)測試方法產(chǎn)生一個(gè)對象實(shí)例,可擴(kuò)展的斷言、測試方法和測試類
- ◆ XMock:僅能適用于純粹的面向?qū)ο蟮恼Z言,使用多態(tài)來實(shí)現(xiàn)細(xì)節(jié)的模擬
- ◆ Coverage:覆蓋率測試工具
(2) 接口/協(xié)議級別:
- ◆ LoadRunner:支持全協(xié)議,重點(diǎn)是支持 HTTP 等
- ◆ SoapUI:支持 WebService 協(xié)議 SOAP
- ◆ WebLoad:支持 HTTP 協(xié)議
- ◆ RPT:重點(diǎn)支持 HTTP 和 TCP/UDP 協(xié)議
- ◆ SilkPerformance:重點(diǎn)支持 HTTP 和 TCP/UDP 協(xié)議
- ◆ HTTPClient,JsOUP:HTTP 協(xié)議和 HTML 元素處理
- ◆ JMeter:支持 HTTP,JMS 協(xié)議
(3) 界面(UI)級別:
- ◆ QTP/UFT:支持 Windows,web,java,.NET 應(yīng)用程序
- ◆ RFT:支持 Windows,web,java,.NET 應(yīng)用程序等
- ◆ TestComplete:支持各類應(yīng)用程序及第三方組件,對象識別能力強(qiáng)
- ◆ Selenium/Watir:支持 Web 應(yīng)用, 支持多平臺、多語言、多瀏覽器
- ◆ Sikuli IDE:基于圖像識別自動化測試工具,支持所有應(yīng)用
- ◆ Appium/MonkeyRunner:Android,IOS 移動應(yīng)用
Selenium 工具介紹
(1) Selenium 特點(diǎn):
- ◆ 開源,免費(fèi);
- ◆ 多瀏覽器支持:FireFox、Chrome、IE、Opera、Edge;
- ◆ 多平臺支持:Linux 、Windows、MAC;
- ◆ 多語言支持:Java、Python、Ruby、C#、JavaScript、C++;
- ◆ 對 Web 頁面有良好的支持;
- ◆ 簡單(API 簡單)、靈活(用開發(fā)語言驅(qū)動);
- ◆ 支持分布式測試用例執(zhí)行。
(2) Selenium 版本:
Selenium 經(jīng)歷了兩個(gè)版本,Selenium 1.0 和 Selenium 2.0,Selenium 不是由單獨(dú)一個(gè)工具構(gòu)成的,而是由一些插件、類庫組成,每個(gè)部分都有其特點(diǎn)和應(yīng)用場景。
(3) Selenium 的構(gòu)成:
◆ Selenium IDE:嵌入到 Firefox 瀏覽器中的一個(gè)插件,實(shí)現(xiàn)簡單的瀏覽器操作的錄制與回放功能。官方給出了它自身作用的定位:快速地創(chuàng)建 bug 重現(xiàn)腳本,在測試人員測試過程中,發(fā)現(xiàn) bug 之后可以通過 IDE 將重現(xiàn)的步驟錄制下來,以幫助開發(fā)人員更容易地重現(xiàn) bug。IDE 錄制的腳本可以轉(zhuǎn)換成多種語言,從而幫助我們快速地開發(fā)腳本。
◆ Selenium Grid:自動化的測試輔助工具,Grid 通過利用現(xiàn)有的計(jì)算機(jī)基礎(chǔ)設(shè)施,能加快 Web-App 的功能測試。利用 Grid 可以很方便地實(shí)現(xiàn)在多臺機(jī)器上和異構(gòu)環(huán)境中運(yùn)行測試用例。
◆ Selenium RC 遠(yuǎn)程控制:Selenium RC(Remote Control 遠(yuǎn)程控制)是 Selenium 家族的核心部分。Selenium RC 支持多種不同的語言編寫自動化測試腳本,通過 Selenium RC 的服務(wù)器作為代理服務(wù)器去訪問應(yīng)用,從而達(dá)到測試的目的。
◆ Client Libraries : 主要用于編寫測試腳本的庫,用來控制 Selenium Server。
◆ Selenium Server:負(fù)責(zé)控制瀏覽器行為。
◆ Selenium Core:是被 Selenium Server 嵌入到瀏覽器頁面中的。其實(shí)Selenium Core 就是一堆 JavaScript 函數(shù)的集合,即通過這些 JavaScript 函數(shù),我們才可以實(shí)現(xiàn)用程序?qū)g覽器進(jìn)行操作。
◆ Launcher:用于啟動瀏覽器,把 Selenium Core 加載到瀏覽器頁面當(dāng)中,并把瀏覽器的代理設(shè)置為 Selenium Server 的 Http Proxy。
Selenium RC 與 WebDriver 的區(qū)別
確切的說,在 Selenium 2.0 中,可以將 WebDriver 看作 Selenium RC 的替代品。因?yàn)?Selenium 為了保持向下的兼容性,所以在 Selenium 2.0 中并沒有徹底地拋棄 Selenium RC。如果是初次使用 Selenium 開發(fā)一個(gè)新的自動化測試項(xiàng)目,那么可以直接使用 WebDriver。那 Selenium RC 與 WebDriver 的區(qū)別是什么呢?Selenium RC 是 在瀏 覽器中 運(yùn)行 JavaScript 應(yīng)用 ,使用瀏覽器內(nèi)置的JavaScript 翻譯器來翻譯和執(zhí)行 selenese 命令(selenese 是 Selenium 命令集合)。
WebDriver 是通過原生瀏覽器支持或者瀏覽器擴(kuò)展來直接控制瀏覽器。WebDriver 針對各個(gè)瀏覽器而開發(fā), 取代了嵌入到被測 Web 應(yīng)用中的JavaScript。與瀏覽器的緊密集成,因此支持創(chuàng)建更高級的測試,避免了JavaScript 安全模型導(dǎo)致的限制。除了來自瀏覽器廠商的支持之外,WebDriver 還利用操作系統(tǒng)級的調(diào)用,模擬用戶輸入。
特別說明:Selenium 與 WebDriver 原先屬于兩個(gè)不同的項(xiàng)目,現(xiàn)在兩個(gè)項(xiàng)目已合并,合并的部分原因是 WebDriver 解決了 Selenium 存在的缺點(diǎn)(例如能夠繞過 JavaScript 沙箱,我們有出色的 API),部分原因是 Selenium 解決了WebDriver 存在的問題(例如支持廣泛的瀏覽器)。
4、Python 腳本語言介紹
(1) Python 語言簡介:
Python 是一種計(jì)算機(jī)程序設(shè)計(jì)語言。是一種面向?qū)ο蟮膭討B(tài)類型語言,最初被設(shè)計(jì)用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。有人說我們公司的軟件是用某語言開發(fā)的,所以自動化測試也要選某語言; 其實(shí)軟件開發(fā)語言和軟件自動化測試語言沒有必然聯(lián)系。也就是說,基于 Python (+ Selenium)編寫的自動化測試腳本既可以測試基于 Java 開發(fā)的 Web 項(xiàng)目,也可以測試基于 PHP 開發(fā)的 Web 項(xiàng)目。所以,在選擇 Selenium 自動化測試語言時(shí)不需要考慮與開發(fā)語言的一致性。
(2) 為什么選擇 Python ?既然 Selenium 可以支持多語言,如 Java、C#、Ruby、PHP 等,那我們?yōu)槭裁磿x擇 Pyhton 呢?主要有以下幾點(diǎn)原因:
◆ 第一:簡單易學(xué),對編程能力較弱的初學(xué)者來說,通過自動化測試技術(shù)的實(shí)踐,不僅可以掌握自動化測試技術(shù),還能掌握一門語法簡單且功能強(qiáng)大的編程語言。
第二:通用性強(qiáng),Python 可以應(yīng)對很多不同的項(xiàng)目需求,根據(jù)不同場景需要選擇相應(yīng)的工具可以大大提高工作效率,例如:
◆ UI 自動化測試/兼容性測試(Python+Selenium)
◆ 接口測試(Python+requests)
◆ 性能測試(Python+Locust)
◆ 安全性測試(Python+Scapy)文章來源:http://www.zghlxwxcb.cn/news/detail-756742.html
END今天的分享就到此結(jié)束了,點(diǎn)贊關(guān)注不迷路!文章來源地址http://www.zghlxwxcb.cn/news/detail-756742.html
到了這里,關(guān)于自動化測試基礎(chǔ)知識:什么是自動化測試?需要學(xué)習(xí)哪些知識與工具!的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!