现代软件工程 练习与讨论 第十三章 软件测试

13.5.2有错不改

 

此题很明显是一个边界的取值问题,这确实是一个bug,是微软的算法设计失误。闰年的计算:

a.被 400 整除的年份

b.被 100 整除但是不被400 整除的年份

c.被 100 整除同时被400 整除的年份

d.被 整除但是不被100 整除的年份

e.被 整除同时被100 整除的年份

f.偶数不被整除的年份

g.奇数年份

h.其它非法输入的年份

此外还有重要的一点,就是边界。设计允许的最小的年份和设计允许的最大的年份.所以根据边界分析,测试者一定要发现闰年的第一天;闰年的最后一天;平年的第一天;平年的最后一天。

 

 

13.5.9  练习——学习和使用多个平台上的测试工具

 

我做项目一般都是用JAVA作为开发语言,ECLIPSE作为IDE工具,其中,测试工具我用的最多的就是JUnit了。尤其是我做eb开发使用Hibernate作为框架的时候,几乎每一个模块都会使用Junit

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何完成功能和完成什么样的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

步骤(引用,出处为http://hefeng1987-net-163-com.iteye.com/blog/1571040,另外还有一个比较好的配图说明,网址为

http://wenku.baidu.com/link?url=sxTuc9Xv3-p4-Nk5-yk02tjeLVPdQEI9otnmmKjz1hStDfxJpw5D8a8K3OzLZVh054_cdak4pTOd4MNU8Obt4gapiK17zBvYv-Dk8LCb7Ii):

 

1.为项目导入Junitjar包(Build path -> Add Library ->Junit)。 

2.新建一个名为TestSource Folder,用于存放测试类源代码。 

3.目标类与测试类应该位于同一个报下面,这样测试类中就不必导入源代码所在的包,因为他们位于用一个包下面。 

4.Junit4并不需要测试类继承TestCase父类。 

5.在一个测试类中,所有被@Test注解所修饰的public void方法都是testCase(测试用例),可以被Junit所执行。 

6.规范:虽然Junit4并不要求测试方法名以test开头,但最好还是按照Junit3的要求那样,以test作为测试方法名的开头。 

7.Junit4中,通过@Before注解实现与Junit3中的setUp方法同样的功能。 

8.Junit4中,可以使用@BeforeClass@AfterClass注解修饰一个public static void noarg的方法,这样被@beforeClass注解所修饰的方法会在所有测试方法执行前执行。 

9.注解@lgnore可用于修饰测试类与测试方法,当修饰测试类时,表示忽略掉类中的所有测试方法;当修饰测试方法时,表示忽略掉该测试方法。 

10.参数化测试(Parameters):当一个测试类使用参数化运行器运行时需要在类的声明处加上 @RunWith(Parameterized.class)注解,表示该类将不使用JUnit内建的运行器运行, 而使用参数化运行器运行;在参数化运行类中提供参数的方法上要使用 @Parameters注解来修饰, 同时在测试类的构造方法中为各个参数赋值(构造方法是由JUnit 调用的),最后编写测试类,它会根据参数的组数来运行测试多次。 

11.JUnit4中,如果想要同时运行多个测试,需要使用两个注解@RunWith(Suite.class)以及 @Suite.SuiteClasses()

 

 

13.5.10  历史上的20 bug(网页暂时无法打开,能打开后再更新答案)

posted @ 2014-10-14 00:26  天大SCS小组  阅读(130)  评论(0编辑  收藏  举报