最近两年一直在研究系统级别的接口测试,对此做一个总结:
1.接口测试的定义: 接口测试是面向系统组件间接口的一种测试。主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,测试重点是要检测数据的交换,传递和控制管理过程以及系统间的相互逻辑依赖关系。
2.接口测试产生的背景: 如今的系统架构纷繁复杂,系统间接口庞杂繁多,系统不断向着分布式,业务中心化,和高可用性发展,传统的测试以及难以满足系统发展的需求,迫切需要一种更加经济高效实用且可持续进行的测试方式来保证系统的质量。接口测试在这种背景下应用而生。
3.接口测试可以发挥的作用 保证系统的正确和稳定,提高测试效率,降低产品研发成本。举例说明:首先,随着系统复杂程度的上升,传统的测试方法使得测试成本急剧增加,测试效率大幅下降(数据模型推算,底层的一个bug能够引发上层的8个左右bug,而且底层的bug很容易引起全网的宕机)。相反接口测试能够提供系统复杂度上升情况下的低成本高效率的测试解决方其次接口测试不同于传统开发的单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。接口测试是保证高复杂性系统质量的内在要湂和低成本的经济利益的驱动作用下的最佳解决方案。
4.接口测试适用范围 接口测试适用于为其他系统提供服务的底层框架系统和核心服务系统,主要测试这些系统对外部提供的接口,验证其正确性,配合持续集成工具则可验证其稳定性。接口测试同样适用于一个上层系统中的服务层接口,但是越往上层,其测试的难度越大。不适用接口测试的场景:上层的系统的服务层接口,如果需要用户角色以页面操作形式参与并进行互动的系统,这种系统接口不在适用范围内。举例说明:在公司的实践中,如直接提供给商户的Web Service、Http以及Hessian等接口就比较适合做接口测试自动化.接口测试粒度也可以画细,模块间的接口也比较适合做接口测试,如通过JMS消息传递的接口或者是基于API级别的接口都适合做接口测试自动化。
5.接口测试框架 在过去一段时间的接口测试项目经验,我们选择Fitnesse这样一个开源的测试框架作为我们进行接口测试的核心框架,这套框架的最大优点是将业务逻辑和测试代码逻辑分离,这样可以方便测试用例和测试代码的维护和管理。其次作为一套框架级的测试工具,它本身是由JAVA开发,所以具有跨平台性以及很好的扩展性,可以根据自身的业务需求开发很多测试工具并和Fitnesse完成快速集成,当然也有很多其他的框架如Junit,TestNG等等。FitNesse是一个轻量级的开源框架,能够帮助开发团队方便的定义接口验收测试(Acceptance Tests)。通过在web页面上简单的输出和预计输出的表格就可实现,并且可以运行这些测试以确定是否通过.具体使用可参考:http://www.fitnesse.org/.FitNesse.UserGuide
6.接口测试框架图