51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1911|回复: 0
打印 上一主题 下一主题

[讨论] 测试语句的标准化和模型化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-2-29 13:58:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  我们在测试过程中可能会发现,很多程序操作拥有类似的功能或结构,其对应得SQL测试语句也是类似的。因此,如果能够将测试各种程序功能所对应的SQL测试语句总结出来作为范例,就可以将测试人员的劳动成果固化下来,实现语句复用,提高测试效率。而且这种范例有助于选择最优化的测试语句,淘汰或改进有缺陷的测试语句,提高测试语句的准确性。那么,如何针对我们的测试对象总结测试语句呢?我想大致的步骤有以下几点:

1、总结程序中的主要功能
  对于某一项目而言,其主体的设计思路、功能算法,往往都有很高的相似性。我们可以对其主要功能进行分析,找出其中近似的功能,并加以归类。
2、对归类的功能进行算法分析,设计出相应得SQL测试语句模型。
  在这里应当注意的是,测试语句和程序语句之间的不同:程序语句的目的是用来实现程序功能;而测试语句的目的则是验证程序语句的正确性。
3、建立良好的模型更新机制,随时改进模型。
  建立SOL语句模型的目的是为了,在工作中更方便、快捷、正确的设计测试用例。但由于模型设计不可能是完美的,这就需要不断的对其进行更新、完善,以保证SOL语句模型能够紧扣实际工作。

  比如说,程序针对数据库操作的主要功能就是:读取、插入、修改、删除等几种。我们就可以根据以上几种操作,做出相应的测试语句模型。
  以删除功能为例,通过两个语句就可以判断应该删除的语句是否已经被删除:
测试语句A:
SELECT COUNT(  ) FROM  [目标数据库]
WHERE  [删除条件]
测试语句 B:
SELECT COUNT(  ) FROM  [目标数据库]
WHERE  [删除条件]

  我们在程序的删除功能执行之前,先执行测试语句A,得到了符合删除条件的记录条数。然后程序执行删除操作,删除对应记录。接着执行测试语句B,得到删除操作执行之后数据库中符合删除条件的记录数。如果删除功能正确,则B的结果应该等于0。而用A结果减去B结果,则可以得出删除记录的条数。
  但是仅仅凭以上两个语句还不能完全测试[删除]功能的正确性,因为以上两个语句仅仅证明程序删除了对应记录, 即:“程序做了它该做的工作”;但是并没有证明程序没有删除不该删除的记录,即:“程序没有做它不该做的事情”。要想证明这一点,我们就需要再添两条语句:
测试语句C:
SELECT COUNT(  ) FROM  [目标数据库]
测试语句 D:
SELECT COUNT(  ) FROM  [目标数据库]

  在程序的删除功能执行之前,执行测试语句C,就可以得到删除操作之前目标数据库的所有记录条数。在程序执行删除操作之后,执行测试语句D, 就可以得到删除操作之后目标数据库的所有记录条数。

  执行以上4条语句的结果,应该满足下面的条件表达式:
(A-B==C–D) &&(A>=B)&&(C>=D)&&(B==0)    (A、B、C、D代表语句A、语句B、语句C、语句D的执行结果)

  通过以上的例子,我们总结出了测试Delete操作的SQL测试语句模型。它不但实现了语句的复用和标准化,更重要的是这个模型为我们提供了一个测试 判定标准:可以最终被转化为一个确定的逻辑值(T/F)得条件表达式。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 02:28 , Processed in 0.067613 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表