Google Analytics 4 練習紀錄
這篇是記錄我在看鐵人賽 跟著 OXXO 一起學 GA4 ( Google Analytics 4 ) 的過程 GA4 介紹GA4 是什麼?Google Analytics 4 ( GA4 ) 是 Google 的最新版本分析工具,與過去的版本不同的是,GA4 更加注重事件驅動的分析,除了支持跨設備和跨平台數據收集,也提供了更多人工智慧和機器學習功能,能夠更有效地透過流量了解使用者。 GA4 以「事件 Events」為資料收集的基礎,除了幾個基本事件,如果要分析額外資訊,則需要自行建立其他額外事件,這種全新的資料收集架構,大幅提高在商業應用上的深度與彈性,但也增加了不少學習門檻,且 GA4 目前仍在不斷發展階段,許多未來「可能調整」的介面或功能,也是導入 GA4 時需要面對的挑戰。 發展歷程自 2005 年推出以來,GA 整合了許多的功能,已經成為一個廣泛使用且不可或缺的分析工具,下方簡單整理了 GA 的發展歷程與重要里程碑: 年份 概要 1997 網站數據分析工具 Urchin 誕生 2005 Google 收購 Urchin,正式推出 Google...
Agoda全端工程師的日常生活
這篇文章是我在 Agoda Engineering 部落格的文章閱讀紀錄A Day in the Life of a Full-Stack Engineer 在軟體開發不斷變化的領域中,全端工程師的角色既關鍵又全面。這些多才多藝的專業人員是網絡的建築師和建造者,同時負責製作用戶界面元素,同時管理保持數字平台運行順暢的服務器端流程。這是一個要求不僅廣泛技能,還需要解決問題思維和持續學習的角色。在這篇文章中,Maksym...
pytest-sugar 測試輸出美化與隨機測試
今天我們要介紹該如何美化我們在進行測試時終端機的輸出,以及讓我們的測試可以隨機的進行 測試輸出美化套件安裝1pip install pytest-sugar 測試案例下方為本次會使用到的測試案例,透過參數化的方式建立四次測試 12345678910111213import pytestargvalues = [[1, 1, 2], [4, 4, 8]]@pytest.mark.parametrize(argnames='num1, num2, result', argvalues=argvalues)def test_add(num1: int, num2: int, result: int): assert num1 + num2 == result@pytest.mark.parametrize(argnames='num1, num2, result', argvalues=argvalues)def example_add(num1: int, num2: int, result: int): assert num1...
pytest-xdist併發測試
這篇是記錄我在看鐵人賽 Python 與自動化測試的敲門磚 的過程 pytest-xdist,可以協助我們將 pytest 用併發的方式進行測試,白話來說就是同時進行很多個測試,而不是一個測完才接著下一個 套件安裝1pip install pytest-xdist 建立測試程式建立三個測試程式,並於每個測試案例內都進行等待五秒 12345678910111213from time import sleepdef test_case_1(): sleep(5)def test_case_2(): sleep(5)def test_case_3(): sleep(5) 成果展示未使用併發測試時,可以看到測試總共花了 15 秒左右 使用 pytest -n auto 表示要使用併發模式進行測試,可以看到測試時間只花了六秒鐘左右 併發數量若使用 auto 會自動抓取電腦 CPU 核心數,來建立併發數量,一般建議使用 CPU 核心數 / 2 的併發數量來進行測試可以透過 pytest -n 來進行併發數量的設定,例如:pytest -n 3...
Pytest 客製化
這篇是記錄我在看鐵人賽 Python 與自動化測試的敲門磚 的過程 透過設定 pytest.ini 即可讓我們進行一些簡單的客製化,讓 pytest 更符合我們的需求 預設指令透過設定 pytest.ini 我們可以達到每次執行 pytest 時,會自動帶入指定的參數,例如:-s、-v …於整個專案最外層建立 pytest.ini 檔案 編輯 pytest.ini 1234[pytest]addopts = --maxfail=1 -s -v 範例當中,我們設定了在使用 pytest 時會自動帶入 -s、-v 參數,並且設定當發生一次錯誤時就會停止測試 建立測試程式 12345678import pytestargvalues = [[1, 1, 2], [2, 2, 5], [3, 3, 7], [4, 4, 8]]@pytest.mark.parametrize(argnames='num1, num2, result', argvalues=argvalues)def test_add(num1: int, num2: int, result:...
Pytest 與 Mock
這篇是記錄我在看鐵人賽 Python 與自動化測試的敲門磚 的過程 專案練習有同步到 github 上,可以前往 這個網址 pytest-mock 使用情境今天我們要說明該如何再進行測試時,把不想要執行的方法給替換掉,在測試的過程中,有時候只是要測試函式的可用性,但像是發送 email、撰寫檔案等等的函式,往往是不希望被執行的,總不能每執行一次測試就寄一封 mail 給你,這樣信箱會很快就爆炸的,針對這個情況我們就可以透過 pytest-mock 來替我們進行函式的抽換,並回傳假的資料,只要確認函式運行的流程是正確的即可 套件安裝1pip install pytest-mock 抽換屬性建立函式 demo.py建立一個透過 sys 取得 platform 的函式 123456import sysdef get_sys_platform(): platform = sys.platform return platform 建立測試函式 test_demo.py將會用到的 package 全部 import 近來直接在 test case 當中的參數部分打上...
自動化測試 CI/CD
這篇是記錄我在看鐵人賽 Python 與自動化測試的敲門磚 的過程 CI/CD 簡介CI/CD 其實是指兩個部分,分別是 Continuous Integration (持續整合) 以及 Continuous Deployment (持續部屬) CI 持續整合在軟體開發的過程中,通常會由無數個開發人員一起工作,然而隨著程式碼以及人數的增加,專案會越來越難進行整合,這個時候我們就可以透過 CI 來進行。與其說 CI 是個工具,不如說 CI 是一種合作模式,藉由簡單的設定來讓 CI 工具替我們進行測試,就可以降低我們的專案在進行更新、整合時碰到問題的機率。 在 CI 執行的過程中,會建議每個開發人員每天上班前先做一次 pull 的動作,於每天下班前至少執行一次 push 的動作,以此確保 CI 的運行效率。 CD 持續部屬每當我們透過 CI 將專案整合完成後,便可以透過 CD 來進行自動化的部屬,減少我們在測試與部屬之間所耗費的時間 CI/CD 常用工具GitLab於 GitLab 上提供了 CI/CD 的介面,藉由在某處部屬好的...
Linux 複製檔案 cp 指令
複製檔案若要將 source.txt 檔案複製一份到 dest.txt,可以執行: 12# 將 source.txt 複製到 dest.txtcp source.txt dest.txt 複製目錄如果要複製整個目錄以及該目錄下的所有子目錄與檔案,可以加上 -r 參數(或是 -R、–recursive 參數亦可),以遞迴的方式進行複製: 12# 將 myfolder 目錄複製到 /path/to/ 路徑下cp -r myfolder /path/to/ 強制覆蓋檔案如果希望 cp 指令在無法寫入目的檔案時,嘗試刪除目的檔案,再重新複製一份新的檔案,可以加上 -f 或 –force 參數: 1cp -f source.txt dest.txt 不要覆蓋既有檔案如果希望 cp 指令遇到目的檔案已經存在的狀況,不要覆蓋既有的檔案,可以加上 -n 或 –no-clobber 參數: 1cp -n source.txt dest.txt 自動備份檔案若希望 cp 指令在覆蓋檔案時,可以將舊檔案自動備份起來,可以加上 -b 或 –backup 參數: 1cp -b source.txt...
Docker 基本操作 - 進入容器
Docker 進入容器 以下文章是在使用 Docker 時查詢到的好文章 我覺得這篇記錄的很詳細,所以記錄一下 exec 命令docker exec 是Docker內建的命令。下面示範如何使用該命令。 1234567$ sudo docker run -idt ubuntu243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550$ sudo docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES243c32535da7 ubuntu:latest "/bin/bash" 18 seconds ago Up 17 seconds nostalgic_hypatia$sudo...
Selenium 自動化測試
這篇是記錄我在看鐵人賽 Python 與自動化測試的敲門磚 的過程 套件安裝selenium:用來建立模擬器webdriver_manager:用來協助我們做驅動程式的安裝,可以無需實際下載瀏覽器的驅動程式 12pip install seleniumpip install webdriver_manager 快速入門程式解析: 透過 make_webdriver 內的程式碼,可以建立一個 Chrome 物件,習慣上我們會將此物件命名為 driver透過實作該方法得到 driver透過 driver.get() 對網址進行請求,這個時候 driver 就會實際替我們開啟一個瀏覽器為了展示開啟成功,使用 time.sleep() 讓瀏覽器畫面停止一下使用 driver.quit() 來確保瀏覽器完全關閉,不會殘留在記憶體當中 12345678910111213141516171819import timefrom selenium.webdriver import Chromefrom webdriver_manager.chrome import...