国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

判定表法的教學(xué)案例研究

2019-12-23 09:28薛峰
電腦知識(shí)與技術(shù) 2019年31期
關(guān)鍵詞:功能測試軟件測試

薛峰

摘要:結(jié)合教學(xué)實(shí)踐,歸納和整理了軟件測試課程中與判定表法相關(guān)的典型教學(xué)案例。這些教學(xué)案例能夠很好地適用于判定表法的教學(xué)工作,有助于深入淺出地向?qū)W生展示判定表法的使用方法。此外,提出在教學(xué)中應(yīng)當(dāng)充分利用被測程序輸入條件之間存在的約束關(guān)系,簡化初始判定表的構(gòu)造。

關(guān)鍵詞:軟件測試;黑盒測試;功能測試;判定表

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)31-0159-03

1概述

軟件測試是軟件質(zhì)量控制的一種有效手段,也是軟件生命周期的一個(gè)重要環(huán)節(jié)。在開發(fā)過程中,采用有效的軟件測試方法和技術(shù),不僅有助于提高軟件產(chǎn)品的質(zhì)量水平,而且能夠顯著地降低項(xiàng)目后期的維護(hù)成本。

軟件測試的核心任務(wù)是尋找被測軟件中存在的各種缺陷。實(shí)施測試的基本手段是為被測程序設(shè)計(jì)一組測試用例,每條測試用例至少包含輸人數(shù)據(jù)和預(yù)期結(jié)果兩個(gè)部分。然后,將數(shù)據(jù)逐條輸人被測程序,并觀察實(shí)際運(yùn)行結(jié)果是否和對(duì)應(yīng)的預(yù)期結(jié)果一致。由此可見,測試用例的設(shè)計(jì)是軟件測試的一項(xiàng)重要活動(dòng),也是測試工程師所應(yīng)當(dāng)掌握的一項(xiàng)基本技能。因此,測試用例設(shè)計(jì)方法就構(gòu)成了軟件測試課程的核心理論內(nèi)容。判定表法是一種經(jīng)典的測試用例設(shè)計(jì)方法,主要適用于在多項(xiàng)輸入條件中存在復(fù)雜邏輯組合關(guān)系的被測程序。該方法被廣泛應(yīng)用于軟件測試實(shí)踐,因此也是測試用例設(shè)計(jì)方法的教學(xué)重點(diǎn)。

本文旨在歸納和整理與判定表法相關(guān)的典型教學(xué)案例,這些案例能夠逐步引導(dǎo)學(xué)生理解并掌握判定表法的概念和步驟。此外,在生成初始判定表的過程中,通常可以利用被測程序輸入條件之間的約束關(guān)系,達(dá)到簡化初始判定表的目的。許多軟件測試教材對(duì)此未做強(qiáng)調(diào),本文將結(jié)合案例分析對(duì)其加以補(bǔ)充。

2判定表法

判定表法是一種典型的黑盒測試方法。所謂黑盒測試,即將被測程序視為一個(gè)黑盒,測試工程師在不了解被測程序內(nèi)部數(shù)據(jù)結(jié)構(gòu)和算法的情況下,僅依據(jù)被測程序的規(guī)格說明即可完成測試用例的設(shè)計(jì)。各種黑盒測試方法都能夠幫助測試工程師找出滿足特定覆蓋要求的一系列情況,然后針對(duì)每種情況設(shè)計(jì)一條測試用例。設(shè)計(jì)測試用例的前提條件是被測程序的規(guī)格說明必須是規(guī)范的。規(guī)范的規(guī)格說明應(yīng)當(dāng)準(zhǔn)確描述被測程序的輸入、處理和輸出。在不考慮內(nèi)部處理的情況下,依據(jù)規(guī)格說明設(shè)計(jì)出的每條測試用例,反映了特定輸入條件組合與輸出之間的對(duì)應(yīng)關(guān)系,其中的每個(gè)輸入條件組合通常是所有輸入變量的一組特定取值。

判定表法以表格形式列舉出被測程序的所有情況,這些情況應(yīng)當(dāng)覆蓋被測程序的所有輸入條件組合和對(duì)應(yīng)的輸出,從而幫助測試工程師清晰、直觀地考察這些情況,并順利地設(shè)計(jì)出對(duì)應(yīng)的測試用例。因此,一張判定表的基本結(jié)構(gòu)應(yīng)當(dāng)包含如下四個(gè)部分:

條件樁:列出被測程序的所有輸人條件。

動(dòng)作樁:列出被測程序的所有輸出。

條件項(xiàng):列出被測程序的所有輸入條件組合。

動(dòng)作項(xiàng):列出被測程序所有輸入條件組合與輸出之間的對(duì)應(yīng)關(guān)系。

其中,由條件項(xiàng)和動(dòng)作項(xiàng)構(gòu)成的一列稱為一條規(guī)則,每條規(guī)則都包含特定輸入條件組合及其對(duì)應(yīng)的輸出。

3教學(xué)案例

本文主要從規(guī)格說明和案例分析兩個(gè)方面描述判定表的教學(xué)案例。其中,案例分析部分又分為如下兩個(gè)步驟:(1)初始化判定表。列出所有條件樁和動(dòng)作樁,并填寫條件項(xiàng)及其對(duì)應(yīng)的動(dòng)作項(xiàng)。如果輸入條件之間存在明顯的約束關(guān)系,則在填寫條件項(xiàng)時(shí)利用這些約束關(guān)系簡化初始判定表。(2)化簡判定表。合并冗余規(guī)則并消除矛盾規(guī)則。

這里需要說明一點(diǎn),判定表法的完整教學(xué)案例還包括選取測試用例的步驟,即為每條規(guī)則選取一條測試用例,限于篇幅本文省略了這一步驟。

3.1案例1:合并冗余規(guī)則

規(guī)格說明:某網(wǎng)站的會(huì)員注冊程序要求用戶輸入兩次密碼,并檢查輸入的密碼是否正確。系統(tǒng)首先檢查兩次輸入的密碼是否一致,如果不一致則提示“密碼不一致”。然后,檢查密碼是否少于8個(gè)字符,如果少于8個(gè)字符則提示“密碼不足8個(gè)字符”。最后,檢查密碼是否由字母和數(shù)字構(gòu)成。如果不滿足要求則提示“密碼應(yīng)包含字母和數(shù)字”。如果上述三個(gè)條件都滿足,則用戶輸入的密碼通過檢查。

步驟1初始化判定表

該步驟的主要任務(wù)是填寫判定表的初始內(nèi)容。首先,在條件樁中列出所有輸入條件,在動(dòng)作樁中列出所有輸出動(dòng)作。其中,條件應(yīng)盡量簡單,不要列出復(fù)合條件。事實(shí)上,復(fù)合條件可以由基本條件組合得到。對(duì)于布爾類型的條件,在條件樁中僅列舉一個(gè)取值,另一個(gè)取值自然就是其邏輯非。但如果條件不是布爾類型,則需要在條件樁中列舉該條件的所有取值。

如表1所示,本例的基本條件共有三個(gè),動(dòng)作共有四個(gè)。由于三個(gè)基本條件都是布爾類型,因此共列出8(23)個(gè)條件項(xiàng)。條件項(xiàng)中每個(gè)條件的取值用“T”表示邏輯真,用“F”表示邏輯假。最后,本例的所有條件項(xiàng)對(duì)應(yīng)的動(dòng)作項(xiàng)都僅有一個(gè)取值,這是因?yàn)楫?dāng)存在多個(gè)條件為假時(shí),系統(tǒng)按檢查的順序僅提示一條錯(cuò)誤信息。

步驟2化簡判定表

通過分析不難發(fā)現(xiàn)表1中存在可以合并的冗余規(guī)則。在尋找冗余規(guī)則時(shí),首先應(yīng)找出具有相同動(dòng)作的規(guī)則,然后確定這些規(guī)則中條件項(xiàng)取值相同的條件,最后檢查剩余條件是否能夠遍歷所有的取值,如果可以則這些規(guī)則就可以合并為一條規(guī)則。在合并所得的規(guī)則中,對(duì)于那些原本取值不同的條件,將其取值都統(tǒng)一修改為“一”,代表可以任意取值。

例如在表1中,第5、6、7、8條規(guī)則的動(dòng)作都是“密碼不一致”,這四條規(guī)則的條件項(xiàng)依次為:FTF、FTF、FFT、FFF。通過觀察不難發(fā)現(xiàn),它們的第一個(gè)條件都取值為F,而剩余的第二、三條件則遍歷了二者的所有四種取值(TT、TF、FT、FF),因此這四條規(guī)則可以合并為一條規(guī)則:F-。其中的兩個(gè)“一”代表第二、三兩個(gè)條件可以任意取值。

類似地,第3、4條規(guī)則的動(dòng)作都是“密碼不足8個(gè)字符”,二者的條件項(xiàng)依次是TFT和TFF。其中,第一、二兩個(gè)條件的取值都為TF,剩余的第一個(gè)條件的取值遍歷了該條件的所有兩種情況佃和F),因此這兩條規(guī)則可以合并為TF-。化簡的判定表如表2所示。

3.2案例2:消除矛盾規(guī)則

規(guī)格說明:閏年判定程序用于判斷一個(gè)給定年份是否為閏年,它輸入一個(gè)代表年份的整型變量year,如果year是閏年則輸出true,否則輸出false。

步驟1初始化判定表

本例的三個(gè)基本條件是year能夠分別被4、100或400整除,兩個(gè)動(dòng)作分別是輸出true或false。由于每個(gè)條件都屬于布爾類型,因此總共需要列出八個(gè)條件項(xiàng)。初始判定表如表3所示,考慮到規(guī)則有可能存在邏輯矛盾,因此在表中特別增加了一個(gè)“矛盾”動(dòng)作。

步驟2化簡判定表

表3的第3、5、6、7條規(guī)則都存在邏輯矛盾。例如第3條規(guī)則的含義是year能夠被4和400整除,但不能被100整除,這是不可能的,因此存在矛盾。對(duì)其他三條規(guī)則也可以做類似的分析。上述四條規(guī)則的“矛盾”動(dòng)作中都填入了“T”,表示這是矛盾規(guī)則。在化簡判定表時(shí),只要?jiǎng)h除矛盾規(guī)則所在的列即可?;喌呐卸ū砣绫?所示。此時(shí),判定表中不用再包含“矛盾”動(dòng)作了。

3.3案例3:利用約束關(guān)系簡化初始判定表

規(guī)格說明:三角形類型判定程序用于判斷三角形的類型。該程序輸入代表三條邊長的三個(gè)整型變量a、b、c(a>0,b>0,c>0),輸出三角形的類型可能是“等邊三角形”“等腰三角形”和“一般三角形”。如果三條邊無法構(gòu)成三角形,則輸出“不構(gòu)成三角形”。

步驟1初始化判定表

當(dāng)問題規(guī)模比較大的時(shí)候,由于輸入變量或變量的取值數(shù)量眾多,直接構(gòu)造初始判定表將面臨組合爆炸的問題。此時(shí),如果基本條件之間存在約束關(guān)系,不妨利用問題本身所蘊(yùn)含的這一特點(diǎn),獲得簡化的初始判定表。

在本例中,判定構(gòu)成三角形的基本條件是:a+b>c、a+c>b、b+c>a。判定三角形類型的基本條件是:a=b、a=c、b=c。由這六個(gè)條件所形成的條件項(xiàng)共有64(261項(xiàng),在判定表中直接列舉所有這64項(xiàng)的工作量顯然是巨大的。事實(shí)上,借助平面幾何知識(shí)不難證明如下結(jié)論:當(dāng)a>0,b>0,c>0時(shí),a+b>c、a+c>b、b+c>a三個(gè)條件中,最多只有一個(gè)不成立。該結(jié)論反映了上述三個(gè)條件之間存在的約束關(guān)系,利用該關(guān)系可以獲得簡化的初始判定表。

如表5所示,其中第1~3條規(guī)則對(duì)應(yīng)不能構(gòu)成三角形的三種情況。對(duì)于a+b>c、a+c>b、b+c>a三個(gè)條件而言,在每種情況下都僅有一者不成立。由于無法構(gòu)成三角形,因此這三條規(guī)則中的其他三個(gè)條件都取值為“一”。第4-11條規(guī)則對(duì)應(yīng)能夠構(gòu)成三角形的八條規(guī)則,其中每條規(guī)則的前三個(gè)條件都取值為“T”,表示能夠構(gòu)成三角形。而這些規(guī)則的后三個(gè)條件則遍歷所有八種取值。與前面分析的64條規(guī)則相比,此處獲得的初始判定表僅包含11條規(guī)則,從而在很大程度上簡化了初始判定表的規(guī)模。

步驟2化簡判定表

在表5中不存在可以合并的冗余規(guī)則,因此本例無須考慮規(guī)則的合并。然而,第5、6、8條規(guī)則卻存在矛盾。例如,對(duì)于第5條規(guī)則而言,后面三個(gè)條件的取值是TTF,分別表示a=b、a=c和b*c,這顯然是矛盾的。對(duì)第6、8條規(guī)則也可以做類似的分析。消除這三條規(guī)則將獲得化簡的判定表,化簡結(jié)果如表6所示。

4結(jié)束語

軟件測試是一門實(shí)踐性很強(qiáng)的課程,因此對(duì)于判定表法的教學(xué)不能僅局限于理論知識(shí)的講授,而應(yīng)當(dāng)在各個(gè)教學(xué)環(huán)節(jié)中為學(xué)生提供動(dòng)手實(shí)踐的機(jī)會(huì)。本文所列舉的幾個(gè)案例為判定表法的理論教學(xué)和實(shí)踐教學(xué)都奠定了堅(jiān)實(shí)的基礎(chǔ)。在此基礎(chǔ)之上,還要結(jié)合實(shí)踐教學(xué)的需要,設(shè)計(jì)并實(shí)現(xiàn)相應(yīng)的被測程序。通過在被測程序中預(yù)先埋設(shè)缺陷,學(xué)生可以驗(yàn)證其設(shè)計(jì)測試用例的有效性,從而更加深化對(duì)判定表法的認(rèn)識(shí)。當(dāng)然,這一教學(xué)思路不僅適用于判定表法,也適用于其他黑盒測試方法。

猜你喜歡
功能測試軟件測試
某內(nèi)花鍵等速傳動(dòng)軸八功能測試夾具設(shè)計(jì)
基于OBE的軟件測試課程教學(xué)改革探索
EXCEL和VBA實(shí)現(xiàn)軟件測試記錄管理
關(guān)于軟件測試技術(shù)應(yīng)用與發(fā)展趨勢研究
智能電能表軟件測試技術(shù)概述
功能測試系統(tǒng)開發(fā)平臺(tái)設(shè)計(jì)
《軟件測試》課程教學(xué)策略研究
高青县| 册亨县| 沧源| 寿阳县| 班戈县| 天峨县| 杭州市| 河北区| 平原县| 彰化县| 桂东县| 双柏县| 东辽县| 老河口市| 镇坪县| 苏尼特左旗| 新竹市| 鸡西市| 广灵县| 新竹县| 新河县| 维西| 安岳县| 余庆县| 云阳县| 石阡县| 平原县| 东港市| 马边| 尼玛县| 南昌市| 中卫市| 平武县| 安福县| 英超| 郧西县| 秀山| 杭锦后旗| 会昌县| 日喀则市| 渭源县|