转自:http://www.cntesting.com/bbs/read.php?tid=623&fpage=1
[提问] 这样的需求测试用例该怎么设计?
心力背单词 [traffic /'træfik/ n. 交通(量) ]
到某论坛上逛了一圈,看到了这个提问正好是我的本行,所以特别拿出来秀以下,如果这个朋友到了我们这里可以直接问我。
原贴:
本地写卡功能:
界面:
号码、产品、副号、空SIM卡
号码和空卡为可输入框
1、号码不能是一卡双号的副号,可以是:全球通普通号码,全球通一卡双号主号(若有副号,直接把副号赋给副号输入框处)、神州行、动感地带
2、号码状态必须是正使用状态
3、SIM卡状态是可用状态
4、动感地带号码只能用“28动感地带空白SIM卡”,神州行只能用“29 神州行空白SIM卡”,全球通用“26全球通空白SIM卡”和“27 一卡双号空白SIM卡”;如果输入该号码有副号则只允许写“27 一卡双号空白SIM卡”;
符合1、2、3、4 写卡成功
若号码状态不对, 提示请用正使用的号码
若卡状态不对,提示请用可用状态的卡
若不符合1,提示副号不能写卡
若不符合4,提示卡类型不正确
测试是非常古老的传统行业,据说地球起源来自于一场非常糟糕的实验。根据我最新考证,上帝创造的亚当夏娃就没有经过很好的测试,不然怎么会因为一个APPLE_BUG就导致了整个世界的崩溃?!
[楼 主] | Posted:2005-11-03 22:53|
smile_xunn
级别: 测试新手
精华: 0
发帖: 2
测试威望: 2 点
测试币: 6 CSB
测试贡献值: 0 点
在线时间:5(小时)
注册时间:2005-11-08
最后登陆:2005-12-12
--------------------------------------------------------------------------------
心力背单词 [sail /seil/ n. 帆,航行;vi. 航行,启航,翱游,飘;vt. 航行,飘过 ]
准备一些定义,如下:
全球通普通号码 commonCode
全球通一卡双号主号 doubleCode
神州行 allGo
动感地带 dyArea
号码状态 codeState
SIM卡状态 simState
28动感地带空白SIM卡 dyArea28
29 神州行空白SIM卡 allGo29
26 全球通空白SIM卡 doubleCode26
27 一卡双号空白SIM卡(无副号) doubleCode27
27 一卡双号空白SIM卡(有副号) doubleCode27Fu
测试java伪代码如下:
/**
* 定义一个Product Bean,由它来定义卡的类型,如下:
* 28动感地带空白SIM卡 dyArea28
* 29 神州行空白SIM卡 allGo29
* 26 全球通空白SIM卡 doubleCode26
* 27 一卡双号空白SIM卡(无副号) doubleCode27
* 27 一卡双号空白SIM卡(有副号) doubleCode27Fu
*/
public class Product{
private String _productId = "commonCode";//产品编码,默认为全球通编码
private String _productName = "全球通普通号码";//产品名称,默认为全球通描述
public Product(String productId,String productName){
this._productId = productId;
this._productName = productName;
}
public Product(){
}
}
/**
* 定义一个Card JavaBean.
*/
public class Card{
private String _startCode = null;//号码
private Product _product = null;//产品
private String _endCode = null;//副号
private boolean _isState = false;//卡状态
public Card(String startCode ,Product product,String endCode,boolean isState ){
this._startCode = startCode;
this._product = product;
this._endCode = endCode;
this._isState = isState;
}
public void setStartCode(String startCode){
this._startCode = startCode;
}
public String getStartCode(){
return _startCode ;
}
public void setEndCode(String endCode){
this._endCode = endCode;
}
public String getEndCode(){
return _endCode;
}
public void setProduct(Product product){
this. _product = product;
}
public Product getProduct(){
return _product;
}
public void setIsState(boolean isState){
this._isState = isState;
}
public boolean getIsState(){
return _isState;
}
/* *
* 对_startCode,_endCode进行代码检查,
*/
public boolean isRightCode(){
return false;//没有作代码实现,返回值为false;
}
/**
* 得到代码范围,通过判断主号和辅号,判断该号码属于哪种卡,如“28动感地带
* 空白SIM卡”
*/
pubic String getCodeType(){
//未作实现代码返回值为空
return null;
}
}
/**
* 使用继承junit TestCase 的 CardTest类进行测试
*/
public Class CardTest extends TestCase{
public void testWriteCard(Card card){
//如果号码状态不对,提示请用正使用的号码
assertTrue(card.getIsState(),"请用正使用的号码");
//若卡状态不对,提示请用可用状态的卡
assertTrue(card.isRightCode(),"请用可用状态的卡");
// 如果输入该号码有副号则只允许写“27 一卡双号空白SIM卡”;
if(card.getEndCode()!=null &&!card.getEndCode().trim().equals("")){
card.getCodeType().equals("27 一卡双号空白SIM卡");
}
//1、号码不能是一卡双号的副号,可以是:全球通普通号码,全球通一卡双号主号 //(若有副号,直接把副号赋给副号输入框处)、神州行、动感地带
String productName = card.getProduct().getProductName().;
if(productName .equals("全球通普通号码")){
//全球通用“26全球通空白SIM卡”和“27 一卡双号空白SIM卡”
if(!(card.getCodeType().equals("26全球通空白SIM卡")||
card.getCodeType().equals("27 一卡双号空白SIM卡"))){
assetFalse(true,"卡类型不正确");
}
} else if(productName.equals("全球通一卡双号主号")){
//ok;
}else if(prodcutName.equals("神州行")){
//神州行只能用“29 神州行空SIM卡”
if(!card.getCodeType().equals("29 神州行空白SIM卡")){
assetFalse(true,"卡类型不正确");
}
}else if(prodcutName.equals("动感地带")){
//动感地带号码只能用“28动感地带空白SIM卡”
if(!card.getCodeType().equals("28动感地带空白SIM卡")){
assetFalse(true,"卡类型不正确");
}
}else{
assertTrue(false,"副号不能写卡");
}
asserTrue(true,"写卡成功");
}