1.实验内容
使用python实现如下功能的程序: 输入三条边 a,b,c,满足0<=a<=200,0<=b<=200,0<=c<=200,判断是否能构成三角形, 分别输出不能构成三角形、等边三角形、等腰三角形、直角三角形、一般三角形。
判断三条边是否合法判断两条边之和是否大于第三边判断三条边是否能够组成三角形判断两条边是否相等求三角形有几条边相等,返回值:相等边的数量判断是否满足两边平方之和是否等于第三边的平方判断是否是直角三角形判断三角形的类型,返回值: 不能组成三角形 等边三角形 等腰三角形 直角三角形 一般三角形
2.实验步骤
第一步:根据实验内容我使用python编写程序。
第二步:根据实验内容设计测试用例,要求是用白盒测试方法设计路径。
第三步:执行测试用例,并记录测试结果。
第四步:编写实验报告,实验报告的内容包括测试用例的测试结果、程序中存在的bug,白盒测试的特点。
3.实验代码
class Triangle(object):def __init__(self):super().__init__()def triangle(self, a, b, c) :if ((a + b) > c) and ((a + c) > b) and ((b + c) > a):if (a == b) and (a == c):print('等边三角形')return 3elif ((a == b) or (a == c) or (b == c)):print('等腰三角形')return 2elif (a * a + b * b == c * c) or (a * a + c * c == b * b) or (c * c + b * b == a * a):print('直角三角形')if ((a == b) or (a == c) or (b == c)):print('等腰直角三角形')return 2else: return 1else:print('一般三角形')return 1else:print('不能构成三角形')if __name__ == '__main__':while True:a = int(input('请输入a的值:'))b = int(input('请输入b的值:'))c = int(input('请输入c的值:'))if (a > 0 and a <= 200) and (b > 0 and b <= 200) and (c > 0 and c <= 200):print('输入的三边合法')triangle = Triangle()print('相等边的数量为:', triangle.triangle(a, b, c))breakelse:print('输入的三边值不合法')
4.基路径测试用例
控制流程
1输入三边的数据
2判断三边的数据是否合法
3三边不合法
4重新输入
5判断任意两边之和是否大于第三边
6不能构成三角形
7判断是否是直角三角形
8直角三角形
9判断三边是否相等
10等边三角形
11判断其中两边是否相等
12等腰三角形
13一般三角形
14结束
V(G)=P+1其中p为判定节点,则V(G)=5+1=6
6条路径:
1->2->3->4->5->6->141->2->3->4->5->7->8->141->2->3->4->5->7->9->10->141->2->3->4->5->7->9->11->12->141->2->5->6->141->2->5->7->9->11->13->14设计用例
5.测试代码
import unittestfrom triangle import Triangle ''' 这里由于在triangle.py中函数被封装为class所有要构造类来调用方法'''tr = Triangle()class Testtriangle(unittest.TestCase):''' 路径(1)测试,输入数据不合理'''def test1(self):self.assertEqual(tr.triangle(-2, -3, 11), 3)self.assertNotEqual(0, tr.triangle(-2, -3, 11))''' 路径(2)测试,输入数据构成直角三角形'''def test2(self):self.assertEqual(tr.triangle(3, 4, 5), 1)self.assertNotEqual(2, tr.triangle(3, 4, 5))''' 路径(3)测试,输入数据构成等边三角形'''def test3(self):self.assertEqual(tr.triangle(8, 8, 8), 3)self.assertNotEqual(2, tr.triangle(8, 8, 8))''' 路径(4)测试,输入数据构成等腰三角形'''def test4(self):self.assertEqual(tr.triangle(8, 8, 6), 2)self.assertNotEqual(3, tr.triangle(8, 8, 6))''' 路径(5)测试,输入数据不能构成三角形'''def test5(self):self.assertEqual(tr.triangle(1, 2, 3), 0)self.assertNotEqual(3, tr.triangle(1, 2, 3))''' 路径(6)测试,输入数据构成一般三角形'''def test6(self):self.assertEqual(tr.triangle(3, 6, 4), 1)self.assertNotEqual(1, tr.triangle(3, 6, 4))if __name__ == '__main__':unittest.main()
6.测试截图
7.实验总结
白盒测试实验结果中给出了每一个用例执行的结果的标识,成功是.
,失败是F
,出错是E
,跳过是S
。本实验采用的是python编写程序,并使用python内置白盒测试、单元测试模块
unittest进行测试。
白盒测试又叫结构测试,逻辑驱动测试或基于程序本身的测试。与黑盒测试不同,白盒测试会关注代码的过程,关注代码本身的结构,主要方法包括控制流测试(逻辑覆盖 路径测试)、循环测试、数据流测试。而对于基路径的测试方法,首先根据代码来画出控制流程,然后设计路径,路径要全面覆盖,每一条路径加入时都应该是之前没有出现过的。