测试的意义
作者:Mysticbinary
人们针对一个具体问题,通过分析和设计,最后用编程语言写出了一个程序,如果它通过了语言解释器(编译器)的检查,可以运行了,那么下一步的工作就是设法确认它确实满足了我们需求。这篇文章就是讨论怎么确认程序是否满足用户提出的需求。 满足需求,换言之就是功能正常,确认功能正常可以从以下几个方面确认: 定义的函数对于所有正确的参数都能返回正确的结果 写出的程序对所有合适的输入都能产生正确的输出 量化后的做法就是通过一系列的试运行,检查程序的行为、输入和输出,如果检查中发现了问题,就纠正、改进。这个也是功能测试和安全测试的初衷。
测试用例
测试考虑的基本问题就是怎么运行程序,需要提供什么数据,才能最大限度的检查程序的各种行为和情况,最大可能的挖出程序中的错误和缺陷。基于设计什么测试流程、提供什么参数这种检查程序运行的一套数据被称为一个测试用例。一个测试用例就是可量化的测试流程。 确认测试用例又区分两类方式:
黑盒测试
就是不看代码,直接上手程序的使用测试。这里不讨论黑盒测试。 白盒测试 白盒测试的基础是看程序的内部结构(代码)和可能产生的执行路径,根据内部结构来选择测试的用例,使程序在试验性运行中就能表示出尽可能多的不同行为。这个做法的基本理念就是:如果所有可能执行的路径(顺序、条件、while、for、嵌套…执行结构)都能给出正确的结果,那么程序的正确性就能得到保证。
测试函数功能案例
各类的语言都会提供单元测试的库,Python也不例外,python一般使用PyUnit(unittest)库,unittest是Python自带的单元测试框架,用于编写和运行可重复的测试,下面介绍怎么用unittest来测试函数的用法,我这里只是简单用了几个测试方法,更多测试方法请查阅官网(https://docs.python.org/3/library/unittest.html)。
3个需要测试的函数:
def mysum(a, b):
return a + b
def mysubtraction(a, b):
return a - b
def is_evenNumbers(x):
if (x % 2) == 0:
return True
else:
return False
测试函数的方法:
import unittest
import testbox.mymath as mymath
class Test(unittest.TestCase):
def setUp(self):
print("The unit test function start.")
def test_mysum(self):
self.assertEqual(mymath.mysum(1, 2), 3, "mysum function have error!")
def test_mysubtraction(self):
self.assertEqual(mymath.mysubtraction(2, 1), 1, "mysubtraction function have error!&#