JS 筆記6.5_後端_測試與 CI/CD 基礎:讓程式自動幫你檢查錯誤!

更新於 發佈於 閱讀時間約 6 分鐘

在寫程式的世界裡,最怕的就是「我以為沒問題,結果一堆 bug」。這篇筆記要帶你認識如何用「測試」和「CI/CD」幫助我們自動檢查錯誤、提升開發效率!

🧪 測試是什麼?為什麼要測試?

測試就是「寫程式來測試程式」,聽起來有點繞,但其實很簡單:

你寫了一個功能,接著寫一段測試程式來確認它真的能正常運作。這樣就不怕改了某個地方,結果其他功能跟著壞掉。


🛠️ Manual vs Automated Test:手動測試 vs 自動測試

本圖由 AI 協助生成

本圖由 AI 協助生成


常見測試類型簡介

1. Unit Test(單元測試)

測試「一個函式」或「一個模組」是否正確。像是你寫了一個加法函式,就測試它加 1+2 是不是等於 3。

簡單的概念示範(本程式碼由 AI 生成)

在測試前,要先準備好專案資料夾喔!(Windows 會擋 npm 可以請 AI 教學開啟)

raw-image


// utils/math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
// tests/math.test.js
const { add } = require('../utils/math');

test('加法函式:1 + 2 應該等於 3', () => {
expect(add(1, 2)).toBe(3);
});

2. Integration Test(整合測試)

測試「多個模組之間的互動」。例如你有登入功能,要測試輸入帳密 → 查資料庫 → 回傳結果這整個流程是否順利。(由於我的筆電規格限制,這部分的程式碼無法試跑給讀者看)

測試場景:使用者登入流程(驗證帳號 + 查資料庫)整合測試會啟動 Express 路由、模擬 HTTP 請求,甚至連接資料庫(可用測試資料庫)。

// routes/login.js
app.post('/login', async (req, res) => {
const { email, password } = req.body;
const user = await User.findOne({ email });
if (!user || user.password !== password) {
return res.status(401).send('登入失敗');
}
res.send('登入成功');
});
// tests/login.test.js 測試版
const request = require('supertest');
const app = require('../server');

test('登入成功應回傳 200', async () => {
const res = await request(app)
.post('/login')
.send({ email: 'test@example.com', password: '123456' });

expect(res.statusCode).toBe(200);
expect(res.text).toBe('登入成功');
});
  1. End-to-End Test(端到端測試)

模擬使用者實際操作整個網站或系統。像是打開網頁 → 點選登入 → 成功跳轉到首頁,這整段流程都要測試。

raw-image

🧪 測試框架簡介:幫你寫測試的工具

Jest:超受歡迎的 JavaScript 測試框架,適合單元測試,語法簡單。

Supertest:專門用來測試 API 的工具,可以模擬 HTTP 請求,確認你的 API 有正確回應。


🚀 CI/CD 是什麼?為什麼這麼重要?

CI/CD 是兩個英文縮寫:

CI(Continuous Integration)持續整合

每次有人 push 程式碼,系統就會自動幫你跑測試、檢查是否有錯。

CD(Continuous Delivery / Deployment)持續交付 / 部署

如果測試都通過,系統可以自動把程式部署到伺服器上,讓使用者馬上用到最新版本。

這兩個名詞是流程概念,你可以把她想像成自動化生產線。實現這個理念會需要多工具的協作。

raw-image

簡單來說,CI/CD 就是讓「程式碼 → 測試 → 上線」這整個流程自動化,減少人為錯誤、加快開發速度!


🛠️ GitHub Actions:實作簡易 CI 流程

GitHub Actions 是 GitHub 提供的自動化工具,可以幫你設定:

1. 每次 push 程式碼

2. 自動執行測試(例如用 Jest 跑單元測試)

3. 顯示測試結果(成功 ✅ 或失敗 ❌)

這樣你就不用每次都自己手動跑測試,GitHub 會幫你完成!


🔐 環境變數:機密不會放在程式裡

在 CI/CD 流程中,我們常會用到一些「機密資訊」,像是資料庫密碼、API 金鑰等。這些不會直接寫在程式碼裡,而是放在「環境變數」中,確保安全性。

例如在 GitHub Actions 裡,你可以設定 、 等機密,程式執行時再讀取這些變數。


這篇筆記為你開啟測試與 CI/CD 的一扇小窗 ,未來不管是開發專案、部署網站,這些觀念都超級重要!

參考影片們:

為你自己學 GitLab CI/CD Day 01 - 為你自己學 GitLab CI/CD

DevOps CI/CD Explained in 100 Seconds

留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
27會員
84內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/08/24
前情提要:從前端到後端的橋樑 前面了解 React、Vue 或其他前端框架,但當你需要與資料庫溝通、處理使用者輸入或串接第三方服務時,就需要一個能處理 HTTP 請求的後端框架。這時,Express + Node.js 就是最輕量、最易入門的選擇。 Express 是什麼?為什麼選它? Exp
Thumbnail
2025/08/24
前情提要:從前端到後端的橋樑 前面了解 React、Vue 或其他前端框架,但當你需要與資料庫溝通、處理使用者輸入或串接第三方服務時,就需要一個能處理 HTTP 請求的後端框架。這時,Express + Node.js 就是最輕量、最易入門的選擇。 Express 是什麼?為什麼選它? Exp
Thumbnail
2025/08/04
AI 時代,買課程滿天飛,但怎麼學才會精? 我花了一次家教費,換來不必一輩子買課程,也學會真正探索知識、克服卡關的方法。 這篇文章分享我從半途而廢到真正開竅的學習故事,告訴你在資訊爆炸時代,怎麼握緊自己的方向。
Thumbnail
2025/08/04
AI 時代,買課程滿天飛,但怎麼學才會精? 我花了一次家教費,換來不必一輩子買課程,也學會真正探索知識、克服卡關的方法。 這篇文章分享我從半途而廢到真正開竅的學習故事,告訴你在資訊爆炸時代,怎麼握緊自己的方向。
Thumbnail
2025/08/01
現代 JavaScript 教學:從語法到實戰應用,涵蓋陣列方法(map, forEach, reduce)、物件解構、原型鏈與 Class、React 基礎(函數組件、useState)、JavaScript 引擎簡介及商業應用案例。教學包含圖解、範例及常見錯誤比較,幫助讀者快速上手。
Thumbnail
2025/08/01
現代 JavaScript 教學:從語法到實戰應用,涵蓋陣列方法(map, forEach, reduce)、物件解構、原型鏈與 Class、React 基礎(函數組件、useState)、JavaScript 引擎簡介及商業應用案例。教學包含圖解、範例及常見錯誤比較,幫助讀者快速上手。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
網站建置後,為了確保優秀的使用者體驗和網站的功能性,進行徹底的後續優化和測試是不可或缺的。以下是建議的重點測試項目: 響應式網頁設計(RWD)測試: 確保網站在各種設備(如桌面電腦、平板和手機)上均展示良好。這包括在不同的屏幕尺寸和解析度上測試,確保網站能夠自如適應不同的顯示需求。
Thumbnail
網站建置後,為了確保優秀的使用者體驗和網站的功能性,進行徹底的後續優化和測試是不可或缺的。以下是建議的重點測試項目: 響應式網頁設計(RWD)測試: 確保網站在各種設備(如桌面電腦、平板和手機)上均展示良好。這包括在不同的屏幕尺寸和解析度上測試,確保網站能夠自如適應不同的顯示需求。
Thumbnail
每日自動檢查資料庫運作所產生的訊息,若發現有錯誤,自動寄出警告信給擔當人員
Thumbnail
每日自動檢查資料庫運作所產生的訊息,若發現有錯誤,自動寄出警告信給擔當人員
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News