軟件開發:
項目調研--需求分析--軟件設計--程序編碼--軟件測試--運行維護
軟件測試:利用測試工具按照測試方案和流程對產品進行功能和性能測試,使用人工或者自動手段來運行或測試某個系統的過程。目的在于檢驗是否滿足規定的需求,確認預期結果與實際結果之間的差別。
墨盒測試-白盒測試-回歸測試-單元測試
二、JUnit-單元測試工具


package com.pb.junit;/** *1.創建被測試類 *2.Junit 3.0或者4.0 這里有3.0 *3.創建測試類 *簡單實現加,減,乖,除的計算器 */public class Calculator { //運算結果 PRivate static int result; //加法 public void add(int n){ result+=n; } //減法 public void minus(int n){ result-=n; } //乖法 public void mult(int n){ //result*=n; } //除法 public void div(int n){ if(n==0){ System.out.println("除數不能為0!"); }else{ result/=n; } } //開方 :死循環 public void sqr(){ for(;;){ } } //平方 public void square(int n){ result=n*n; } //清零運算結果 public void clear(){ result=0; } public int getResult() { return result; } public void setResult(int result) { Calculator.result = result; } }使用JUnit3測試package com.pb.junit;import junit.framework.Assert;import junit.framework.TestCase;public class CalculatorTest extends TestCase { //創建測試類對象 Calculator calculator=new Calculator(); //測試啟動前運行的方法 protected void setUp() throws Exception { super.setUp(); calculator.clear(); System.out.println("測試前"); } //測試結束后運行的方法 protected void tearDown() throws Exception { super.tearDown(); System.out.println("測試后"); } //JUnit3中測試方法必須以test開頭 public void testAdd() { calculator.add(2); calculator.add(3); //2+3結果為5 int result=calculator.getResult(); Assert.assertEquals(5, result); } public void testMinus() { calculator.minus(1); calculator.minus(5);//期望結果為-6 int result=calculator.getResult(); Assert.assertEquals(-6, result); } public void testMult() { calculator.mult(3); calculator.mult(4); int result=calculator.getResult(); Assert.assertEquals(12, result); } public void testDiv() { calculator.div(8); calculator.div(0); int result=calculator.getResult(); Assert.assertEquals(4 ,result); } }使用JUnit4
package com.pb.junit;import static org.junit.Assert.*;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test;public class CalculatorTest { Calculator calculator=new Calculator(); @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("============所有測試之前執行一次"); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("所有測試之后執行一次=========="); } @Before public void setUp() throws Exception { System.out.println("==========每個測試之前執行一次"); calculator.clear(); } @After public void tearDown() throws Exception { System.out.println("每個測試之后執行一次============="); } //@Test 是必須的,測試方法可以不用以test開頭,必須為public ,沒有返回必須為void @Test public void testAdd() { calculator.add(3); calculator.add(2); int result = calculator.getResult(); assertEquals(5, result); } //忽略這個測試方法 @Ignore @Test public void testMinus() { fail("Not yet implemented"); } @Test public void testMult() { fail("Not yet implemented"); } //拋出預定義的異常 @Test(expected=ArithmeticException.class) public void testDiv() throws ArithmeticException { calculator.add(8); calculator.div(0); int result=calculator.getResult(); assertEquals(0, result); } @Test(timeout=5000) //超過5秒,算測試失敗 public void testSqr() { calculator.sqr(); fail("Not yet implemented"); } @Test public void testSquare() { fail("Not yet implemented"); }}測試套件
package com.pb.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;import org.junit.runners.Suite.SuiteClasses;@RunWith(Suite.class)@SuiteClasses({ //測試用例類的名稱 Calculator1Test.class, Calculator2Test.class, CalculatorTest.class })public class TotalTest { }新聞熱點
疑難解答