关于三角形问题的白盒测试实验报告一、实验目的1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、通过实验和应用,逐步提高和运用白盒测试技术解决实际测试问题的能力。3、掌握决策表和因果图的测试用例设计方法二、实验内容1、题目内容描述针对实验一编写的源代码进行白盒测试。要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。执行测试用例,并分析测试结果。可以使用C++Test对代码进行静态检查和动态测试。2、测试用例的编写根据条件绘制程序流程图如下:开始scanf(%d%d%d,&m_num1,&m_num2,&m_num3)结束Scanf()=EOF!(m_num1+m_num2=m_num3m_num1==m_num2cout不是三角形endlNcout等边三角形endlm_num1==m_num3YYm_num1==m_num2NNm_num1==m_num3m_num2==m_num3NNcout一般三角形endlNcout等腰三角形endlYYY!m_num1+m_num3=m_num2!m_num2+m_num3=m_num1NNYYY由程序流程图得如下控制流图:2346571101311121489采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:输入测试路径测试结果M_num1M_num2M_num33211-2-3-5不是三角形3451-2-3-6-7-8-10-11-12-14一般三角形3331-2-3-6-7-8-9等边三角形3341-2-3-6-7-8-10-13等腰三角形(2)判定覆盖输入测试路径测试结果M_num1M_num2M_num33451-2-3-6-7-8-10-11-12-14一般三角形(3)条件覆盖:输入测试路径测试结果M_num1M_num2M_num31231-2-3-5不是三角形3211-2-3-6-5不是三角形1321-2-3-6-7-5不是三角形3331-2-3-6-7-8-9等边三角形3451-2-3-6-7-8-10-11-12-14一般三角形3341-2-3-6-7-8-10-13等腰三角形4331-2-3-6-7-8-10-11-13等腰三角形3431-2-3-6-7-8-10-11-12-13等腰三角形(4)判定-条件覆盖:输入测试路径测试结果M_num1M_num2M_num31231-2-3-5不是三角形3211-2-3-6-5不是三角形1321-2-3-6-7-5不是三角形3331-2-3-6-7-8-9等边三角形3451-2-3-6-7-8-10-11-12-14一般三角形3341-2-3-6-7-8-10-13等腰三角形4331-2-3-6-7-8-10-11-13等腰三角形3431-2-3-6-7-8-10-11-12-13等腰三角形(5)条件组合覆盖:输入测试路径测试结果M_num1M_num2M_num31231-2-3-5不是三角形3211-2-3-6-5不是三角形1321-2-3-6-7-5不是三角形3331-2-3-6-7-8-9等边三角形3451-2-3-6-7-8-10-11-12-14一般三角形3341-2-3-6-7-8-10-13等腰三角形4331-2-3-6-7-8-10-11-13等腰三角形3431-2-3-6-7-8-10-11-12-13等腰三角形(6)路径覆盖:输入测试路径测试结果M_num1M_num2M_num3-1-1-11-2-4无法执行完毕1231-2-3-5不是三角形3211-2-3-6-5不是三角形1321-2-3-6-7-5不是三角形3331-2-3-6-7-8-9等边三角形3451-2-3-6-7-8-10-11-12-14一般三角形3341-2-3-6-7-8-10-13等腰三角形4331-2-3-6-7-8-10-11-13等腰三角形3431-2-3-6-7-8-10-11-12-13等腰三角形基路径方法设计测试用例并执行测试用例:输入测试路径测试结果M_num1M_num2M_num3-1-1-11-2-4无法执行完毕1231-2-3-5不是三角形3211-2-3-6-5不是三角形1321-2-3-6-7-5不是三角形3331-2-3-6-7-8-9等边三角形3451-2-3-6-7-8-10-11-12-14一般三角形3341-2-3-6-7-8-10-13等腰三角形4331-2-3-6-7-8-10-11-13等腰三角形3431-2-3-6-7-8-10-11-12-13等腰三角形三、测试结果分析经过以上测试发现:程序无法结束,达不到预测结果。其余均能正确执行达到预期结果。四、实验思考通过本次试验,对C++test工具有了一定的认识,学会了一些基本的用法和操作,用该工具测出了一些代码规范的问题,能够分析测试结果了。本实验用两种方法对程序进行测试,从中可看出,基路径测试比逻辑覆盖测试过程简单,但是没有逻辑覆盖测试的效果好。所以,我觉得应该更加熟悉两种测试方法的特色,以便在以后的测试中能更快更准确的选择测试方法,快速测试,找到程序中的错误。附录:程序代码#includeiostream.h#includestdio.hvoidJudge(intm_num1,intm_num2,intm_num3){while(scanf(%d%d%d,&m_num1,&m_num2,&m_num3)!=EOF){if(!(m_num1+m_num2=m_num3||m_num1+m_num3=m_num2||m_num2+m_num3=m_num1)){if(m_num1==m_num2&&m_num1==m_num3)cout等边三角形endl;elseif(m_num1==m_num2||m_num1==m_num3||m_num2==m_num3)cout等腰三角形endl;elsecout一般三角形endl;}else{cout不是三角形endl;}}}voidmain(){inta,b,c;Judge(a,b,c);}