Agile Testing 閱讀筆記

鋪墊:敏捷開發價值觀、原則與實踐 有什麼開發,就有什麼測試,傳統開發就有傳統測試,敏捷開發就應該要推行敏捷測試。在討論敏捷測試前,應該先理解敏捷開發模式,否則理解敏捷測試會很困難。 敏捷開發是一種思想或稱作方法論,通過不斷迭代與增量發布,最終交付符合用戶價值的產品。 書中提到一些敏捷開發的歷史、演進與框架 PDCA 循環 輕量級軟體開發 減少複雜的文件,強調人員的互動 敏捷宣言 XP(eXtreme Programing):較多是著重在軟體開發,例如 TDD、pair programing、CI 等等。 BDD(行為驅動開發):使用「通用語言」來描述測試案例,將 User Story 的細節進行完整地描述。 Feature(特性): 購物車功能 Scenario(情境): 添加商品到購物車 Given(假設): 用戶已經登錄到購物平台並且正在瀏覽商品 When(當): 用戶點擊某個商品的「添加到購物車」按鈕 Then(那麼): 該商品應該被添加到用戶的購物車中 And(並且): 購物車中的商品總數應該更新 FDD(特性驅動開發):使用制式結構來建構特性列表 <action> the <result> <by|for|of|to> a(n) <object> Scrum:確保每天、每個階段都向著目標明確進行的一種「方法」。 推薦看 Scrum 提倡者自己寫的 SCRUM:用一半的時間做兩倍的事 DevOps 與敏捷的關係 DevOps 可以看作是敏捷的延伸,打通軟體開發、測試、交付、維護中的層層牆壁。 敏捷宣言 藉著親自並協助他人進行軟體開發,我們正致力於發掘更優良的軟體開發方法。透過這樣的努力,我們已建立以下價值觀: 個人與互動 重於 流程與工具 可用的軟體 重於 詳盡的文件 與客戶合作 重於 合約協商 回應變化 重於 遵循計劃 也就是說,雖然右側項目有其價值,但我們更重視左側項目。 敏捷測試之道 敏決測試不是一種測試方法,而是為了適應敏捷開發而設計的一套軟體測試解決方案。 敏捷測試宣言 Full Lifecycle Testing OVER Isolated Testing Phase Team Shared Responsibility OVER Testers Ensure Quality Continuous Targeted Automation OVER Widespread Regression Testing Quality Built-in OVER Defect Detection Full Lifecycle Testing 強調測試左移與右移,並非將測試「移動」到兩個端點,而是全程測試的介入。...

2024-03-24 · 3 min · 456 words

那些在 Backend Sharing 中出現的人事物

《最高學以致用法》、《最高學習法》這兩本書是我在 2023 年上半年讀了覺得挺有意思的書,核心概念就是「產出」,例如唸書時能夠回答同學問題的,肯定都已經精通該知識點了。 加入 KryptoGO 後,因為團隊的成長,Leader 開始嘗試舉行兩週一次的 Backend Sharing,不僅是分享工作上遇到的疑難雜症,更可以交流不同的知識點。 起初,我可以我分享了一些過去用過的工具與知識點,隨著時間的流逝,開始感受到黔驢技窮,於是我也仿效了《刻意練習》,不斷的為了能有更好的分享品質而學習。 以下是這半年來我在 Backend Sharing 中或多或少提及或是討論到的,又分為解決方案、小工具、方法論。 小工具 由於喜歡折騰 Homelab,時不時會到 r/selfhosted、r/opensource/ 尋找一些開源的自架方案或小工具,有一些大幅度的改善了我的開發流程,而有一些則漸漸的不再使用 exa & eza & bat eza、exa、bat 都是基於 rust 寫成的 cli 替代品,exa、eza 對標 cd,而 bat 對標 cat,我會在 .zshrc 中寫上 alias。 if command -v bat &> /dev/null; then alias cat=bat; fi if command -v eza &> /dev/null; then alias ls="eza --icons" alias ll="eza --icons -lh" alias tree="eza --icons --tree" fi 還有其他性質相同的 rust 寫的小工具諸如: zoxide、topgrade、alacritty、bottom...

2024-03-24 · 2 min · 321 words

透過 CLI 調整藍牙耳機音訊設定

接續著 KDE neon / Ubuntu 啟用 PipeWire 與 LDAC/AAC/AptX 藍芽編碼,每當連線到藍芽耳機時,語音設定檔在使用 LDAC 後,就無法同時使用麥克風,這樣一來在開會時,就需要手動到設定裡面去調整語音設定檔。 身為一個懶惰鬼,可以用鍵盤解決的就不會用滑鼠去點,發現可以通過 pactl(PulseAudio)在 cli 直接設定 audio profile。 首先,我們通過 bluetoothctl 列出藍芽設備的實體位置 $ bluetoothctl > [EAH-A800]# devices > Device 88:C9:E8:B1:5D:AE WF-1000XM4 > Device DC:22:D2:85:85:15 MX Master 3S > Device B8:20:8E:35:CB:D0 EAH-A800 文章內舉例的目標為 EAH-A800,也就是 B8:20:8E:35:CB:D0 接著需要確認目前藍牙裝置支持的音訊設定檔。可以透過 pactl list cards short 來列出目前啟用的設備 $ pactl list cards short 47 alsa_card.usb-Shure_Inc_Shure_MV7-00 alsa 48 alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic alsa 49 alsa_card.usb-NuPrime_NuPrime_DAC-9H-00 alsa 1002 bluez_card.B8_20_8E_35_CB_D0 module-bluez5-device.c 發現目標為 1002 bluez_card.B8_20_8E_35_CB_D0 再來通過 pactl list cards 來獲取所有音訊設定檔...

2024-01-28 · 2 min · 346 words

Golang 隱式記憶體別名 Implicit Memory Aliasing 與其檢測方法

在使用 Golang 時,我們可能會遇到一種稱為隱式記憶體別名(Implicit Memory Aliasing)的問題。這篇文章將探討這個問題以及如何使用工具和語言特性來解決它。 隱式記憶體別名的問題 隱式記憶體別名主要發生在 range 語句中。當使用 range 對一個切片 slice 或映射 map 進行迭代時,Iterator 在每次迭代中並不是唯一的實例。這可能導致意外的行為,特別是在並發環境或當迭代變量被指針引用時。 slice with Implicit Memory Aliasing 下面示例可能是基本的 golang 面試題,會問你迭代後的 pointers 內的 Name 為何 答案是 Joe Joe Joe package main import "fmt" type Person struct { Name string Gender string } func main() { persons := []Person{ {Name: "John", Gender: "M"}, {Name: "Jane", Gender: "F"}, {Name: "Joe", Gender: "X"}, } pointers := make([]*string, len(persons)) for index, person := range persons { fmt....

2023-11-12 · 2 min · 368 words

使用 Bitwarden 與自架後端 Vaultwarden 來管理密碼

在尋覓有哪些 self-hosted 專案好玩時,偶然發現了 1password、LastPass 的開源替代方案,甚至後端資料庫能自架,決定架來用用看。 使用 Bitwarden 來管理密碼 Bitwarden 是一款流行且功能強大的密碼管理工具,它提供了一個安全的方法來存儲和管理所有密碼。作為一個開源產品,Bitwarden 允許用戶選擇自行托管其服務,這意味著用戶可以在自己的服務器上運行 Bitwarden,從而更好地控制自己的數據安全。 Bitwarden 的特點 安全性: Bitwarden 使用端到端加密,確保只有您可以訪問您的密碼。 跨平台支持: 支持 Windows、macOS、Linux、Android 和 iOS。 易於使用: 提供直觀的用戶界面和簡單的操作流程。 開源: 開源,增加了透明度和安全性。 Bitwarden 同時支援基於時間的一次性密碼,讓 TOTP 也能自動填入。 Bitwarden 開源了 client 與 server,在 server 端的選擇有以下: 使用 Bitwarden 提供的官方服務,又分為免費跟付費,但這個選擇就跟 1p 沒太多區別。 自架 Bitwarden 提供的 open source server,由於是使用 C# 與 mssql,吃的記憶體著實太多。 自架 Bitwarden 相容的後端,我採用的是 rust 實做的 Vaultwarden,搭配 sqlite,記憶體使用量與官方的 C# 不是一個量級的。 使用 Vaultwarden 作為自托管後端 Vaultwarden 是一個 Bitwarden 的非官方後端實現,它使用 Rust 編寫,更輕量且易於部署。使用 Vaultwarden,您可以在自己的服務器上部署 Bitwarden,這樣您就可以完全控制您的密碼數據。...

2023-11-12 · 1 min · 136 words

透過 frp 與 GCP 打通家用 kubernetes cluster 的對外連線

概述 在家裡面架著一台 lab,使用 proxmox ve 作為 vm server 透過 qemu 虛擬化一台 ubuntu server vm 在這個 vm 上使用 k3s,啟動 kubernetes 的服務 在 kubernetes 內跑著眾多 dockerize 的 containers。 雖然我不是資深維運專家,但我知道這可能很搞笑。 會需要這麼麻煩還不是為了省一點點 GKE 的成本(即便可能沒省到),但在自家建一個 lab 環境而不用計算由時間計價的 infra 成本,還是挺省腦袋的。 過去僅是將 service 使用 nodePort 來讓家裡面的其他裝置可以連線,或是使用 wireguard 作為 VPN 來從遠端連線,就是沒有動力處理好 http service 與 TLS,趁這個假日剛好需要把 自架 vaultwarden 後端 給 expose 出來,便誕生了這篇。 在當前的雲端運算時代,許多開發者和 IT 專業人員都面臨著一個共同的挑戰:如何有效地將位於不同網絡環境中的服務整合並暴露給公眾。特別是對於那些希望將家用網絡中的服務有效連接到公共雲端(如 GCP,AWS,Azure,OCI)的用戶來說,這一挑戰尤為突出。文內主要講述通過在 GCP VM 上部署 FRP(Fast Reverse Proxy)服務器,結合家中的 kubernetes cluster 上配置的 FRP 客戶端,來實現一個高效且安全的服務部署流程。 透過此方式,我們不僅可以利用 GCP VM 作為公共 IP 的代理,實現從互聯網到家庭網絡的無縫連接,還能藉助 kubernetes 的強大功能進行快速的服務部署和管理。同時,利用 ingress-nginx 作為 ingress 控制器和 cert-manager 進行 TLS 設定,我們能夠確保服務的安全性和可靠性。...

2023-11-12 · 5 min · 922 words

KDE neon / Ubuntu 啟用 PipeWire 與 LDAC/AAC/AptX 藍芽編碼

Ubuntu 22.10 將 Audio Server 從 PulseAudio 切換成 PipeWire 遇到了什麼問題 明明使用著有 LDAC 或是 AptX 解碼能力的藍芽耳機,卻只能被迫接受 sbc 的低傳輸率音質嗎,身為規格黨怎麼可以忍受這件事(即便大部份時間都只使用 Youtube Music 的 128K bps opus) 解決方法 我們可以在 KDE neon 上啟用 PipeWire,並安裝更多藍芽轉碼器 安裝 WirePlumber(PipeWire Manager) sudo apt install -y pipewire-media-session- wireplumber 透過 systemd 管理 WirePlumber 的開機自啟 daemon systemctl --user --now enable wireplumber.service 安裝 ALSA sudo apt install -y pipewire-audio-client-libraries 安裝藍芽轉碼器 sudo apt install -y \ libfdk-aac2 \ libldacbt-{abr,enc}2 \ libopenaptx0 sudo apt install -y \ libspa-0....

2023-10-01 · 1 min · 112 words

使用 wireguard 與 aws 搭建虛擬內網

先前在「在 AWS 上使用 EC2 建立 FRP 玩玩內網穿透」一文中敘述了如何透過 AWS 實現虛擬穿透,也在內文中提到或許可以使用 wireguard 搭建內網,其原因也很簡單:每更新一個 port 都要重新設定 server side 實在是太麻煩了,拖更了進一年終於要開始寫 wireguard 的使用了。(AWS 免費也快到期了) 遇到了什麼問題 在使用 wireguard 來搭建 VPN 前,我是使用 zerotier 搭配 Mikrotik RB5009 所執行的 RouterOS 7.x 版本,讓外網可以連回家裡的網路環境 但 zerotier 的網路拓樸是存在他們官方伺服氣上,與其相信 zerotier,我想在 vps 上建立虛擬機,並只許特定 ip 登入,可能更加可靠(? 解決方法 於是我在 frp tunnel VM 上建立了 wireguard 節點,作為外網與內網溝通的橋樑。 wireguard 是一個高效的現代化 VPN,目標是比 IPsec 更快。在 2020 年時正式推出 1.0.0 版本。 wireguard 的拓樸實際上是 peer2peer,甚至可以達到 full mesh,但礙於錢錢不夠,單一個節點作為 server side 就足夠了。 server 使用 docker-compose 能快速部署 wireguard 服務,我們使用的是 wg-easy 簡單換掉一些參數: WG_HOST: vps 的公網 IP WG_DEFAULT_ADDRESS: 預設內網 ip 範圍,比如 10....

2023-10-01 · 2 min · 314 words

透過 WakaTime 幫助來紀錄自己做了哪些事,並製作獨特的 GitHub Profile

WakaTime 介紹 WakaTime 是一款紀錄自己生產力的工具,透過客戶端插件、集成工具紀錄「行徑」並發送到官方|非官方伺服器,可以分析花了多久時間在哪個專案、哪個程式語言、會議、code review。 記憶力不佳,過去常常無法想起某段時間做了哪些專案,甚至 daily standup 前忘記昨天做了什麼,發現了 wakatime 可以透過 vscode 插件、terminal 插件來查看自己在哪些時間變更了哪些專案、檔案,甚至可以紀錄下過得指令(僅 binary 的部份,不含參數不會洩漏資料)。 在使用 WakaTime 前,先到 WakaTime 官網上註冊並登入,取得最重要的 API Key(API Token): 安裝相應的客戶端插件。wakatime 支援的插件、編輯器包括但不限於: Visual Studio Code Vim Excel Terminal zsh bash fish iTerm2 舉例來說我們可以安裝 vscode 插件,並跟著 Installation 輸入完 API Key 就可以開始寫點東西了。 查看報告 使用了一段時間後,可以回到官網查看 dashboard 查看自己上週、前兩週、前一個月每天花了(浪費)了多少時間,以前三十天的圖為例: 或是 YoY 的活動圖 以此 blog 的 repo 來作為舉例,可以查看某個 project 的細節 在該專案花了多少時間、什麼語言: 檔案、分支的時間分配: 費用 免費版本的功能已經十分完整了,完整費用方案在此。 透過學生帳號可以申請教育折扣,年度付費 Premium 方案的話一年只要 59 美元,就可以享有完整的 WakaTime 服務。 雖然付費方案的功能幾乎都可以透過免費版本就有的 API 來完成,但仍可以花點小錢支持團隊,或是開啟公司計畫。...

2023-08-03 · 2 min · 298 words

KDE Neon 使用心得與踩雷紀錄

前言 年初為了 arc browser 裝了一台 Hackintosh,因為原因又花了點時間裝了 KDE Neon,這邊紀錄一下使用心得與踩雷紀錄。時間線大概是 快快樂樂使用 wsl2 wsl 中踩了不少坑,想要嘗試 unix liked 的系統 好心人提供 arc browser 的邀請,萌生了裝 Hackintosh 的念頭 在 HP Z2 G4 上裝了 Hackintosh,但是沒有事前做足功課,內顯圖形記憶體(P630)始終是 7mb 買了張 amd WX4100 督上去,大幅提昇圖形性能,卻也沒再花時間繼續深入 嘗試在 windows 主機上雙系統 (windows + linux): 一開始直接選擇熟悉的 ubuntu,安裝了 ubuntu desktop 版本,由於是 nvidia 顯示卡,很快的遇到了硬體解碼問題 開始嘗試 nvidia-vaapi-driver,但是遇到了很多問題,最後放棄 想換到 amd 顯示卡,但是又不想花錢,於是想說看看其他發布版是否能解決 從 Linux Mint, Manjaro, KEO Neon 中選擇了同樣是 ubuntu 底,卻是 KDE 團隊維護團隊的 KDE Neon 不出意外的一樣遇到了 nvidia 驅動問題,雖然 firefox 已經可以順利硬體加速,但是 chromium 等仍然無法硬體加速 這時候已經花了不少時間在這個問題上,於是決定換到 amd 顯示卡(內顯) 在 Minisforum UM560 上安裝了 KDE Neon,一切順利,驅動毫無問題,硬體加速也正常 嘗試裝了 ventura theme,讓他稍微好看一點 持續與 wayland 相處,走一步是一步… ❯ neofetch `....

2023-06-04 · 4 min · 675 words