单元测试与模块测试

什么是“单元测试”、“模块测试”?

然而在功能的实现代码中并没有“单元”,也没有“模块”;只有函数、类和方法。先来分别看看它们 的定义:

单元测试(Unit testing),是指对软件中的最小可测试单元进行检查和验证。通常该代码块单独和孤立 的,如果您的测试使用了一些外部资源,如网络或数据库,它不是一个单元测试。

单位测试应该是相当简单的写。一个单元测试基本上应该只是给出一些输入的功能,然后检查输出的功 能是正确的。在实践中,这可能会有所不同,因为如果你的代码是设计不良,编写单元测试可以是困难的。 因为,单元测试是唯一的测试方法,它也有助于您编写更好的代码。

相信这个解释不会有太大争议。

模块测试(Module testing),Module testing is the testing of complete code objects as produced by the compiler when built from source.(是针对编译时生成的完整代码对象的测试)。

关于模块测试的解释,我搜索到中文资料的解释并不太好。好吧!这个解释更不好理解了。还好文中给出了进一步解释,单元测试与模块测试区别:

There is only a slight difference between unit testing and module testing. Modules are fully formed chunks of coherent source code that can typically be tested by driving a few function signatures with various stimuli. On the other hand, unit testing (which is considered as part of the implementation phase for this software development process) may involve testing one small part of a function that will never formally implement any function interface.

单元测试和模块测试之间只有轻微的区别。模块是完全形成连贯的源代码块,通常针对具有明显的功能 特征的代码块进行测试。另一方面,单元测试(这被认为是这个软件开发过程的实施阶段的一部分)可能涉 及测试一小部分的功能,将永远不会正式实现任何功能接口。

这里通过对概念的解释,本节当中的例子,你可以认为它是单元测试,同样也可以认为它是模块测试。 显然,对于Calculator类的实现,它是一个完整的可以对两个数进行加、减、乘、除运算的功能模块。所以, 我更愿意把它看作是模块测试。

模块接口测试:这个概念并非标准叫法,更多的是一个口头概念。其实它就是模块测试,加上“接口” 两个字,更强调了被测试的模块有规范的输入和输出。因为这是一个可测试的模块最显著的特征这一。

web接口测试

web 接口测试又可分为两类:服务器接口测试和外部接口测试。

服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后 端,前端开发人员用html/css/javascript等技术。后端开发人员用php/java/python/ruby等各种语言。用户 输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实 现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索 关键字。

外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提 供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给 当前系统。

对于服务器接口测试,我们来看例子,以Django为例。 在…/sign/view.py文件中添加:

#hellodef hello(request) :name = request.GET.get('name','')return HttpResponse("Hello,%s!" % name)

然后通过URL地址发起

请求:http://127.0.0.1:8000/hello/?name=zhangsan name可以等于任何内容。我们将看到如图6.3,请求name打印在页面上。

127.0.0.1:8000/hello/?name=zhangsan Hello,zhangsan!

图6.3 get请求 对于web接口测试来说有哪些测试要点:

1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。 2、检查返回数据的正确性与格式;json是一种非常创建的格式。

3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。

4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果 都没返回,果断弃用。