一、開始日期,結束日期測試用例編寫
1. 調整服務器時間
我們知道測試時間最麻煩的地方就是時間是流動的,如果我們能隨意控制時間就好了。我們往往在測試時,用到比較多的就是調整服務器的時間來控制自己的測試用例。
Linux上需要用到相關命令
修改服務器時間 date -s “YYYY-mm-dd hh:mm:ss”這樣的格式。
查看服務器時間 date:
date命令是需要root用戶來操作的,如果沒有權限,就用su升級到root權限
另外還有通過接口,傳遞2個時間戳,或者普通時間參數來改變時間。
場景一:當天8點之后,服務狀態由關閉變為啟動
那我們可以要調整到7:59:50左右,來觀察服務狀態的變化。
場景二、每天的8點,服務狀態由關閉變為啟動
調整名列前茅天的時間為7:59:50,來觀察服務狀態的變化;
將時間調整到服務結束時間,使得服務為關閉狀態;
調整到當天的23:59:59秒,使服務跨天;
調整到第二天的7:59:50秒,再觀察服務狀態的變化。
2. 邊界值-時間點
關于時間經常主要注意的就是整點,
另外23:59:59這個時間特別重要,
還有00:00:01這個時間也特別重要,
測試前需要思考一下這些時間點是否符合自己的測試場景。
3. 時間位數
前幾天測試中遇到的一個BUG
舉例:某服務中的A按鈕的開啟和結束時間為800 至1600,在這個時間范圍內,才能打開A按鈕
配置文件如下:
startTime = 800
EndTime = 1600
800 3位表示8點
1600 4位表示16點
當我設置800~1600時,按鈕可以打開,在測試時,我調整到了800至2300,缺始終無法打開,經歷了一天的折磨后,最終發現了問題原因如下:
首先這個時間800,通過java代碼獲取的時候,后端處理是將時間轉化為毫秒級。
轉化時通過80036001000,如果從00:00:00開始算,那么名列前茅個毫秒數應該是1
這里的名列前茅個錯誤是,首先不能使用800,如果你過了8個小時,那應該是8,而不是800
第二個錯誤比較隱蔽。當java代碼獲取時間時,用了整型,java中整型的最大長度為2147483647,10位數,而時間如果設置到1600點, 160036001000 = 5760000000,10位數,超過了Int的最大長度
導致日志中看到的時間整型溢出,導致時間為負數。
經過調試,為負數時,在19:00之前均未出現錯誤,當時間調整到23:00時,時間比大小時出現了問題。
4. 關于時間戳及轉換
關于時間戳的獲取及轉換–時間戳轉換工具
轉換時的注意點,時間戳的轉換,是秒級還是毫秒級
Java獲取當前時間戳方法
System.currentTimeMillis();
Python獲取當前時間戳方法
time.time()
擴展閱讀:如果實際測試中有需要,可以通過時間戳的轉換,進行參數傳遞來達到改變時間的測試。