本文共 1199 字,大约阅读时间需要 3 分钟。
在上一篇博客(python自顶向下的设计方法进行体育竞技分析,网址:http://blog.csdn.net/sxingming/article/details/51235650)中,
我们学习了自顶向下的设计:从顶层开始分解问题为更小的问题进行求解。程序写好后,需要通过运行程序进行测试,
测试的好方法也是分成小部分进行展开,即自底向上的执行:从底层模块开始一个一个进行测试,直至整个系统测试完。
根据程序规模的不同,测试方法如下:
软件测试
1》 小规模程序:直接运行即可。
2》中等规模程序:采用单元测试,即从结构图底层开始,逐步上升,先运行测试每个基础函数,再测试由基础函数组成的整体函数,这样方便定位错误。
3》较大规模程序:高级软件测试方法。
下面,我们以体育竞技分析程序为例子,进行单元测试:
在进行单元测试之前,需要找到python的安装目录,将体育竞技分析程序matchSimulate.py复制到文件夹python35\Lib中,如下图:
下图是体育竞技分析程序的结构图(部分变量名和函数名采用缩写,看明白意思即可):
从最底层的gameOver()函数开始测试,我们采用调用库函数的方法,如下:
>>> from matchSimulate import *
>>> gameOver(0,0)
False
>>> gameOver(13,15)
True
>>> gameOver(15,11)
True
上面通过直接输入某时刻的双方得分,来检测函数的执行结果,比如,得分是0:0,函数输出为False,表明比赛尚未结束。通过上面的测试,说明gameOver()函数是正确的。可以继续向上测试simulateOneGame()函数。
simulateOneGame()函数有一些概率行为,其输出是不确定的,测试它的最好方法是根据输出判断其行为是否合理,如下:
>>> simulateOneGame(0.5,0.5)
(12, 15)
>>> simulateOneGame(0.5,0.5)
(15, 14)
>>> simulateOneGame(0.8,0.2)
(15, 0)
>>> simulateOneGame(0.2,0.8)
(2, 15)
>>> simulateOneGame(0.75,0.25)
(15, 1)
当2个球员的能力值相等时,比分也非常接近,当能力值相差很远时,比分则呈现出压倒性趋势,这与我们对函数的预期是一样的,
因此,simulateOneGame()函数也是正确的。
继续进行这样的单元测试,可以检测程序中的每一个函数,独立检验一个函数更容易发现错误,当把整个程序都检验一遍后,运行起来将会变得更加顺利,
通过模块设计方法分解问题,使我们能够编写更加复杂的程序,通过单元测试的方法分解问题,使我们能够调试运行复杂的程序。
(完)