如何測試shell指令碼,保證正確

2022-08-02 18:45:14 字數 1581 閱讀 9198

如何用最快最有效的方式進行測試?

很多開發的習慣是,二話不說,寫完/拿到,就跑一把,看看輸入,輸出,想要的操作是否完成,也就過了。

其實這是十分不嚴謹的,若是未經過qa,風險還是相當大的。

以下即shell指令碼測試流程,僅供參考

1.**走讀:

通讀**,確保明白**的實現和自己預設的一致。

讀什麼?

a.**邏輯:這個指令碼用來做什麼,主要分為多少步,分別做了什麼事情?

用於檢查是否有遺漏邏輯,或有悖於需求。

b.具體語法,變數,判斷語句

語法方面的東西,變數是否定義,判斷語句邏輯是否正確,是否考慮各種異常,錯誤是否退出,返回正確狀態值等。

2.語法檢測:

shell的語法還是相當讓人無語的,很多很容易疏忽遺漏的地方

命令格式: sh -n ***.sh 

若是沒有異常輸出,證明指令碼沒有明顯的語法問題。

3.執行跟蹤:

實踐是檢驗整理的唯一標準,跑一把。

不過,可不是直接執行然後去看最終結果,這樣會遺漏掉很多中間過程。

命令格式:sh -vx ***.sh

得到效果如下:

我們可以看到

每行**原始命令(無+的):[這是-v的效果]

**執行時的情況(帶+),包括運算結果,邏輯判斷結果,變數賦值等等[-x的效果]

而我們所要關注的就是這些資訊,主要是變數值和邏輯判斷結果。

4.覆蓋分支:

直接跑,只能覆蓋到主體流程,對於其他控制流分支的**是無法覆蓋到的。

對於關鍵性的,重點的邏輯,我們需要製造條件,使執行指令碼可以進入對應分支

5.其他:

a.關於bashdb:

可以嘗試下,但是感覺投入產出比不高

b.關於單元測試:

實際工作中,由於專案壓力比較大,單元測試的成本還是相當高的,所以目前為止沒有。

6.有沒有更好的方式?

好吧,單步跟蹤,指令碼短的還好,日誌資訊不會太多,要是多了,存在呼叫其他指令碼等等.....

日誌量達到幾千行,這是很輕易的事情。

跟蹤過的童鞋有同感,展現不夠友好,慘白慘白一片,一千行下來,看的眼花。

很容易遺漏(lz被坑了好多回,你看,或不看......錯誤資訊明明就在那裡,就是視而不見)

so.進行了一層優化,對日誌進行處理,使用正則,標註我關心的資訊

效果圖對比:

處理後:(對錯誤,關鍵資訊進行顏色標記,在linux終端可以顯示)

指令碼是用python實現的,位置:

思想是:執行,抓到所有日誌,用正則進行匹配,打上顏色,然後輸出

歡迎一起優化,使之功能更完善

shell 如何測試shell指令碼,保證正確

如何用最快最有效的方式進行測試?很多開發的習慣是,二話不說,寫完 拿到,就跑一把,看看輸入,輸出,想要的操作是否完成,也就過了。其實這是十分不嚴謹的,若是未經過qa,風險還是相當大的。以下即shell指令碼測試流程,僅供參考 1.走讀 通讀 確保明白 的實現和自己預設的一致。讀什麼?a.邏輯 這個指...

shell 生成測試指令碼

expr 命令 用途求表示式變數的值。語法expr expression 描述expr 命令讀入 expression 引數,計算它的值,然後將結果寫入到標準輸出。您必須對 expression 引數應用以下規則 用空格隔開每個項。用 反斜槓 放在 shell 特定的字元前面。對包含空格和其他特殊字...

如何除錯Shell指令碼

如何除錯shell指令碼 1 檢查語法錯誤 一般來說我們可以通過修改shell指令碼的源 令其輸出相關的除錯資訊來定位錯誤,那有沒有不修改源 來除錯shell指令碼的方法呢?答案就是使用shell的執行選,下面是一些常用選項的用法 n 只讀取shell指令碼,但不實際執行 x 進入跟蹤方式,顯示所執...