51Testing软件测试论坛

标题: Software testing的最基本问题 [打印本页]

作者: Kapok    时间: 2004-8-28 16:12
标题: Software testing的最基本问题
版上正好有同仁问及测试理论 俺也来说说自己的理解


有一个定义在域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的主要思路就是尽可能多地找出软件中的各种错误




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2