判定覆盖条件覆盖软件测试
白盒方法 * 路径分析 基路径测试:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 循环测试是一种着重循环结构有效性测试的测试方法。 白盒方法应用策略 * 1 静态白盒测试有助于直接定位缺陷,所以应优先进行静态白盒测试,特别是重要的、核心的功能模块,应进行严格的评审。检查的内容包括对程序代码的结构进行分析、对代码质量进行度量。同时在静态测试的过程中,应不断总结经验,更新缺陷检查表等规范性文档。 应尽量采用现有的测试工具来帮助分析代码的结构和评估代码质量。 白盒方法应用策略 * 2 针对黑盒测试检查不到或难以检查的地方(如内存泄漏)使用特殊的白盒测试方法。 根据代码的不同结构,选用合理的测试覆盖指标,评估黑盒测试方法是否存在漏洞和冗余,若有漏洞,应有针对性地补充更多必要的测试用例。 对于系统测试,也可以借鉴白盒测试中的路径测试方法的思想,展开相应的测试工作。 任务实施 * 策略分析 白盒测试主要针对被测软件的内部如何进行工作的测试。逻辑覆盖的关注点主要在于条件判定表达式本身的复杂度。而路径测试必然满足基本的逻辑覆盖指标,所以优先考虑路径测试。 任务实施 * 步骤 导出过程的流图 确定环形复杂性度量V(G) 确定基本路径集合(即独立路径集合)。 为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。 任务实施 * 步骤1 任务实施 * 步骤2 V(G)= 6 (个区域) V(G)=E–N+2=16–12+2=6 其中E为流图中的边数,N为结点数; V(G)=P+1=5+1=6 其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。 任务实施 * 步骤3 可确定6条独立的路径: 路径1:1-2-9-10-12 路径2:1-2-9-11-12 路径3:1-2-3-9-10-12 路径4:1-2-3-4-5-8-2… 路径5:1-2-3-4-5-6-8-2… 路径6:1-2-3-4-5-6-7-8-2… 任务实施 * 步骤4-1 为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。 路径1(1-2-9-10-12)的测试用例: score[k]=有效分数值,当k < i ; score[i]=–1, 2≤i≤50; 期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。 任务实施 * 步骤4-2 路径2(1-2-9-11-12)的测试用例: score[ 1 ]= – 1 ; 期望的结果:average = – 1 ,其他量保持初值。 路径3(1-2-3-9-10-12)的测试用例: 输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数; 期望结果:n1=50、且算出正确的总分和平均分。 路径4(1-2-3-4-5-8-2…)的测试用例: score[i]=有效分数,当i<50; score[k]<0, k< i ; 期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。 任务实施 * 步骤4-3 路径5(1-2-3-4-5-6-8-2…)的测试用例: score[i]=有效分数, 当i<50; score[k]>100, k< i ; 期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。 路径6(1-2-3-4-5-6-7-8-2…)的测试用例: score[i]=有效分数, 当i<50; 期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。 本路径测试一样满足100%的语句覆盖、条件覆盖和路径覆盖。 任务小结 * 1 由于路径测试一般来说会满足逻辑覆盖的指标,因此在实际中较多采用,但是路径测试会随着条件节点的增多而急剧增多,对于环形复杂度>10的程序,一般会认为过于复杂而难以测试。 在采用了路径测试的基础上 ,可针对循环,进而采用循环测试,以验证循环结构的正确性。 void ReadPara( CString temp){ if ( temp == ">=") m_oper.SetCurSel(0);else{ if (temp == ">") m_oper.SetCurSel(1); else{ if ( temp == "==") m_oper.SetCurSel(2); else{ If( temp == "<=") m_oper.SetCurSel(3); else{