趙鴻劍 梁 毅
(中國藥科大學國際醫藥商學院,江蘇南京210009)
在科學技術迅速發展的今天,計算機系統在各行各業中扮演著越來越重要的角色,其在醫藥行業中的應用同樣如此。從最初簡單的辦公輔助作用,到如今滲透到設計、采購、生產、倉儲、運輸、銷售等整個醫藥供應鏈的每個環節,人們通過利用計算機系統強大的性能,有力推動了醫藥行業的快速發展壯大。然而,在享受計算機系統提供便利的同時,人們也應該清楚地認識到,計算機系統的廣泛應用實際上對使用者提出了更高的要求,一方面操作者需要具有較多的相關知識儲備以及完善的培訓資歷,以操控不同類型的計算機系統;另一方面,要求使用者或者該系統的設計者能夠及時發現并糾正隱藏在系統中的問題,避免給企業造成巨大的損失。
由于各個企業的專業人員的配備情況不同,對于計算機系統知識的掌握程度也不盡相同,特別是對于一些中小型醫藥企業來說,完成計算機系統的驗證相對要困難一些。一般來說,計算機系統主要包括硬件和軟件2個部分。計算機系統的驗證實質上是一種基本的核實活動,關注的重點在于識別和糾正缺陷,同時證明該系統能夠滿足要求。
與計算機硬件部分的驗證不同,軟件部分的驗證更多地要考慮功能測試和需求測試。針對我國醫藥企業很少配備專門的計算機系統驗證人才的情況,本文就計算機系統中較為重要的軟件系統的測試提供一些思路,以供探討。
首先應該了解什么是測試,可以簡單地理解測試就是找錯誤,具體是指發現并指出軟件(包含軟件經過建模、需求、設計等階段所產生的大量輸出工件)中存在的缺陷的過程。這個過程指明和標注了問題存在的正確位置,詳細記錄導致問題出現的操作步驟,并及時儲存當時的錯誤狀態,以上組合在一起便于能夠準確再現測試后存在的問題。
通常在軟件測試中一般分為2類:黑盒測試和白盒測試。
黑盒測試,也稱功能測試或數據驅動測試,顧名思義是將被測程序當作一個不知道內容的黑盒子,在已知產品所應具有的功能的基礎上,通過測試來檢測每個功能是否能夠正常使用,是一種從用戶觀點出發的測試方法。
白盒測試,也稱結構測試或邏輯驅動測試,測試人員知道產品內部工作過程后,通過測試來檢測產品內部動作是否按照規格說明書的要求來運行,目的在于檢驗程序的每條通路是否按照要求正常工作,而較少考慮它的功能。由于此種測試深入到了代碼級別,對代碼知識掌握程度的要求比較高,這種測試主要以代碼開發人員為主。
由于黑盒測試相對于白盒測試來說,更加注重對于軟件功能方面的測試,而且著重考慮了用戶需求,因此對于中小型醫藥企業來說,將其引入軟件驗證中更為符合實際情況。
黑盒測試根據其定義,可將其特點歸納如下:
(1)測試人員不需要了解程序內部的代碼與實現;
(2)測試用例設計不依賴于系統內部的設計與實現;
(3)測試用例設計基于功能的定義和用戶需求(URS);
(4)從用戶角度出發進行測試,比較容易知道用戶的需求和用戶會遇到的問題;
(5)關注于測試數據的選擇和測試結果的分析;
(6)對測試人員的編程技術要求不高;
(7)在自動化測試時較為方便;
(8)不易發現代碼部分的缺陷。
對于醫藥企業來說,采用黑盒測試的目的主要是在已知配置軟件所應具有的功能基礎上,進行如下檢查:
(1)檢查程序功能能否滿足用戶需求(URS),程序是否按照規格說明書的規定正常使用,測試各個功能是否有遺漏,檢測性能等特性要求是否滿足,關鍵質量屬性控制是否全部覆蓋;
(2)檢測人機交互是否存在錯誤,檢測數據結構或外部數據庫訪問是否錯誤,程序是否能當地接受輸入數據并產生正確的輸出結果,同時保持外部信息(如數據庫或文件)的完整性;
(3)檢測程序初始化和終止條件是否存在錯誤。
根據黑盒測試的目的,我們大致將黑盒測試所能測試出的主要錯誤類型歸納為:不正確或遺漏的功能;接口、界面錯誤;性能錯誤;數據結構或外部數據訪問錯誤;初始化或終止條件錯誤等,當然在實際驗證工作中需要根據具體情況來確定。
黑盒測試更多地從用戶角度出發去考察問題,例如界面的實用性、系統的穩定性等。在實際操作過程中,往往存在著入手簡單、做好較難的問題。因此在利用黑盒測試進行軟件驗證之前,需要側重考慮以下幾個問題:
(1)如何測試功能的有效性;
(2)何種類型的輸入會產生好的測試用例;
(3)系統是否對特定的輸入值尤其敏感;
(4)如何分隔數據類的邊界;
(5)系統能夠承受何種數據率和數據量;
(6)特定類型的數據組合會對系統產生何種影響。
雖然理論上在利用黑盒測試方法發現程序中的錯誤時,必須把所有可能的輸入值和輸出值作為測試數據進行考查,以檢查程序是否能夠產生正確結果,但這是不實際的,即便是醫藥企業使用的簡單軟件,其包含測試點的數量也很多,排列組合后的數值更為巨大,因此窮舉測試數量太多無法完成,只能在大量潛在數據中,選取其中一部分代表值作為測試用例。
實際操作中,黑盒測試通常有等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動分析法、場景設計法等。由于等價類劃分法是最為常見的,也是極為重要的黑盒測試方法,因此下面就此種方法展開介紹。
等價類劃分方法將不能窮舉的測試過程進行了合理的分類,從而保證設計出來的測試用例具有完整性和代表性。簡單地說,等價類劃分法是把所有可能的輸入數據,即程序的輸入域劃分為若干個等價類(子集),然后從每個子集中選取少數具有代表性的數據作為測試用例。在該子集中,各個輸入數據對于發現程序中的錯誤都是等效的,它們具有等價特性,也就是說測試某等價類的代表值即等效于這一類其他值的測試。
采用等價類劃分方法設計測試用例通常分為2步進行,首先確定等價類,列出等價類表,然后確定測試用例。而等價類也分為2種情況,其中對軟件的用戶需求(URS)而言,是有意義的、合理的輸入數據所組成的集合為有效等價類。通過有效等價類來檢驗程序是否實現了用戶需求中設定的功能和性能。相反,對軟件的用戶需求(URS)來說,是無意義的、不合理的輸入數據所構成的集合,即為無效等價類。利用無效等價類,可以鑒別程序異常處理的情況,檢查被測對象的功能和性能的實現是否有不符合規格要求的地方。
在設計測試用例時,需要同時考慮這2種等價類,因為軟件不僅需要能接受既定的合理的數據,也要能經受意外的考驗,這樣的測試才能確保軟件具有較高的可靠性。蘇亞麗描述了標準等價類和健壯等價類的劃分方法和原則,而崔應霞等則提出了新的算法,使得在保證各組合覆蓋率的基礎上減少了運行的次數,降低了測試的負擔。
在此基礎上,下面以一個軟件的登錄系統為例來介紹這一方法。
在用戶需求的說明中需要輸入的內容包括用戶名、用戶密碼、用戶類型,有2個按鈕分別為“登陸”和“取消”。當用戶ID不存在、密碼輸入錯誤或用戶類型不匹配時,自動跳出錯誤提示。系統是不允許用戶重復登陸的。
首先,分析用戶需求(URS)(表1)中給出的和隱含的對輸入條件的要求限制;然后,列出等價類表(包括有效等價類和無效等價類)(表2);最后,設計測試用例(表3)。

表1 用戶需求

表2 等價類表

表3 測試用例
在醫藥行業中對于計算機系統進行驗證是一項集技術、管理與法規為一體的要求很高的工作,必須嚴格按照規定的程序來進行,并留下完整詳細的記錄。本文對黑盒測試在軟件驗證過程中的使用方法進行了系統的介紹,并以某軟件的登陸系統做了簡單的示范。
縱觀國內外,計算機系統在醫藥行業中的使用普及率不斷提高,可以預見在不久的將來,計算機系統驗證將成為一項符合法規要求的常規性操作。因此,只有掌握更多的計算機系統的有效知識,才是做好計算機系統驗證工作的根本所在。
[1]ISPE指南[S]
[2]張海藩.軟件工程導論[M].北京:清華大學出版社,2000
[3]蘇亞麗.黑盒測試之等價類劃分[J].玉溪師范學院學報,2009,25(8)
[4]崔應霞,李龍澍.基于輸入輸出關系的綜合黑盒測試方法[J].計算機工程與設計,2007,28(23)
[5]梁毅.新版GMP教程[M].北京:中國醫藥科技出版社,2011