- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试培训(二);一、ATM程序静态测试
二、ATM程序动态测试;类之间的调用关系;;方式:
对照检查单,对代码进行检查
示例检查项
类的数据成员的初始化工作放在构造函数中,把清除工作放在析构函数中。;类的数据成员的初始化工作
来源说明:《高质量C++编程指南》“第9章 类的构造函数析构函数与赋值函数”
根据经验,不少难以察觉的程序错误是由于变量没有被正确初始化或清除造成的,而初始化和清除工作很容易被人遗忘。
Stroustrup 在设计C++语言时,充分考虑了这个问题并很好地予以解决
把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。
当对象被创建时,构造函数被自动执行;当对象消亡时,析构函数被自动执行。
简称初始化表
构造函数有个特殊的初始化方式叫“初始化表达式表”;位于函数参数表后,函数体 {} 之前。
这说明该表里的初始化工作发???在函数体内的任何代码被执行之前。
构造函数初始化表的使用规则:
如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。
类的const 常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化
类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。
非内部数据类型的成员对象应当采用第一种方式初始化,以获取更高的效率。
对于内部数据类型的数据成员而言,两种初始化方式的效率几乎没有区别,但后者的程序版式似乎更清晰些。
;编译,运行ATM,是一个空框架
ATM.cpp是Windows程序的框架代码
在其中添加我们的测试代码testATM()
void testAtm()
{
Account myAccount;
}
运行代码, 程序正常;上述代码,使用了默认构造函数
检查发现,Account类三个成员变量,使用默认构造函数,只初始化了2个
剩下的myPassword,使用了默认的类string构造
问题:对于非内部数据类型,最好使用初始化列表方式初始化myPassword
;包含一个vector,以及一个vector计数
问题:析构时vector没有删除;三个成员变量
Account* myCurrentAccount;
Bank* myBank;
BaseDisplay* myDisplay;
仅仅初始化了2个
myBank = bank;
myDisplay = display;
编写测试代码
Bank myBank;
Account *a1 = myBank.addAccount();
a1-setPassword(123);
a1-deposit(99);
BaseDisplay b;
ATM myAtm(myBank, b);
myAtm.viewAccount(1,123);
myAtm.fillUserRequest(ATM::REQUEST_BALANCE,0);
;运行,没有问题
注释掉,倒数第二行,再运行,出现问题,原因
myCurrentAccount值未知
野指针问题;(1)选择规则
如ISO26262,右键选择copy,配置将从“内建”复制到“用户自定义”
用户自定义可以修改,内建不能修改;执行ISO 26262;;打开“质量任务”视图;违规13条,错误53处;双击错误,可以定位错误
刚才的未初始化问题,这里也有
选择“显示”,可以看到不同的分类;规则参见“C++语言编码规范.精简版.doc”,C++编码规范(C版2).docx
可以用RuleWizard编辑旧规则,生成新规则
3.1a (强制) 所有的include语句结束后空一行;使用python语言;将结果填入检查表
自动检查结果表
人工检查结果表
给缺陷分级,填写缺陷报告单;步骤
分析源码,填写参数表
分析源码,画流程图
自动生成测试用例
手动修改测试用例
文档评论(0)