class Visible
{public:
int b=2;
char *s= "visible";}
…..
…..
Hiden pp;
Visible *qq=(Visible *)&pp;
在上面的程序段中,pp的數據成員可以通過qq被隨意訪問。
2 類是否實現了要求的功能
類所實現的功能,都是通過類的成員函數執行。在測試類的功能實現時,應該首先保證類成員函數的正確性。單獨的看待類的成員函數,與面向過程程序中的函數或過程沒有本質的區別,幾乎所有傳統的單元測試中所使用的方法,都可在面向對象的單元測試中使用。具體的測試方法在面向對象的單元測試中介紹。類函數成員的正確行為只是類能夠實現要求的功能的基礎,類成員函數間的作用和類之間的服務調用是單元測試無法確定的。因此,需要進行面向對象的集成測試。具體的測試方法在面向對象的集成測試中介紹。需要著重聲明,測試類的功能,不能僅滿足于代碼能無錯運行或被測試類能提供的功能無錯,應該以所做的OOD結果為依據,檢測類提供的功能是否滿足設計的要求,是否有缺陷。必要時(如通過OOD結仍不清楚明確的地方)還應該參照OOA的結果,以之為最終標準。
五、面向對象的單元測試(OO Unit Test)
傳統的單元測試是針對程序的函數、過程或完成某一定功能的程序塊。沿用單元測試的概念,實際測試類成員函數。一些傳統的測試方法在面向對象的單元測試中都可以使用。如等價類劃分法,因果圖法,邊值分析法,邏輯覆蓋法,路徑分析法,程序插裝法等等,方法的具體實現參見[6]。單元測試一般建議由程序員完成。
用于單元級測試進行的測試分析(提出相應的測試要求)和測試用例(選擇適當的輸入,達到測試要求),規模和難度等均遠小于后面將介紹的對整個系統的測試分析和測試用例,而且強調對語句應該有100%的執行代碼覆蓋率。在設計測試用例選擇輸入數據時,可以基于以下兩個假設:
1. 如果函數(程序)對某一類輸入中的一個數據正確執行,對同類中的其他輸入也能正確執行。該假設的思想可參見[6]中介紹的等價類劃分。
2. 如果函數(程序)對某一復雜度的輸入正確執行,對更高復雜度的輸入也能正確執行。例如需要選擇字符串作為輸入時,基于本假設,就無須計較于字符串的長度。除非字符串的長度是要求固定的,如IP地址字符串。
文章來源于領測軟件測試網 http://www.kjueaiud.com/