石 家 庄 铁 道 大 学
实 验 报 告
|
|
实验项目名称:实验三
一、 实验目的
掌握单元测试技术,并按单元测试的要求设计测试用例
掌握一种单元测试工具的使用
二、 实验内容
自行学习C#或python或C++的其中一种单元测试工具的使用,自选一段单元代码(不少于15行),进行测试,完成实验报告。
三、 实验步骤及结果
源代码不用写在报告中,源代码上传学习通,在报告中可写:源程序见学习通平台。
1. 被测代码
选择了一个简单的计算器类作为被测代码,包含加法、减法、乘法和除法四种基本运算,代码如下:
class Calculator:
"""简单的计算器类"""
def add(self, a, b):
"""加法"""
return a + b
def subtract(self, a, b):
"""减法"""
return a - b
def multiply(self, a, b):
"""乘法"""
return a * b
def divide(self, a, b):
"""除法"""
if b == 0:
raise ValueError("除数不能为零")
return a / b
2. 测试代码
使用Python的unittest框架编写测试用例:
import unittest
from calculator import Calculator
class TestCalculator(unittest.TestCase):
"""Calculator类的单元测试"""
def setUp(self):
"""在每个测试方法前执行"""
self.calc = Calculator()
def test_add(self):
"""测试加法"""
self.assertEqual(self.calc.add(2, 3), 5)
self.assertEqual(self.calc.add(-1, 1), 0)
self.assertEqual(self.calc.add(0, 0), 0)
def test_subtract(self):
"""测试减法"""
self.assertEqual(self.calc.subtract(5, 3), 2)
self.assertEqual(self.calc.subtract(-1, -1), 0)
self.assertEqual(self.calc.subtract(0, 0), 0)
def test_multiply(self):
"""测试乘法"""
self.assertEqual(self.calc.multiply(2, 3), 6)
self.assertEqual(self.calc.multiply(-1, 1), -1)
self.assertEqual(self.calc.multiply(0, 5), 0)
def test_divide(self):
"""测试除法"""
self.assertEqual(self.calc.divide(6, 3), 2)
self.assertEqual(self.calc.divide(-4, 2), -2)
self.assertEqual(self.calc.divide(0, 5), 0)
# 测试除数为零的情况
with self.assertRaises(ValueError):
self.calc.divide(5, 0)
if __name__ == '__main__':
unittest.main()
3. 测试用例设计
针对每个方法设计了多个测试用例,包括:
正常情况下的运算
边界值测试
异常情况测试(如除数为零)
4. 测试结果
1. 加法测试 (test_add)
|
测试用例 |
输入参数 |
预期结果 |
实际结果 |
状态 |
|
正数相加 |
(2, 3) |
5 |
5 |
Ok |
|
负数相加 |
(-1, 1) |
0 |
0 |
Ok |
|
零值相加 |
(0, 0) |
0 |
0 |
Ok |
2. 减法测试 (test_subtract)
|
测试用例 |
输入参数 |
预期结果 |
实际结果 |
状态 |
|
正数相减 |
(5, 3) |
2 |
2 |
Ok |
|
负数相减 |
(-1, -1) |
0 |
0 |
Ok |
|
零值相减 |
(0, 0) |
0 |
0 |
Ok |
3. 乘法测试 (test_multiply)
|
测试用例 |
输入参数 |
预期结果 |
实际结果 |
状态 |
|
正数相乘 |
(2, 3) |
6 |
6 |
Ok |
|
正负相乘 |
(-1, 1) |
-1 |
-1 |
Ok |
|
零值相乘 |
(0, 5) |
0 |
0 |
Ok |
4. 除法测试 (test_divide)
|
测试用例 |
输入参数 |
预期结果 |
实际结果 |
状态 |
|
正常除法 |
(6, 3) |
2 |
2 |
Ok |
|
负数除法 |
(-4, 2) |
-2 |
-2 |
Ok |
|
零被除数 |
(0, 5) |
0 |
0 |
Ok |
|
除数为零 |
(5, 0) |
ValueError |
ValueError |
Ok |
四、 个人体会
通过本次实验,掌握了单元测试的基本概念和技术,学会了如何为代码设计有效的测试用例。
熟悉了Python的unittest框架的使用方法,包括测试类的编写、断言方法的使用等。
理解了单元测试在软件开发中的重要性,它可以帮助开发者尽早发现代码中的问题,提高代码质量。
在测试过程中,特别需要注意边界条件和异常情况的测试,这是发现潜在错误的关键。
浙公网安备 33010602011771号