iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

Windows 桌面軟體 CI 實戰:從系統工具開發到 Zero-RDP 自動化測試錄影 系列

開發 Windows 系統工具與桌面應用時,如何在 GitHub Actions CI 管道中確保品質?本系列以真實開源專案為骨幹,揭密無桌面環境下的 E2E 測試挑戰。涵蓋輸入法(IME)狀態攔截、跨架構虛擬化驗證、自動關閉 OOBE 彈窗,到產出操作影片與視窗差異報告,手把手建立 Windows GUI 軟體整合測試管線。

鐵人鍊成 | 共 30 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21:四個標的,四代技術

第五章開始。前面二十天講的每一個坑,都是我在自己的測試裡踩到的——而自己的測試有一個結構性的問題: 一個為了測函式庫而寫的應用程式,只能證明函式庫跟自己一致。...

2026-09-20 ‧ 由 mangokingTW 分享
DAY 22

Day 22:系統訊息會被 marshal,自訂訊息不會

Notepad++ 的編輯區是 Scintilla——一個被大量第三方編輯器內嵌的控制項。它在 UIA 樹裡長這樣: <Pane class='Scint...

2026-09-21 ‧ 由 mangokingTW 分享
DAY 23

Day 23:UIA 完全看不到的控制項,像素是唯一的證據

WinMerge 是四個標的裡最「乾淨」的一個:純 Win32、零外部相依、秒級啟動。它的工具列也很好測——44 個按鈕都有名字,而名字就是 tooltip:...

2026-09-22 ‧ 由 mangokingTW 分享
DAY 24

Day 24:同一個版本,兩個程式

這一天的內容是我在這整個系列裡錯得最徹底的一次,而且錯了三次。所以寫法會跟其他天不一樣:照時間順序,把每一個錯誤結論留在原位。 標的是 DB Browser f...

2026-09-23 ‧ 由 mangokingTW 分享
DAY 25

Day 25:Grid、Table,與那些真的不存在的列

回到 UIA 的複雜控制項。今天兩件事:表格相關的四個 pattern 分工不是望文生義的,以及你找不到第 150 列,是因為它真的不存在。 四個 patte...

2026-09-24 ‧ 由 mangokingTW 分享
DAY 26

Day 26:空的答案,與一條要走三步的路

第五章倒數第二天。兩個主題:API 回答了、回答得很有禮貌,而那個答案是空的,以及一個要走好幾步才能到的目標,失敗訊息該怎麼寫。 現象:支援那個 patter...

2026-09-25 ‧ 由 mangokingTW 分享
DAY 27

Day 27:抓四個從來沒聽過這個函式庫的 bug

第五章最後一天。前面六天都在證明「這個函式庫驅動得動別人的 app」,今天要回答更難的那個問題: 它抓得到 bug 嗎? 不是抓我自己寫的測試 app 的 b...

2026-09-26 ‧ 由 mangokingTW 分享
DAY 28

Day 28:GitHub Actions 上的 Windows GUI 完整工作流程

最後一章。前面 27 天講的是「為什麼會壞」,這三天講「所以檔案要怎麼寫」。 今天把整個 ci.yml 逐段拆開——每一段都對應到前面某一天的問題。 完整工作...

2026-09-27 ‧ 由 mangokingTW 分享
DAY 29

Day 29:Windows GUI CI 的防禦性驗證與診斷設計

workflow 寫好了、測試也綠了。今天講剩下的一半:當它紅的時候,你要怎麼知道發生什麼事,以及幾個會讓你得到錯誤結論的陷阱。 陷阱一:判斷「CI 跑完了沒...

2026-09-28 ‧ 由 mangokingTW 分享
DAY 30

Day 30:從黑箱到確定性,Windows GUI 自動化的三十天工程總結

三十天前,這個系列的第一篇拋出了一個現實問題:為什麼在現代軟體工程中,Windows 桌面應用的自動化測試幾乎被遺忘在 CI 之外? 長年以來,桌面開發團隊普遍...

2026-09-29 ‧ 由 mangokingTW 分享