软件开发需要的步骤:项目调研、需求分析、软件设计、程序编码、软件测试、运行维护。
软件测试的定义:利用测试工具按照测试方案和流程对产品进行功能和性能测试,使用人工或自动手段来运行或测试某个系统的过程。目的在于检验是否满足规定的需求,确认预期结果与实际结果之间的差别。
软件测试方式:黑盒测试(注重于测试软件的功能性需求。测试者完全不考虑程序的内部结构和特性,只需要知道程序输入和输出之间的关系或程序功能)、白盒测试(测试人员需要对被测试程序的内部结构非常清楚,从程序的内部结构入手,来判定实际情况是否和预期的状态一致。)、回归测试(当程序代码被修改后,重新进行测试,以确认修改没有引发新的错误或导致其他代码错误。)、单元测试(主要测试某个功能或代码块)。
JUnit是一个开放源代码的java测试框架,用于编写和运行科重复的测试。
JUnit仅由三个类构成:TestCase类、TestSuite类、TestRunner类。
TestCase类:负责测试时对客户类的初始化以及测试方法的调用。
TestSuite类:负责包装和运行所有的测试类。
TestRunner类:运行测试代码的运行器。
TestCase继承自Assert类,Assert类提供了JUnit使用的一整套断言,是一系列断言方法的集合。断言是一个包含布尔表达式的语句,用于判断期望值和实际值是否相等。
分别为单元测试代码和被测试代码创建单独的目录,并保证测试代码和被测试代码使用相同的包名。即两者使用一样的包,不同的目录。
JUnit中所有的测试方法都是由一个叫”Runner测试运行器“的东西负责执行的,JUnit为单元测试提供了默认的一个Runner,所以才能执行测试。
JUnit3搭建测试框架的特点:1、测试类继承于TestCase类。2、所有的测试方法以test开头。
JUnit3依赖于反射。JUnit4依赖于注解。
JUnit4常用的注解:@Before:用于标注每一个测试方法;@After:用于标注每一个测试方法执行后都要执行的方法;@Test:用于标注一个测试方法。@Ignore:用于标注暂不参与测试的方法;@BeforeClass:标注的方法在整个类的所有测试方法运行之前运行一次。;@AfterClass:标注的方法在整个类的所有测试方法运行结束之后运行一次。JUnit4的特点:必须使用注解@Test,测试方法必须使用publicvoid修饰,并且不能带有任何参数。
JUnit4中可以抛出异常,并使用注解来声明该异常是预期的。JUnit4提供了一个很有用的参数:expected,他可以声明测试方法期望抛出指定的异常。例如:
@Test(expected = ArithmeticException.class)
public void testDiv() throws ArithmeticException{
calc.add(3);
calc.div(0);
}
@Test还有另一个非常有用的参数:timeout进行时间测试,用来指定被测试方法被允许运行的最长时间是多少,例如:
@Test(timeout=1000)
public void testSquareRoot(int n){
//省略代码
}
JUnot提供了一种批量进行测试类的方法,叫做测试套件。
测试套件遵循以下规则:
1、创建一个空类作为测试套件入口,保证这个空类使用public修饰,而且存在公开的不带有任何参数的构造方法。
2、使用注解org.junit.runner.RunWith和org.junit.runners.Suite.SuitClasses修饰这个空类。
3、将org.junit.runners.runners.Suite作为参数传入注解RunWith。
4、将需要放入此测试套件的测试类组成数组作为注解SuiteClasses的参数。