成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端自動化測試:測試到底測什么?

開發(fā) 前端 自動化
在實(shí)際開發(fā)過程中,編寫自動化測試代碼通常是開發(fā)人員不太喜歡的一個(gè)環(huán)節(jié)。大多數(shù)情況下,前端開發(fā)人員在開發(fā)完一項(xiàng)功能后,只是打開瀏覽器手動點(diǎn)擊,查看效果是否正確,之后就很少對該塊代碼進(jìn)行管理。

[[407303]]

 對于稍微有一些開發(fā)經(jīng)驗(yàn)的同學(xué)在開發(fā)過程中總會經(jīng)歷下面類似的問題:

  • 每次在版本發(fā)布上線之前,在電腦前蹲上好幾個(gè)小時(shí)甚至是更長時(shí)間對你的應(yīng)用進(jìn)行測試,這個(gè)過程非常枯燥而痛苦。
  • 當(dāng)代碼的復(fù)雜度達(dá)到了一定的級別,當(dāng)維護(hù)者的數(shù)量不止你一個(gè),你應(yīng)該會逐漸察覺到你在開發(fā)新功能或修復(fù) bug 的時(shí)候,會變得越發(fā)小心翼翼,即使代碼看起來沒什么問題,但你心里還是會犯嘀咕:這個(gè) Feature 會不會帶來其他 Bug ?這個(gè) Fix 會不會引入其他"Feature" ?
  • 當(dāng)你想要對項(xiàng)目中的代碼進(jìn)行重構(gòu)的時(shí)候,你會花費(fèi)大量的時(shí)間進(jìn)行回歸測試。

以上這些問題都是由于大多數(shù)開發(fā)者所使用最基本的手動測試的方式所帶來的問題,解決它的根本舉措就是引入自動化測試方案。

測試的流程

在實(shí)際開發(fā)過程中,編寫自動化測試代碼通常是開發(fā)人員不太喜歡的一個(gè)環(huán)節(jié)。大多數(shù)情況下,前端開發(fā)人員在開發(fā)完一項(xiàng)功能后,只是打開瀏覽器手動點(diǎn)擊,查看效果是否正確,之后就很少對該塊代碼進(jìn)行管理。

造成這種情況的原因主要有兩個(gè):

  • 一個(gè)是業(yè)務(wù)繁忙,沒有時(shí)間進(jìn)行測試的編寫。
  • 另一個(gè)是不知道如何編寫測試。

但這些問題不應(yīng)該作為我們掌握前端自動化測試的絆腳石。而且,一旦掌握了前端自動化測試方案,無論是對大型項(xiàng)目的開發(fā),還是升職加薪,都是有益的。

提到測試的時(shí)候,即使是最簡單的一個(gè)代碼塊可能都讓初學(xué)者不知所措。最常問的問題的是“我怎么知道要測試什么?”。如果你正在寫一個(gè) Web 應(yīng)用,那么你每個(gè)頁面每個(gè)頁面的測試用戶交互的方式,就是一個(gè)很好的開端了。但 Web 應(yīng)用也是由很多個(gè)函數(shù)和模塊組成的代碼單元,也是需要測試的。通常有兩種情況:

  • 你接手的遺留代碼沒有寫測試用例
  • 你必須從無到有的實(shí)現(xiàn)一個(gè)新功能

該怎么辦呢?對于上面兩種場景,你可以把測試視為代碼的一部分來編寫。我所說的這些代碼,是用來檢查給定的函數(shù)是否產(chǎn)生預(yù)期輸出結(jié)果的。一個(gè)典型的測試流程如下:

1. 引入要測試的函數(shù)

2. 給函數(shù)一個(gè)輸入

3. 定義預(yù)期輸出

4. 檢查函數(shù)是否返回了預(yù)期的輸出結(jié)果

就這么多。這樣看測試也沒那么可怕的嘛:輸入 —— 預(yù)期輸出 —— 驗(yàn)證結(jié)果。

一個(gè)測試案例

下面來看一個(gè)例子:

  1. // math.js 
  2. functionadd (a, b) { 
  3.   return a + b 
  4.  
  5. functionsubtract (x, y) { 
  6.   return x - y 
  7.  
  8. module.exports= { 
  9.   add
  10.   subtract 

如何保證上面代碼的正確性?

下面來寫一段測試代碼:

  1. // test.js 
  2.  
  3. const { add, subtract } =require('./math'
  4.  
  5. const result =add(1,2) 
  6. const expected =3 
  7.  
  8. if (result !== expected) { 
  9.   thrownewError(`1 + 2 應(yīng)該等于${expected},但是結(jié)果卻是${result}`) 
  10.  
  11. const result2 =subtract(2,1) 
  12. const expected2 =1 
  13.  
  14. if (result2 !== expected2) { 
  15.   thrownewError(`2 - 1 應(yīng)該等于${expected2},但是結(jié)果卻是${result2}`) 

命令行執(zhí)行 node test.js 后,會看到錯誤信息:

  1. Error: 1 + 2 應(yīng)該等于 3,但是結(jié)果卻是 2 

通過測試代碼可以很方便的幫助驗(yàn)證代碼的正確性。

封裝測試工具函數(shù)

之前示例的測試代碼太過繁瑣,可以思考一下能否封裝的更簡便一些,比如下面這樣:

  1. expect(add(1,2)).toBe(3) 
  2. expect(subtract(2,1)).toBe(-1) 

上面的測試代碼就像自然語言說話一樣,很舒服。

實(shí)現(xiàn) expect 方法:

  1. // test.js 
  2. const { add, subtract } =require('./math'
  3.  
  4. expect(add(1,2)).toBe(3) 
  5. expect(subtract(2,1)).toBe(1) 
  6.  
  7. functionexpect (result) { 
  8.   return { 
  9.     toBe (actual) { 
  10.       if (result !== actual) { 
  11.         thrownewError(`預(yù)期值和實(shí)際值不相等,預(yù)期結(jié)果: ${actual},實(shí)際結(jié)果: ${result}`) 
  12.       } 
  13.     } 
  14.   } 

增加錯誤提示信息:

  1. // test.js 
  2. const { add, subtract } =require('./math'
  3.  
  4. test('測試加法', () => { 
  5.   expect(add(1,2)).toBe(3) 
  6. }) 
  7.  
  8. test('測試減法', () => { 
  9.   expect(subtract(2,1)).toBe(1) 
  10. }) 
  11.  
  12. functiontest (description, callback) { 
  13.   try { 
  14.     callback() 
  15.     console.log(`${description}通過測試`) 
  16.   } catch (err) { 
  17.     console.error(`${description}沒有通過測試:${err}`) 
  18.   } 
  19.  
  20. functionexpect (result) { 
  21.   return { 
  22.     toBe (actual) { 
  23.       if (result !== actual) { 
  24.         thrownewError(`預(yù)期值和實(shí)際值不相等,預(yù)期結(jié)果: ${actual},實(shí)際結(jié)果: ${result}`) 
  25.       } 
  26.     } 
  27.   } 

本文轉(zhuǎn)載自微信公眾號「勾勾的前端世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系勾勾的前端世界公眾號。

 

責(zé)任編輯:姜華 來源: 勾勾的前端世界
相關(guān)推薦

2021-06-30 19:48:21

前端自動化測試Vue 應(yīng)用

2021-06-26 07:40:21

前端自動化測試Jest

2023-05-18 14:01:00

前端自動化測試

2022-09-14 10:00:12

前端自動化測試

2016-09-26 16:42:19

JavaScript前端單元測試

2012-05-24 15:01:35

James Bach測試自動化

2011-12-23 17:09:57

自動化測試

2012-12-24 22:54:31

2014-04-16 14:15:01

QCon2014

2021-07-02 17:22:50

前端TDDBDD

2017-01-16 13:38:05

前端開發(fā)自動化

2022-02-17 10:37:16

自動化開發(fā)團(tuán)隊(duì)預(yù)測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應(yīng)用

2013-05-16 10:58:44

Android開發(fā)自動化測試

2009-08-19 09:00:48

單元測試框架自動化測試

2024-11-01 15:05:12

2022-09-14 23:14:26

前端自動化測試工具

2014-11-20 13:49:15

2011-06-03 17:24:48

自動化測試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 人人干人人干人人 | 久草网址 | 国产精品日日摸夜夜添夜夜av | 国产精品久久久久久久久久久新郎 | 黄色一级视频 | 日本欧美国产在线观看 | 免费黄色片视频 | 久久三区 | 本道综合精品 | 亚洲国产一区二区三区在线观看 | 久久av网站 | 欧美一区视频 | 天堂一区二区三区 | 91精品国产乱码久久久久久久久 | 一区二区三区免费 | 精品久久久久久亚洲综合网 | 国产精品一区二区av | 男人的天堂久久 | 羞羞的视频免费观看 | 2019天天干夜夜操 | 日日干日日射 | 久久不射电影网 | 在线成人| 久久夜视频 | 日韩精品成人一区二区三区视频 | 国产精品99久久久久久久vr | 国产精品一区二区久久久久 | 日本午夜在线视频 | 91 中文字幕 | www.男人天堂.com | 国产精品久久久久久影视 | 色综合天天天天做夜夜夜夜做 | 国产精品久久一区二区三区 | 97久久精品午夜一区二区 | 亚洲 欧美 在线 一区 | 日韩欧美第一页 | 国产一区二区三区在线观看免费 | 涩涩视频在线观看 | 超碰美女在线 | 亚洲国产成人久久久 | 在线观看免费av网 |