国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[緣起] 前端 E2E 測(cè)試的困境

awokezhou / 1421人閱讀

摘要:與其它自動(dòng)化測(cè)試不同,前端的測(cè)試一直是個(gè)老大難問(wèn)題,難點(diǎn)主要在于如何描述測(cè)試。自動(dòng)化測(cè)試的核心是檢查特定輸入能不能得到符合預(yù)期的結(jié)果。結(jié)構(gòu)不能反應(yīng)視圖的真實(shí)狀態(tài),很可能會(huì)出現(xiàn)雖然測(cè)試通過(guò),但實(shí)際上在用戶眼里仍然是錯(cuò)誤的表現(xiàn)。

與其它自動(dòng)化測(cè)試不同,前端的 E2E 測(cè)試一直是個(gè)老大難問(wèn)題,難點(diǎn)主要在于 如何描述測(cè)試

自動(dòng)化測(cè)試的核心是檢查特定輸入能不能得到符合預(yù)期的結(jié)果。對(duì)于單元測(cè)試和 API 測(cè)試來(lái)說(shuō),“特定輸入”就是函數(shù)或者接口的參數(shù),結(jié)果也是當(dāng)前語(yǔ)言的數(shù)據(jù)類型或者通用的比如 JSON,二者一方面好描述,另一方面好驗(yàn)證。寫起來(lái)就沒什么難度。

比如

sum(a, b) {
 return a + b;
}

要驗(yàn)證輸入 1 和 2,返回 3,則可以寫成:

const assert = require("assert");
describe("sum", function() {
  it("should equal", function() {
    assert.equal(sum(1, 2), 3);
  });
});

這里輸入輸出都很容易描述,所以自動(dòng)化測(cè)試就沒什么難度。

但是 UI 的 E2E 測(cè)試并非如此。UI 是做給用戶看的,所以,一個(gè) UI 的 E2E 測(cè)試應(yīng)該寫成這種形式(這里拿一個(gè)類似于活動(dòng)行的應(yīng)用來(lái)舉例子):

打開應(yīng)用首頁(yè)

顯示活動(dòng)列表

點(diǎn)擊列表中的任一項(xiàng)

進(jìn)入活動(dòng)詳情頁(yè)

點(diǎn)擊報(bào)名按鈕

登記個(gè)人信息

點(diǎn)擊付費(fèi)按鈕

完成付費(fèi)

看到報(bào)名成功的信息

這個(gè)過(guò)程當(dāng)中用戶的操作,很難和程序當(dāng)中的抽象產(chǎn)物,比如按鈕、列表等產(chǎn)生關(guān)聯(lián)。操作的結(jié)果,“進(jìn)入下一頁(yè)”,也很難進(jìn)行進(jìn)一步的校驗(yàn)。

所以在之前的生產(chǎn)實(shí)踐中,大家喜歡用選擇器來(lái)進(jìn)行 E2E 測(cè)試,代表產(chǎn)品有 Cypress 和 Nightwatch。我覺得,這里一方面有 jQuery 帶來(lái)的使用習(xí)慣延續(xù)和思維定勢(shì);另一方面,借助 XPath,找到特定元件,進(jìn)行交互操作和校驗(yàn)元素幾乎是大家唯一的選擇。

使用 CSS 選擇器的方案并不完美,比如:

選擇器本身,和 UI 視圖可能并沒有強(qiáng)關(guān)聯(lián),寫出來(lái)的測(cè)試可讀性不強(qiáng),一段時(shí)間之后回頭去看,很可能會(huì)看不懂。

HTML 的 DOM 結(jié)構(gòu)并不穩(wěn)固,隨著功能增減版本迭代經(jīng)常發(fā)生變化,這個(gè)時(shí)候我們就要跟著修改測(cè)試用例。

DOM 結(jié)構(gòu)不能反應(yīng)視圖的真實(shí)狀態(tài),很可能會(huì)出現(xiàn)雖然測(cè)試通過(guò),但實(shí)際上在用戶眼里仍然是錯(cuò)誤的表現(xiàn)。

那么,說(shuō)了這么多不容易、其它方案的不完美,我的解決方案又是怎么樣的呢?

這里請(qǐng)容許我賣一下關(guān)子,下次再介紹由我廠 OpenResty Inc. 打造的前端自動(dòng)化工具 Navlang。


大家好,我是 Meathill,目前在 OpenResty Inc. 負(fù)責(zé)前端開發(fā)工作。今年我會(huì)利用業(yè)余時(shí)間,介紹我廠在前端方面的工作,包括各種垂直領(lǐng)域,比如自動(dòng)化、基于 DevTool Protocol 開發(fā)、WebExtension 開發(fā)、Vue、CodeMirror、組件化等等,內(nèi)容包括進(jìn)展、經(jīng)驗(yàn)、心得、踩坑、產(chǎn)品等。

歡迎大家關(guān)注本專欄,也歡迎大家光臨我的博客:山維空間。如果你有任何疑問(wèn)問(wèn)題都可以在 SF 和我的博客上向我發(fā)問(wèn),我一定盡量答復(fù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/8928.html

相關(guān)文章

  • 關(guān)于 E2E 測(cè)試

    摘要:與單元測(cè)試不同,后者通常需要測(cè)試參數(shù)參數(shù)類型參數(shù)值參數(shù)數(shù)量返回值拋出錯(cuò)誤等,目的在于保證特定函數(shù)能夠在任何情況下都穩(wěn)定可靠完成工作。單元測(cè)試假定只要所有函數(shù)都正常工作,那么整個(gè)產(chǎn)品就能正常工作。 上一篇文章發(fā)布后,竟然收獲到一些同學(xué)的注意,實(shí)在是意外之喜。不過(guò)我也發(fā)現(xiàn),很多同學(xué)對(duì) E2E 測(cè)試不夠了解,正好我廠的產(chǎn)品也沒做到能作為商用版發(fā)布的程度,所以這篇再來(lái)聊聊 E2E 測(cè)試吧。本...

    jayzou 評(píng)論0 收藏0
  • 前端E2E測(cè)試框架 cypress了解一下

    摘要:是一款開箱即用可以跑在瀏覽器上的測(cè)試工具。同樣,測(cè)試了也可以直接調(diào)試。這個(gè)時(shí)候我們的測(cè)試文件就可以訪問(wèn)了,點(diǎn)擊之后發(fā)現(xiàn)他需要我們編寫測(cè)試用例,那么接下來(lái)就手把手教你編寫基本的測(cè)試用例。 What is E2E? 所謂的E2E就是end-to-end。 假設(shè)我們編寫的每個(gè)功能程序都是一個(gè)黑匣子,最終用戶也只會(huì)看到這個(gè)黑匣子,那么站在用戶的角度來(lái)看并不需要知道這個(gè)黑匣子內(nèi)部是什么東西也不...

    mushang 評(píng)論0 收藏0
  • Vue Cli安裝以及使用

    摘要:?jiǎn)卧獪y(cè)試前端的單元測(cè)試目前有兩個(gè)比較熱的框架,一個(gè)是的方式,一個(gè)是。小伙伴們不用急,關(guān)于單元測(cè)試這塊,我會(huì)找時(shí)間寫博客的。首先前端的測(cè)試分為兩種,一個(gè)是單元測(cè)試,另一個(gè)就是測(cè)試了。? ? ? ? 因?yàn)楣卷?xiàng)目要用vue框架,所以會(huì)用vue-cli來(lái)新建項(xiàng)目。用過(guò)vue的都知道,要全局安裝vue以及腳手架vue-cli,然后執(zhí)行vue init webpack projectname來(lái)新建vu...

    lemanli 評(píng)論0 收藏0
  • cypress進(jìn)行e2e測(cè)試之理論

    摘要:進(jìn)行測(cè)試之理論是目前很火的一個(gè)測(cè)試組件,內(nèi)部綁定了之類的斷言為了讓代碼代碼更有說(shuō)服力,減少提交測(cè)試錯(cuò)誤,進(jìn)行測(cè)試顯然是非常有必要的。 cypress 進(jìn)行 e2e 測(cè)試之理論 cypress 是目前 e2e 很火的一個(gè)測(cè)試組件,內(nèi)部綁定了 macha、chai、chai-jquery 之類的斷言,為了讓代碼代碼更有說(shuō)服力,減少提交測(cè)試錯(cuò)誤,進(jìn)行 e2e 測(cè)試顯然是非常有必要的。 官網(wǎng)...

    chnmagnus 評(píng)論0 收藏0
  • 使用Nightwatch進(jìn)行E2E測(cè)試中文教程

    摘要:本身項(xiàng)目也是使用來(lái)測(cè)試的。一個(gè)簡(jiǎn)易的模式的配置如下的分為四個(gè)部分在實(shí)例上以開頭的行為驅(qū)動(dòng)測(cè)試風(fēng)格的接口,及以上版本可用。例如以開頭的兩套相同的方法庫(kù),區(qū)別是如果斷言失敗則退出整個(gè)測(cè)試用例所有步,則打印后繼續(xù)進(jìn)行。 E2E測(cè)試 E2E(end to end)測(cè)試是指端到端測(cè)試又叫功能測(cè)試,站在用戶視角,使用各種功能、各種交互,是用戶的真實(shí)使用場(chǎng)景的仿真。在產(chǎn)品高速迭代的現(xiàn)在,有個(gè)自動(dòng)化測(cè)...

    newsning 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<