• 沒有找到結果。

二、 研究背景

軟體測試

軟體測試是在軟體開發過程中不可或缺的一環,其主要目的就是提早 發現錯誤,以增加軟體的可靠度和正確性。

2.1.1 介面層次的測試

Andreas/Zeller[1]將介面層次的測試分為 3 種方法:

1 Low-level:以傳送命令的方法來控制物件。

2 System-level:控制整個系統來進行測試,通常會使用虛擬機器。

3 Higher-level:真正找到介面上的控制項,並對其進行操控。

Andreas/Zeller 也提到,介面層次的測試,很容易因為一個小改變(例 如:解析度的變化),而造成測試資料失效。

2.1.2 回歸測試

回歸測試(Regression Test)的目的,是確保曾經測試過的部份不會出 現錯誤。在新增或修改程式代碼的過程中,可能會影響到其他未被修改到 的部份。回歸測試會在代碼更動過後,重複之前全部或部份的測試工作,

以確保程式能維持原本的功能。

4

2.1.3 單元測試

單元是指程式中最小的獨立單位,可能是一個函式(function)或是一 個類別(class)……等。單元測試的目的,是確保每一個獨立的單元符合 規格且運作正常。單元測試的優點如下:

 程式容易更改/維護:能確保更改後依然正確,若發生錯誤能更容 易找到問題點。

 可作為說明文件:單元測試定義了每個單元正確與錯誤的用法,而 且與程式碼同步,可以作為說明文件使用。

 可替代軟體設計規格:用單元測試替代文字說明,不僅能清楚了解 需求,實作完也可立即測試。

單元測試僅能確保單元正確,無法檢測出整體性或系統層的錯誤。因 為需要寫測試碼,因此不可能測出所有情況,也可能因為測試碼錯誤而造 成錯誤的結果。而更新程式碼的同時,也需要同步更新單元測試碼,否則 單元測試也將失去作用。

5

音訊

2.2.1 WAV 格式

WAV(Waveform Audio File Format)是在個人電腦上一種標準的音樂 儲存及播放格式,其包含了二部份:標頭(Header)及資料(Data)。標頭 的部份定義了取樣率(Sample Rate)、位元深度(Bit Depth)、聲道數目

(Channels)、及資料大小。WAV 的資料通常是沒有經過壓縮的。

2.2.2 WAV 音訊分析

在作音訊測試時,必需對音訊資料作分析;因為 WAV 的資料沒有經過 壓縮,很適合作為測試的音訊格式。

測試的音源通常為單一的正弦波(Sine wave),並經過傅立葉轉換(Fourier transform),將音訊資料由時域(Time domain)轉到頻域(Frequency domain)

作分析。最常見的分析標準是 SNR(Signal-to-noise Ratio)和 THD(Total Harmonic Distortion)。

SNR 是訊號(Psignal)和雜訊(Pnoise)的功率比值,越大代表雜訊越少,

音質越好。(圖 1)

THD 是除主頻外的諧波和(∑𝑖=2𝑃𝑖,Pi代表不同週期的諧波)和主頻

(P1)的功率比值,越小代表失真越少,音質越好。(圖 2)

圖 1 SNR 公式 圖 2 THD 公式 SNR = 𝑃𝑠𝑖𝑔𝑛𝑎𝑙

𝑃𝑛𝑜𝑖𝑠𝑒 THD = ∑𝑖=2𝑃𝑖

𝑃1

6

2.2.3 HD Audio

HD Audio(High Definition Audio)是 Intel 在 2004 年提出的音訊技術[2]。

相較於 AC97[3]能提供更高的取樣頻率及更多的聲道;最高能達到 192kHz、

微軟(Microsoft)在 Windows Vista 之後的作業系統,配合 HD Audio 提出了 Universal Audio Architecture (UAA)的音訊架構[4]。在此架構下,所

7

2.2.5 WASAPI

WASAPI(Windows Audio Session API)[4]是在 Windows Vista 之後,

微軟提供給應用程式的應用程式介面,以用來控制作業系統的音訊內容,

包括播音、錄音、音量……等。應用程式也可以透過 WASAPI 來取得音訊 裝置的各種資訊,包括狀態、音訊格式、預設裝置……等。

MFC

MFC(Microsoft Foundation Class)[4]是微軟提供的函式庫,提供了許 多樣板以建立應用程式的使用者介面(GUI)。

在 MFC 下的所有視窗(Windows)物件都來自 CWnd 類別。視窗物件 可能是對話方塊(Dialog)、表單、控制項(按鈕、下拉式方塊)……等。

每一個視窗物件都有其母視窗( Parent Window),最底層的視窗就是 Windows 桌面。一個應用程式稱為一個模組(Module),這個模組的最底 層稱為此程式的根視窗(Root Window)。在視窗物件下的其他物件,都稱 為子視窗(Child Window),一個視窗物件可能擁有許多子視窗。

圖 3 動態裝置,左側為閒置,右側為使用中。

8

JSON

JSON(Java Script Object Notation)[5]是一種純文字的資料交換語言,

其語法包括:

 Object(物件):

{ String : Value, ...}

 Array(陣列):

[ Value,...]

 Value(值):

可以是 Object、Array、String、Number、null、true、false

 String(字串):

"..."(以雙引號包住)

 Number(數字):

沒有雙引號包住的就是數字。

JSON 的格式簡單,容易瞭解,易於存取,雖然沒有 XML 強大,但其輕 量化的特性,可以滅少資料的檔案大小,適合用於網路傳輸。

9

相關文件