嵌入式軟體的測試(三)

針對與時間因素有關處理的潛在錯誤而設計的測試案例,可能是嵌入式軟體測試的另一個精華表現。譬如,不少人都有如此的經驗:只要不規則地亂按一些按鍵,有時就可把手機或其他手持設備弄當掉,必須重新開機才行;但若要詳細說明如何才把那個機器弄當掉的,卻又說清不楚,也不一定有把握每次都可以把機器弄當掉。

我們都知道在硬體沒有問題的前提下,如果發生當機狀況就是因為軟體中有錯誤存在(反過來則不一定,即軟體中有錯誤卻不一定會造成當機)。但是,在看似相同的使用過程(或給予相同的輸入資料)中,有的時候可以正常運作,而有的時候卻發生當機,那是怎麼回事呢?一般來說,是因為受到時空因素不同的影響才可能產生這種現象。先舉一個類似的例子來說明:如果一個星期以前用"ABCD"為關鍵字在 Google 上搜尋所得到的結果,與一個星期之後同樣用"ABCD"為關鍵字在 Google 上搜尋所得到的結果,兩者不一定是相同的;因為網路上那麼多人在創造資訊,只要時空因素有改變,雖然其他同樣的處理程序及條件不變,輸出的結果就可能會不一樣。如果需要掌握輸出結果,就必須能掌握時空因素的描述,譬如當清楚指明使用 Google 搜尋的確切時間以及地區別時,也許 Google 就能再度輸出一份完全相同的結果(當然這要看 Google 提供的服務功能到底有多強才行,在此只是個協助說明的例子)。

一個成功的、以找出可能與時間因素有關錯誤為目的的嵌入式軟體測試案例,是可以清楚地描述如何用一組輸入資料(包含輸入順序、或時間間隔等等說明)來把機器弄當掉的。只要依照測試案例的內容來執行測試,如果實際輸出結果與預期的輸出不同(譬如當機了),那這個版本的軟體就存在著某種(即測試案例的目的所描述的)時間因素有關錯誤。另外一個重點是,不會發生有時正常、有時卻不正常的狀況,因為成功的測試執行結果必須要能隨時再產生(reproduce)。

獲得這樣一個測試案例設計的費用,若相當於一個軟體工程師半個月的薪水,你覺得是便宜還是貴呢?(再提醒一次,相對而言,嵌入式軟體的測試是比較簡單的軟體工程技術應用。)

留言

  1. 一直很想回應,但一直在拖,雖然一點久,可是還是感謝劉教授提出這非常有趣的主題,畢竟嵌入式系統的應用廣泛,軟體開發的確是有一些值得注意的事項,包括如有無OS的系統,或是SoPC等平台上的軟體開發。

    如果案例設計的費用是一個軟體工程師半個月的薪水,當然是非常值得。可是多少時候,我們在許多project同時到期的壓力下,『沒有辦法』投資這重要的代價。

    這讓我聯想到另外一個問題,嵌入式軟體通常被視為platform-dependent。那麼我們有多少東西能reuse呢?如果測試案例每次都得重新設計,那麼感覺太浪費了。這會回來讓我們思考,如何作好知識的傳承。不只是軟體的開發,還包括測試的know-how。

    是否能提供一些經驗呢?

    回覆刪除
  2. 這個星期一參加了一個嵌入式軟體的座談會,討論了一個類似的議題:需不需要成立一個『嵌入式軟體的測試中心』,提供公正的測試驗證結果。基本上產官學都十分希望有這樣的組織,討論也很熱烈。會中我提出了兩個問題,但因為時間的關係,並沒有討論到,或許可以從這裡得到一些答案。

    第一如何確認一個測試中心的正確性?因為沒有人可以保證軟體是沒有錯的。第二,台灣有IC測試(硬體)的公司,為什麼沒有軟體測試的公司?嵌入式可說是軟硬體通吃的產業,他在建立測試中心時應該注意什麼呢?

    回覆刪除
  3. 真的有很多東西想寫,雖然沒整理,甚至還有點亂七八糟:
    一、立頌兄提的軟體開發與軟體測試,在我個人認知就是像在 security 相關研究裡的攻方與守方;乍看之下似乎是各有出發立場,但實際上最後是一樣的(攻的人想盡辦法攻,守的人想盡辦法守;最後才會共同瞭解問題的 lower bound 所在)。我是認為軟體測試最後就是與軟體開發(需求分析、設計)共同建置出好的軟體,其 competence 是一樣的。
    二、薛教授提的兩個問題,可能還先要有前題才好討論。譬如:測試(testing)與認證(certification)究竟有何不同?硬體與軟體的測試究竟有何不同?這些都是值得先吵一吵的,否則答案寫完了才發現題目沒看清楚,那考試分數不會好看的。一般的直覺想法都是要"通過測試取得認證",但如同薛教授所說,軟體測試的目的是要證明軟體中有錯誤存在,並不是要證明軟體的正確性,那這裡不是很矛盾嗎?軟體測試應該是不會去管認證的,除非是專門發放"軟體有錯誤"的認證。其實有心人好好坐下來想一想,軟體測試中心的功能是可以浮現的,譬如專門設計各種有效的測試案例可能就是一大德政。
    三、再強調一次,嵌入式系統軟體的測試(非硬體)是屬於比較簡單的軟體測試,容易上手,也是很好的起點。

    回覆刪除
  4. For example, a participant can wager on the ball landing on a sure quantity, between sure numbers, or a sure quantity. Unlike land-based casinos, taking part in} roulette on-line gives you the benefit of trying out games at no cost. This is of important importance for new spanking new|for brand new} players who still have no idea what they like. Roulette certainly one of the|is amongst the|is likely one of the} games available to play at no cost, and that’s great. Since it’s a recreation that may eat shortly chip via your bankroll, it’s a 카지노사이트.online good suggestion to try it for fun before you place actual cash. Their on line casino web site features greater than 50 live vendor games from software program developers such as Evolution Gaming, NetEnt, and Ezugi.

    回覆刪除

張貼留言

這個網誌中的熱門文章

有理說不清

CMMI是什麼?

CRC cards - 非正規物件導向發展技術