指南

如何在上線前測試你的應用程式:實用的上線前計畫

要在上線前測試你的應用程式,請先列出使用者必須能完成的幾個流程,以全新使用者的身分在筆電與手機上逐一執行,然後嘗試各種可能出錯的情況:空白資料、錯誤輸入、第二個帳號、緩慢的網路。涉及金錢或私人資料的功能要格外小心,並在發布後於正式網址上重複主要流程。最後,請找一位從未見過這個應用程式的人,觀察他如何使用。

你不需要 QA 團隊或測試框架。你需要的是一份清單、一兩個小時,以及確實逐項點擊檢查的自律。

步驟一:寫下重要的使用流程

所謂流程,是指使用者前來完成的一項從頭到尾的任務。大多數應用程式有三到六個真正重要的流程。以預約應用程式為例:

  1. 註冊並確認帳號
  2. 找到課程並預約
  3. 取消預約
  4. 購買課程票券
  5. 工作人員:查看今日的預約

如果你已經寫過使用者故事,其中的驗收條件就已經是你的測試案例。如果還沒有,請為每個流程寫一行,說明「成功」的樣子。

為它們排定優先順序。會帶來收入的流程,或每位使用者都會經過的流程(註冊、登入、核心操作),應該最先、也最完整地測試。

步驟二:以全新使用者身分測試正常流程

「正常流程」指的是流程完全依照預期進行。請以陌生人的體驗來測試:

  • 使用私密瀏覽視窗,這樣你不會處於登入狀態,也沒有任何已儲存的資料。
  • 使用一個全新帳號,並使用你可以實際收信確認的真實電子郵件。
  • 從首頁或連結開始,而不是從你在開發時收藏的頁面開始。

新使用者沒有任何資料。許多錯誤只會在列表是空的、個人檔案沒有照片,或是尚未有任何購買紀錄時才會出現。你自己那個塞滿測試資料的帳號,會把這些錯誤隱藏起來。

步驟三:嘗試把它搞壞

現在,請重複每個流程,並刻意做錯事。

嘗試這樣做你要檢查的項目
表單留空,或只輸入空白必填欄位有強制檢查,並顯示清楚的訊息
非常長的文字、表情符號、帶重音符號的姓名版面維持正常,資料正確儲存
錯誤的格式:電話欄位輸入英文字母、過去的日期頁面與伺服器端都有驗證
連點兩下提交按鈕不會產生重複的訂單或預約
流程進行到一半時按瀏覽器的上一頁不會出現損壞的狀態或遺失資料
在每個頁面按重新整理資料會保留;不會出現空白頁或 404
登出後按上一頁私人頁面不會顯示
兩個分頁同時編輯同一項內容後儲存的內容不會默默覆蓋先前的內容

重新整理的情況特別值得留意:如果你一步步點擊時應用程式運作正常,但在較深的頁面重新整理卻出現 404,請參閱部署後如何修正 404 錯誤。

步驟四:用兩個帳號測試權限

對於任何具有帳號系統的應用程式來說,這是最重要、也最常被略過的測試。

建立兩個一般使用者 A 和 B,若你的應用程式有管理員,也請建立一位管理員。

  • 以 A 的身分建立一筆紀錄。登入 B 的帳號。B 能看到、編輯或刪除它嗎?除非那是設計上的安排,否則都不應該可以。
  • 以 A 的身分複製其中一筆紀錄的網址。登入 B 的帳號,並直接開啟該網址。
  • 以一般使用者的身分,透過手動輸入網址來開啟管理頁面。
  • 完全登出,然後嘗試相同的網址。

如果這裡發現問題,在修正之前不要上線。檢查必須在伺服器端進行,而不只是隱藏按鈕。我們的AI 打造應用程式資安檢查清單有更深入的說明。

步驟五:在實體裝置上測試

請在真正的手機上開啟應用程式,而不只是縮小瀏覽器視窗。

  • 每個按鈕都能不必縮放就點到嗎?
  • 鍵盤會遮住你正在輸入的欄位嗎?
  • 表格和寬版內容是可以捲動或自動換行,還是把整個頁面推向一側?
  • 文字不需要捏放就能清楚閱讀嗎?

如果可以借到,請至少測試一台 iPhone(Safari)與一台 Android 手機(Chrome)。特別是 Safari,在日期、影片與固定定位元素上有它自己的特殊行為。

步驟六:端到端測試金流與電子郵件

任何會刷卡收費或寄送電子郵件的功能,都需要完整走過一遍。

付款。 使用你的金流服務商的測試模式與測試卡號。檢查付款成功、信用卡被拒絕,以及取消結帳的情況。確認付款後,訂單或訂閱會顯示在你的應用程式中,而不只是出現在金流服務商的後台。如果你的應用程式依賴 Webhook(金流服務商傳送給你伺服器的訊息),請確認它們能在已發布的應用程式上收到,而不只是在開發環境中。接著,在上線前切換為正式金鑰,並進行一筆你之後會退款的小額真實購買。

電子郵件。 使用兩到三家不同服務商的真實信箱註冊。檢查郵件是否確實送達、沒有進入垃圾郵件匣,且郵件中的每個連結都指向正式網域,而不是預覽網址。

步驟七:檢查速度與錯誤

  • 開啟瀏覽器的開發者工具(按右鍵 → 檢查),並在每個主要頁面查看主控台分頁。即使畫面看起來沒有問題,紅色的錯誤訊息也值得修正。
  • 用手機的行動網路(而非 Wi-Fi)載入網站。如果首屏需要好幾秒,請先檢查圖片大小。
  • 在 Chrome 開發者工具中執行 Lighthouse 等免費檢測工具,快速了解效能與無障礙狀況。

步驟八:測試已發布的應用程式,而不只是預覽

預覽與已發布的應用程式並不是相同的環境。在告訴別人你即將上線之前,請在正式網址上重複主要流程:

  • 已發布的應用程式是否已設定所有環境變數與機密資訊?
  • 它是否使用正確的資料庫,並且資料符合你的預期?
  • 登入後的重新導向與電子郵件中的連結,是否使用正式網域?
  • 在較深的頁面重新整理時,是否能正確載入?

步驟九:觀察別人使用它

給一兩位測試者一個目標(「幫我預約星期六的瑜伽課」),而不是操作說明。在旁觀察,不要幫忙,並記下他們在哪裡猶豫。這是找出難懂文字與隱藏按鈕最快的方法。若想了解更完整的做法,請參閱如何進行測試版測試。

當他們遇到錯誤時,請妥善記錄下來,包括步驟、預期結果與實際結果。我們的如何寫好錯誤回報指南說明了格式。

使用 AI 協助測試

如果你是用 AI 打造應用程式,可以請它協助規劃與執行測試:

列出這個應用程式的主要使用者流程,並針對每個流程列出最可能出錯的邊界情況:空白狀態、無效輸入、權限,以及重新整理。整理成一份我可以逐項完成的檢查清單。

以兩個不同的測試使用者登入,檢查使用者 B 是否能看到或修改使用者 A 建立的任何內容,包括直接開啟 A 的紀錄網址。在修正任何問題之前,先回報你發現的結果。

請把 AI 自己的測試報告視為初步審查。金流與權限相關的流程,仍然要由你親自點擊檢查。

在 Mythex 中測試

在 Mythex 中,/test 指令會執行應用程式測試:代理程式會以瀏覽器對你的即時預覽進行操作,點擊各個頁面、擷取截圖,並在聊天中回報失效的流程。針對特定流程使用效果最好,例如「測試註冊與預約課程」。使用 /fix 或一般訊息修正找到的問題,然後再次執行 /test。應用程式測試是在預覽環境中進行的,因此發布後仍需自行在正式網址上檢查主要流程。請參閱文件中的應用程式測試,以及當出現問題時的除錯 AI 打造的應用程式指南。

常見錯誤

  • 只以自己的身分測試。你那個塞滿資料的管理員帳號,會把空白狀態與權限問題隱藏起來。
  • 只在筆電上測試。許多網站的大部分訪客都是從手機進來的。
  • 略過第二個帳號。使用者之間的資料外洩,是應用程式上線時可能存在的最嚴重錯誤。
  • 完全相信預覽。正式應用程式使用不同的設定,也必須測試。
  • 修正錯誤後不重新測試附近的功能。修改某個表單,可能會破壞另一個共用相同程式碼的表單。

上線前檢查清單

  • 已列出主要流程並排定優先順序
  • 每個流程都能在私密視窗中以全新使用者身分順利完成
  • 空白、無效、過長與重複的輸入都有妥善處理
  • 每個頁面的重新整理都能正常運作
  • 使用者即使透過網址也無法看到或修改彼此的資料
  • 一般使用者與未登入的訪客都無法存取管理頁面
  • 在實際的 iPhone 與 Android 手機上運作正常
  • 付款已測試:成功、被拒、取消,以及之後應用程式會正確更新
  • 郵件能送達、不會進入垃圾郵件匣,並且連結指向正式網域
  • 主要頁面的主控台沒有紅色錯誤
  • 主要流程已在已發布的正式網址上重複測試
  • 至少有一位外部人士在你旁觀的情況下試用過

常見問題

小型應用程式上線前需要做多少測試?

足以讓你確信:全新使用者在手機與筆電上都能完成主要流程、使用者看不到彼此的資料,而且所有涉及金錢的功能都能端到端正常運作。對大多數小型應用程式來說,這大約是幾個專注的小時,而不是幾週。

最小可行產品(MVP)需要自動化測試嗎?

不一定。手動測試核心流程就能發現大部分會阻礙上線的錯誤。當你經常修改應用程式,並希望能快速得知是否破壞了原本正常運作的功能時,自動化測試才開始產生價值。

我應該在預覽還是正式應用程式上測試?

兩者都要。先在預覽中徹底測試,然後在已發布的應用程式上重複主要流程,因為缺少環境變數、不同的資料庫或路由設定,都可能讓正式版本的表現不同。

除了我自己,還有誰應該測試我的應用程式?

至少要找一個從未見過它的人。給他一個目標,而不是操作說明,並在旁觀察,不要幫忙。開發者會不自覺地避開那些會出錯的路徑。

Mythex · Pricing · 用 AI 打造任何東西 · 網站與應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費的 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港)