google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

Software testing的最基本问题

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

TOP

 
当前时区 GMT+8, 现在时间是 2008-9-7 05:17Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹