51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【好消息】企业内训服务上线啦!项目为王,自动化测试提升加速器 !横扫BAT,Python全栈测试开发技能大全
【114期】:谈数据库测试&测试开发相互间的关系!参与调查问卷 缔造行业趋势 月薪15K+的测试开发必备技能? 【活动】为视频UP主打CALL,互动领福利!
查看: 2636|回复: 0

Software testing的最基本问题

[复制链接]

该用户从未签到

发表于 2004-8-28 16:12:24 | 显示全部楼层 |阅读模式
版上正好有同仁问及测试理论 俺也来说说自己的理解


有一个定义在域D上的函数F 有一个实现F的程序P
F可以看作程序P的specification D当然就是P的input domain

现在想确定P有没有正确地实现F 也就是要证明
        For any x belongs to D, F(x) = P(x)
如果用数理逻辑的方法也就是形式化方法证明了上面的式子 这个就是program verification 不是testing

testing的问题是 能不能找出一个D的子集T 使得
        {For any t belongs to T, F(t) = P(t)} implies {For any x belongs to D, F(x) = P(x)}
也就是说 只要程序P能够正确执行T里的每个元素 我们就能断定P正确地实现了函数F 因此T可以看作一个test cases的集合 我们称T为reliable test set

但是 在通常情况下 T=D 找不到一个能作为D的真子集的T 也就是说 我们无法找到一个比D小的reliable test set 如果要确保一个程序的正确 就必须把每个可能的输入值都作为test case来运行一遍 这个叫exhaustive testing 通常情况下是不可能完成的

虽然testing无法确保程序的正确 但是却是保证软件质量的经济可行的方法 因此各种testing method的主要思路就是尽可能多地找出软件中的各种错误

本版积分规则

关闭

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

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

GMT+8, 2020-9-30 22:53 , Processed in 0.066668 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2020 Comsenz Inc.

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