周伟明的专栏

<<软件测试实践>> 已上市

周伟明ID:drzhouweiming
186532次访问,排名378(1)好友1人,关注者11
软件技术爱好及研究者
drzhouweiming的文章
原创 49 篇
翻译 0 篇
转载 0 篇
评论 315 篇
周伟明的公告
一书已上市, 欢迎大家提出意见!
最近评论
yongrending:这种技术在一般的家庭版电脑上使用的可能性不大,但在公司和网站的服务器中确是值得推荐和推广、研发的
drzhouweiming:因为sections语句后面有隐含的barrier
如果要将其变成并行的话,需要使用nowait子句
kuangxiangjie:这种方式和前面那种方式的区别是,两个sections语句是串行执行的,即第二个sections语句里的代码要等第一个sections语句里的代码执行完后才能执行。

您好,我对这句话不是很明白....parallel不是并行的么,怎么在它里面的两个ses会是串行的呢
algcfx:Wow gold
dimire:LZ你好,我参考你的第一个测试程序int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
……
文章分类
    收藏
      相册
      最近文章
      1、多核新观念-象使用内存一样使用CPU?
      2、多核编程中的任务随机竞争模式的概率分析
      3、OpenMP创建线程中的锁及原子操作性能比较
      4、多核编程中的任务分组竞争模式
      5、称球问题的测试解法
      90%程序员写不出无BUG的二分查找程序?
      C/C++代码检视实例
      多核编程中的负载平衡难题
      多核编程中的锁竞争难题
      微软过桥问题与测试人员素养
      接口关系稳定原理探索
      接口设计定理
      模块分解原理与三权分立
      模块分解原理的探索
      测试驱动需求分析
      筑一座坝治好中国的沙漠
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 测试用例设计中的NP难题收藏

      新一篇: 等价类分法 新解 | 旧一篇: C/C++代码检视实例

       
      3.1.1       测试用例设计中的NP测试用例设计中的NP难题
      如何划分测试空间才能以尽量少的子集来覆盖整个测试空间属于测试用例设计的优化问题。从数学上来讲,这实际上是一个NP完全性问题。下面就来讲解为什么最少测试用例数问题是一个NP完全性问题。
      要说明这个问题,首先需要建立求解最小测试用例数的数学模型。
      假设在测试空间里有n个可测数据组成的集合记为D = {d1,…dn},假设测试空间里有m个可能的缺陷,把m个缺陷个缺陷集合记为B = {b1,…bm}。对于每个可测数据,都可能揭示出缺陷集合B中的若干个可能的错误,也就是说对每个可测数据能揭示的缺陷集合是B的一个子集,分别记这些子集为e1,…en ,(eiB, 1≤ i ≤ n)。
      由于测试空间里的任一缺陷都是由可测数据来引起的,因此对于任一缺陷bk∈B(1≤ k ≤ n),必然存在一个可测数据di∈D(1≤ i ≤ n)可以揭示出这个缺陷,也就是说存在集合ei ( 1≤ i ≤ n),使得bk ∈ei
      最少的测试用例数问题是找出最少个数的测试用例,使用这些测试用例能将缺陷集合中的缺陷全部揭示出来。实际上就是要找出若干个子集ei(1≤ i ≤ n),使得这些子集的成员可以覆盖集合B的所有成员。
      这样就建立起了最少测试用例数的数学模型,它属于数学中的集合覆盖问题,是一个典型的NP完全性问题。目前还找不到精确的多项式算法来解决这个问题,只能设计一些近似算法来对这个问题进行求解,后面讲的测试用例设计方法其实都是对这个问题的一种近似求解算法。
      如果要了解集合覆盖问题的近似求解数学算法,可以参考Thomas H. Cormen等著的《算法导论》一书的35.3节,里面有详细的讲解。
      《算法导论》一书里也举了一个集合覆盖问题的另外一个实际例子:假设X表示解决某一问题所需要的各种技巧的集合,另外有一个给定的可用来解决该问题的人的集合,也就是说对于技巧集合种的每种技巧,至少有一人掌握该种技巧。现在的问题是如何选取最少数量的人组成一个委员会,使得技巧集合中的任一技巧,委员会里至少有一位委员掌握该种技巧。将这个例子对比最少测试用例数问题的数学模型,会发现这是同一个问题。
      虽然最少测试用例数是一个NP完全性问题,但在实际情况中,大多数情况下测试用例数并不是太多,得到精确解的可能性还是很大的,只有那些比较复杂的有组合关系的情况下,用例数可能会存在一定的冗余。
       

      发表于 @ 2007年03月13日 22:21:00|评论(loading...)|编辑

      新一篇: 等价类分法 新解 | 旧一篇: C/C++代码检视实例

      评论

      #g9yuayon 发表于2007-03-14 23:48:01  IP: 199.246.40.*
      既然$e_i$是B的子集,应该是$e_i \subseteq B, 1 \leq i \leq n$吧?

      根据俺测试的经验,测试困难的地方还不是解决集合覆盖问题,而是搞清楚:1. D中的可测数据能够揭示所有的缺陷; 2. 确定D中每个测试数据能揭示什么缺陷。这在大型测试里要么不可能,要么代价太高(不然我们也就不需要采用形式检验(formal verification)的方法来全面测试关键软件了)。所以Dijkstra才会说测试只能证明系统漏洞的存在,但不能证明缺陷不存在吧?稍微切合实际一点的改进是引入概率限制(软件开发的方法哪个不是在概率下讨生活?),比如说d_i覆盖b_i的概率是p_i。不过这个时候问题就变成probabilistic set covering乐:http://citeseer.ist.psu.edu/501220.html
      #Thomas_Zhang 发表于2007-03-15 15:47:14  IP: 221.12.171.*
      好像说的都有道理, 都是数学问题
      #drzhouweiming 发表于2007-03-15 23:37:04  IP: 220.249.249.*
      To g9yuayon :

      你说的很正确,软件中的质量问题本身就是一个概率问题,因为很多情况下测试空间相对于实际情况来说可以认为是近似无限大,缺陷空间也是无限大,现实情况中不可能对测试空间做完整的测试,所以实际情况中都是找出那些发生概率比较大的缺陷。

      由于这篇文章只是说明最少测试用例数问题是NP难题,没有对如何寻找缺陷方面进行描述,所以没有谈到概率方面的问题。
      #nlsoft 发表于2007-03-17 12:39:23  IP: 222.161.66.*
      www.niusoft.net 有大量的技术文档,教程,和编程工具下载,欢迎访问
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 周伟明