計(jì)算機(jī)科學(xué)與技術(shù)系
實(shí)
驗(yàn)
報(bào)
告
專業(yè)名稱
軟件工程
課程名稱
軟件測(cè)試
項(xiàng)目名稱
Junit 框架的配置和使用
班
級(jí)
學(xué)
號(hào)
姓
名
同組人員
無(wú)
實(shí)驗(yàn)日期
2018 年 3 月 15 日
一、實(shí)驗(yàn) 題目及實(shí)驗(yàn) 內(nèi)容 :
1、實(shí)驗(yàn)題目:Junit 框架的自動(dòng)配置與使用 2、實(shí)驗(yàn)內(nèi)容:使用 Junit 進(jìn)行自動(dòng)化測(cè)試, 二 、實(shí)驗(yàn)?zāi)康?與要求 :
1、實(shí)驗(yàn)?zāi)康模菏褂?Junit 進(jìn)行自動(dòng)化測(cè)試,提高學(xué)生的測(cè)試意識(shí),培養(yǎng)測(cè)試思維。
2、實(shí)驗(yàn)要求 (1)自動(dòng)生成測(cè)試框架和測(cè)試類 (2)熟練掌握 Junit 的元數(shù)據(jù)、斷言、測(cè)試套件、測(cè)試固件等 (3)完成對(duì)被測(cè)類的自動(dòng)化測(cè)試 (4)提交實(shí)驗(yàn)報(bào)告 三 、實(shí)驗(yàn) 步驟
1、使用 Java 語(yǔ)言實(shí)現(xiàn)計(jì)算器類 Calculator package test1; public class Calculator {
private static int result ;//靜態(tài)變量
/*加函數(shù)*/
public void add(int n) {
result = result +n;
}
/*減函數(shù)*/
public void substract(int n) {
result = result -n;
}
/*乘函數(shù)*/
public void multiply(int n) {
result = result *n;
}
/*除函數(shù)*/
public void devide(int n) {
if(n==0) {
System. out .println("分母不能為零");
}else
result = result /n;
}
/*平方函數(shù)*/
public void square(int n) {
result =n*n;
//System.out.println("nzhi"+result);
}
/*死循環(huán)*/
public void squareRoot(int n) {
for(int j=0;j<=n/2+1;j++){
if(j*j==n){
result =j;
}
}
}
/*結(jié)果清零*/
public void clear() {
result =0;
}
/*返回結(jié)果*/
public int getResult() {
return result ;
} } 2、自動(dòng)生成 CalculatorTest 類,如下圖:
圖 1 創(chuàng)建測(cè)試類
圖 2 為測(cè)試類命名 3、完善 CalculatorTest 類的代碼,如下:
package test1; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class CalculatorTest {
private static Calculator calculator=new Calculator();
private static int nCount=0;//測(cè)試方法統(tǒng)計(jì)
@Before
public void setUp() {
calculator.clear();//計(jì)算器歸零
}
@After
public void tearDown() throws Exception{
nCount++;
System.out.println("Test Done:"+nCount);
}
@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5,calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8,calculator.getResult());
}
@Test
public void testMultiply() {
calculator.add(10);
calculator.multiply(6);
assertEquals(60,calculator.getResult());
}
/*驗(yàn)證 8 除以 2 等于 4*/
@Test
public void testDevide() {
calculator.add(8);
calculator.devide(0);
assertEquals(4, calculator.getResult());
}
@Test
public void testSquare() {
calculator.square(3);
assertEquals(9, calculator.getResult());
}
@Test
public void testSquareRoot() {
calculator.squareRoot(9);
assertEquals(3, calculator.getResult());
}
@Test
public void testClear() {
calculator.clear();
}
@Test
public void testGetResult() {
calculator.getResult();
} } 4、設(shè)計(jì)測(cè)試用例如下 表一 測(cè)試用例表 輸入數(shù)據(jù) 執(zhí)行條件 期望輸出 實(shí)驗(yàn)結(jié)果 X1=2,X2=3 testAdd Result=5 Result=5 X1=10,X2=2 testSubstract Result=8 Result=8 X1=10,X2=6 testMultiply Result=60 Result=60 X1=8,X2=2 testDevide Result=4 Result=4 X1=8,X2=0 testDevide 程序報(bào)錯(cuò):分母不能為零 程序報(bào)錯(cuò):分母不能為零 X1=3 testSquare Result=9 Result=9 X1=9 testSquareRoot Result=9 Result=3
圖 3
測(cè)試用例報(bào)錯(cuò)
圖 4 測(cè)試用例正確運(yùn)行 四 、 實(shí)驗(yàn) 小結(jié) :
1、這次試驗(yàn)的程序中有幾個(gè)需要改正的地方,第一個(gè)是減法函數(shù),應(yīng)該將減法函數(shù)為“result=result-n;”,這樣才可以得到正確結(jié)果;第二個(gè)錯(cuò)誤是除法函數(shù),因?yàn)榉帜覆荒転榱悖阋彩莍nt類型的數(shù)據(jù),因此,我們應(yīng)該在程序中增加n是否為零的判斷,如果是,則在控制臺(tái)下進(jìn)行錯(cuò)誤提示,否則程序正常運(yùn)行;第三個(gè)錯(cuò)誤是開平方函數(shù),應(yīng)將開平方函數(shù)中的死循環(huán)改為:
“for(int j=0; j<=n/2+1;j++){if(j*j==n){result=j;}}”,這樣才得到正確的n的算術(shù)平方根。
2、通過(guò)這次實(shí)驗(yàn),我們熟練的學(xué)會(huì)了使用Junit進(jìn)行程序測(cè)試,我發(fā)現(xiàn)Junit這個(gè)插件十分的方便,因?yàn)槲覀円郧皽y(cè)試程序是否正確,需要費(fèi)盡心思編寫主函數(shù),一點(diǎn)一點(diǎn)的運(yùn)行調(diào)試,而是用Junit可以省時(shí)省力,而且還很全面。因此,我們要努力學(xué)會(huì)更多的軟件測(cè)試的插件,這樣才能夠讓我們編寫代碼事半功倍。
3、實(shí)驗(yàn)一還有一個(gè)非常大的感觸是:寫一篇完整規(guī)范的實(shí)驗(yàn)報(bào)告真的很重要,我們不能夠像原來(lái)一樣隨便復(fù)制粘貼,胡亂搞搞就湊成一篇實(shí)驗(yàn)報(bào)告,而應(yīng)該真正的弄明白實(shí)驗(yàn)報(bào)告中的每一項(xiàng),每一個(gè)測(cè)試用例的由來(lái)和期望結(jié)果等,認(rèn)真負(fù)責(zé)的對(duì)待每一件事情。
得分(百分制)
推薦訪問(wèn): 實(shí)驗(yàn) 報(bào)告 Junit同志們:今天這個(gè)大會(huì),是市委全面落實(shí)黨要管黨、從嚴(yán)治黨要求的一項(xiàng)重大舉措,也是對(duì)縣市區(qū)委書記履行基層黨建工作第一責(zé)任人情況的一次集中檢閱,同時(shí)是對(duì)全市基層黨建工作的一次再部署、再落實(shí)的會(huì)議。前面,**
***年,我認(rèn)真履行領(lǐng)班子、帶隊(duì)伍、抓黨員、保穩(wěn)定的基層黨建工作思路,以學(xué)習(xí)貫徹習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想和黨的十九大歷次全會(huì)精神為主線,以市局基層黨建工作考核細(xì)則為落腳點(diǎn),落實(shí)全面從嚴(yán)治黨主體
根據(jù)會(huì)議安排,現(xiàn)將2022年履行抓基層黨建工作職責(zé)情況報(bào)告如下:一、履職工作特色和亮點(diǎn)1 突出政治建設(shè),著力在思想認(rèn)識(shí)上提高。牢固樹立抓黨建就是抓政績(jī)的理念,以“黨建工作抓引領(lǐng)、社區(qū)治理求突破,為民服
2022年以來(lái),在**黨委的正確領(lǐng)導(dǎo)下,堅(jiān)持以習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義思想為指導(dǎo),深入學(xué)習(xí)宣傳貫徹黨的二十大精神,以黨建工作為統(tǒng)領(lǐng),扎實(shí)開展夯實(shí)“三個(gè)基本”活動(dòng),以“四化四力”行動(dòng)為抓手,聚力創(chuàng)建
各位領(lǐng)導(dǎo),同志們:根據(jù)會(huì)議安排,現(xiàn)就2022年度抓基層黨建工作情況匯報(bào)如下:一、主要做法及成效(一)強(qiáng)化政治引領(lǐng)。一是不斷強(qiáng)化理論武裝。堅(jiān)持通過(guò)黨組會(huì)、中心組學(xué)習(xí)會(huì)和“三會(huì)一課”,第一時(shí)間、第一議題學(xué)
2022年度抓基層黨建工作述職報(bào)告按照黨委工作部署,現(xiàn)將本人2022年度抓基層黨建工作情況報(bào)告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發(fā)展首要位置,積極開展
2022年,是我在數(shù)計(jì)系黨總支書記這個(gè)新崗位上度過(guò)的第一個(gè)完整的工作年度。回首一年來(lái)在校黨委的正確領(lǐng)導(dǎo)下,與數(shù)計(jì)系領(lǐng)導(dǎo)班子和全體師生共同走過(guò)的日子,艱辛歷歷在目,收獲溫潤(rùn)心田。作為黨總支書記,我始終牢
按照考核要求,現(xiàn)將本人一年來(lái),作為統(tǒng)戰(zhàn)部長(zhǎng)履行職責(zé)、廉潔自律等方面情況報(bào)告如下:一、著眼增強(qiáng)政治素質(zhì),不斷深化理論學(xué)習(xí)堅(jiān)持把旗幟鮮明講政治作為履職從政的第一位要求,帶領(lǐng)統(tǒng)戰(zhàn)系統(tǒng)干部堅(jiān)決擁護(hù)“兩個(gè)確立”
**年,緊緊圍繞黨工委、管委會(huì)的決策部署,全體人員團(tuán)結(jié)協(xié)作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進(jìn)取,認(rèn)真履職盡責(zé),圓滿完成各項(xiàng)工作任務(wù)。一、個(gè)人思想政治狀況檸檬文苑www bgzjy
按照縣委關(guān)于開展抓基層黨建述職評(píng)議會(huì)議的有關(guān)要求,經(jīng)請(qǐng)示縣委組織部同意,今天,我們?cè)诖苏匍_2022年度基層黨組織書記抓基層黨建述職評(píng)議會(huì)議。1 首先,請(qǐng)**黨委書記,**同志述職。**黨委能夠主動(dòng)研究