码迷,mamicode.com
首页 > 其他好文 > 详细

软件测试技术(四)——闰年判断器+ int.Parse错误如何解决

时间:2015-04-07 00:41:04      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

目标程序

本次所测试的目标程序是一个闰年判断器,我们知道,一般情况下年份被4整除就可以了,但是如果遇到百年的时候还需要被400整除,于是有了如下的逻辑判断:

 

测试方法介绍—Syntax-Based Testing 

BFF范式——巴科斯范式,是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。它是由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)首先引入的用来描述计算机语言语法的符号集。(来源于维基百科)

它有些类似于我们学过的正则文法,不过正则文法对应于乔姆斯基层级的3型文法,也叫正规文法,对应于有限状态自动机。而BFF范式是2型文法,也叫上下文无关文法。我们知道,0-3型文法每下一层多一个限制条件,更加简单。我也搜索一下资料,BFF范式更多的应用于研究,正则文法则是各种语言都做了库函数,可以方便地调用进行文法的编写,字符串的匹配。

 

有了文法之后,我们就可以进行输入字符串的判断了。正如书中所说的“One of the interesting things that grammars do is describe what an input is not. ”作者提出了3种覆盖标准:MC、MOC、MPC

  (1)Mutation Coverage (MC): For each mutant m ∈ M, T R contains exactly one requirement, to kill m. 

  (2)Mutation Operator Coverage (MOC): For each mutation operator, TR contains exactly one requirement, to create a mutated string m that is derived using the mutation operator. 

  (3)Mutation Production Coverage (MPC): For each mutation operator, and each production that the operator can be applied to, T R contains the requirement to create a mutated string from that production. 

  P.S 这里mutant operator的意思是一种可以应用于本语法能够产生的的字符串来进行一定变化的规则。mutant是应用mutant operator产生的字符串。kill的意思原文是given a mutant m M for a derivation D and a test t, t is said to kill m if and only if the output of t on D is different from the output of t on m. 我的理解是对于test t和mutant m,两者产生的输出不同那么这一测试用例t就kill了原来的mutant m。

在本程序中,如果不预先进行处理,直接假定输入合法,那么在使用int.Parse的时候就很容易发生错误,比如,输入ab400,就会出现: 

技术分享

于是,我使用了正则表达式来进行输入的判断,代码如下:

 

功能是在输入不合法时进行一定的纠正。来确保int.Parse()不会出错。比如在输入abc的时候,会出现: 

 技术分享

 

那么形如3、2015、300都是合法的输入,形如0、abc是非法的输入,稍微应用发散式的思维以及MPC规则想出一些invalid mutation形成的测试用例如下。

测试用例

编号

输入

预期输出

实际输出

0

4

4年是闰年

4年是闰年

1

-1

公元前1年是闰年

公元前1年是闰年

2

5

5年不是闰年

5年不是闰年

3

400

400年不是闰年

400年不是闰年

4

ab400

请输入合法的年份,如-1或2015

请输入合法的年份,如-1或2015

5

#%$

请输入合法的年份,如-1或2015

请输入合法的年份,如-1或2015

6

0

请输入合法的年份,如-1或2015

请输入合法的年份,如-1或2015

软件测试技术(四)——闰年判断器+ int.Parse错误如何解决

标签:

原文地址:http://www.cnblogs.com/ocDx01jin/p/4397178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!