- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于程序的测试 基于程序的类的测试将测试类的各个服务,并把类当做一个单元进行测试。 首先,测试计划考虑测试属于该类的各个单个服务中的代码 然后考虑测试各个服务之间的相互作用:类内通信 / 类间通信。 测试可以覆盖每个服务的整个输入域。但这是不够的,还必须测试这些服务的相互作用,才能认为测试是充分的。 完全的单元应当保证类的执行必须覆盖它的一个有代表性的状态集合。 构造函数和消息序列(线索)的参数值的选择应当满足这个规则。 组装测试 类组装 测试一个新类时,需要先测试在定义中所涉及的类,再考虑这些类的组装。 关系“is a”“is part of”和“refers to”建立了测试几个类时的次序之间的关联。一旦基本类测试完成,使用这些类的那些类可以接着测试,然后按层次继续测试下去。 总体组装 把所有组成完整软件的各个部分集合在一起。 在C++的主过程中,仅建立几个高层的和全局的类的实例,这些实例之间必须经常互相通信。 这种测试所选择的测试用例应当瞄准待开发软件的目标,并且应当提供数据给测试者,以确定软件开发是否与它的目标相吻合。 谢 谢! 为了定义Dictionary类,应当首先查找既存的抽象,看Dictionary类会是哪个既存抽象的特殊情况。 Dictionary应是一个有序表,但具有它自己特有的操作: 如使用关键码进行搜索等。既存的Ordered List类可以提供Dictionary类的某些行为,但不是全部。还要确认,在Ordered List中是否有的行为在Dictionary 中 不需要。如果有,可能需要重新组织层次或者开发某些追加的抽象。 is kind of (是一种…)继承 这种继承允许有选择地包含既存类的属性,从而建立新的定义。 一个鸟类可能有一个关于飞行的属性。一个鸵鸟派生类在模型化时可能就不选择这个属性,因为鸵鸟不会飞。鸵鸟是一种( is kind of )鸟,但具有的属性与鸟不完全相同。 is kind of 继承是不严格继承。 类的实现 一种方案是先开发一个比较小的比较简单的类,做为开发比较大的比较复杂的类的基础。即从简单到复杂的开发方案。 在这种方案中,类的开发是分层的。一个类建立在一些既存的类的基础上,而这些既存的类又是建立在其它既存的类的基础上。通过诸如“is a”或“is part of”之类的关系,利用既存代码就能着手建立新的类。 (1) 软件库(Software Base) 建立软件库的目的是为了引用既存的部件。 存储在软件库中的类以多种途径发生关联,同时,库可以追踪这些关联。 软件库工具利用这些关联可以有效地进行开发。 (2) 复用(Reuse) 伴随着类的设计,应当从复用开始着手类的实现。 类的设计可以使用各种抽象的类。 在类设计期间,我们必须开发这些类中的“具体的”对象。 一旦一个数据对象被确认是应用所需求的,则必须把它组织成类,以便有效地提交所需要的模型。 产生所需功能的次序 寻找“原封不动(As_is)”使用的既存类,提供所需要的特性; 寻找可以用做开发新类的基础的既存的类; 不用任何复用,开发一个新类。 -“原封不动”复用 所需要的类已经存在,我们建立它的一个实例,用以提供所需要的特性。 这个实例可直接被应用利用,或者它可以用来做另一个类的实现部分。 通过复用一个既存类,我们可得到不加修改就能工作的已测试的代码。 -进化性复用 一个能够完全符合要求特性的类可能并不存在。但具有类似功能的类存在,则可以通过继承,由既存的类渐增地设计新类。 如果新类将要成为一个既存类的派生类,它应当继承这个既存类的所有特性。然后新类可以对需要追加的数据及必需的功能做局部定义。 还可以将几个既存类的特性混合起来开发出新的类。每个既存类是某些概念的模型。混合起来则产生了一个为特定目标软件所用的具有多重概念的类。 有时,一个既存的类可能会提供某些在我们的新类中需要的特性以及某些新类中不需要的特性。因此,我们先建立一个新的更抽象的类,使之成为我们要设计的类的基类,然后,修改既存类以继承新的基类。 既存类A的某些特性成为新类B的一个部分,同时被类A和类C继承。 类A的某些特性保留在类A中,它不被类C继承。 -“废弃性”开发 在新类的实现时,通过说明一些既存类的实例,可以加快一个类的实现。像表格、硬件接口,或其它某些能力都可以用来作为一个新类的局部。 (3) 断言(Asserttions) 实现类的一个主动方法是把来自类的设计信息直接纳入代码。特别要求把参数约束、循环执行等编入到代码中。这可以通过某些表示断言的语言机制来实现。 一个断言就是一个语句,它表达了对一个过程、一个值,甚至一段代码的约束。 在栈的描述中,可以使用断言来控制进栈和退栈功能的操作: procedure push (
文档评论(0)