软件测试是一条超级长的跑道,最好分阶段来跑:先入行,后精通。网上能看到很多软件测试的帖子,但能够准确分类详细介绍的并不多。正好最近有时间,就把我所了解的软件测试做一个小小总结,对你有帮助的话,记得点赞、收藏、关注偶~
一、软件测试分类
在招聘网站上能够看到很多软件测试的岗位,但大部分岗位的名称都是非常笼统的软件测试,到底是做功能测试的,还是做接口测试的,还是做性能测试的,并不十分明晰。有些招聘明明在岗位描述里写的是功能手工测试,面试的时候希望用7k的工资招聘一个资深测试开发人员,逗儿呢?
不吐槽了,先做一点介绍吧。软件测试想必不用我做介绍了,就是通过一系列的手段和方法,通过或手工或工具来测试软件里的错误(bug),要有“鸡蛋里挑骨头”的勇气和细心。当然不能乱挑刺。
根据测试阶段,可以将软件测试分为单元测试(UT)、集成测试(IT)、系统测试(SY)、验收测试(UAT,又可以分为alpha、beta、gamma测试)等。这种分类方法必须知道并且其中涉及的点是需要记忆的。
根据是否自动化,可以将软件测试分为人工测试和自动化测试。像我们在招聘网站里看到的自动化测试就是这里的概念,通俗来说,就是用机器来代替人工进行测试,以提升效率。现在测试入行的门槛是在逐步抬高的,基本是家公司,不管招人来是干什么的,都希望候选人会自动化测试。
根据是否要运行程序,可以将软件测试可以分为静态测试和动态测试。静态测试其实主要就是看一看文档呀、页面呀之类的,很重要,但是我们主要做的还是动态测试。
根据是否要对代码进行测试,可以将软件测试分为白盒测试和黑盒测试。直接对源代码进行测试是为白盒测试,这块一般是直接由开发人员来测试的。不对源代码进行测试是为黑盒测试,又可以分为很多种类。对于测试人员来说,大部分进行的都是黑盒测试。
而接口测试是介于黑盒与白盒测试之中的一种测试,我们理解为是灰盒测试。因为接口要比手工测试(如点点点)更提前介入,更早地发现程序中可能存在的bug,从而补救成本比较低,所以很受重视。而且就点点点的功能测试来说,现在很多公司选择外包,这也造就了很多外包测试公司。而接口测试因为涉及到公司的核心业务逻辑和数据,很少有公司愿意把接口外包。
看到这里是不是感觉仍旧十分的迷惑,接口测试到底是干什么的呢?通俗点来说,接口测试和功能测试没有什么太大的区别。只不过功能测试一般是要等程序上线以后,才能够用手来点点点测试的。而接口测试也是测试软件的功能,只不过是在没有UI界面、在程序没有上线之前就可以测试的。
图片来源:pixabay二、接口测试是什么?
1、接口是什么?接口是从哪里来的?
在介绍接口测试是什么之前,让我们先思考一个问题:什么是接口呢?举个现实点的例子来说,USB和电脑连接的接口就是一个接口;人与人之间交流的语言也是一个接口。接口的目的是为了方便人与人之间的协同,以提高工作效率的一套标准与规范。就软件测试来说,接口就是一套前端和后端在开发过程中都需要遵循的用以数据传输的规范与标准。
明确了标准,就可以将软件开发的业务划分成若干个部分,然后交由不同的专业人士去开发了。前端的归前端,后端的归后端。在提升效率的同时,也方便了以后的迭代升级和人员流动等场景需求。
好,那也就是说,所谓接口就是一套规范吗?是的。其实有一个专业的名词:API文档。这个词应该不算是太陌生吧,不管是不是搞软件的,基本都听说过它。这份文档其实就是软件开发过程中的一套标准,它里面规定了软件的功能,以及每个功能的标准。当然,API文档是由人来书写的,它也不一定就是完美无缺的。
一般来说,API文档是由公司里非常有经验的架构师大佬来编写的,编写的格式没有通用的标准。不过有一种流行的风格,那就是restful风格。restful风格是一种软件架构设计风格,但是并不是一套标准。所以如果你的公司所用的不是这种风格,也不必惊奇。
这种风格最大的好处就是流行,便于协同,其实也不是什么很厉害的东西,就是约定了一些方法、数据格式、状态码等。非常的简单。
2、接口清单
有了API文档有什么作用呢?------>找接口!前面说了,API文档就是软件开发的规范和标准,它里面包括了功能以及功能实现的标准。那么作为测试人员,就需要有能力从API文档中将接口提炼出来,形成接口清单。
提炼的方法其实也比较简单,这里还是以restful风格的API文档来举例吧。根据软件功能模块,可以分为N个层次,每个层次里又包括了若干个功能(接口),就可以提炼出N个层次、M个独立的接口了。
可是这样的接口是比较乱的,我们再根据restful风格中约定的get、post、put、delete四种方法进行分类,就可以在N个层次下将M个独立的接口归位四类。于是,一套脱胎于API文档的接口清单就形成了。
可是,可是,我怎么知道它是一个接口呢?这就要提到接口的三要素了:url+方法+参数+返回值。在API文档中,能够找到这么一套东西的,就是一个接口。
3、接口测试是什么
接口测试就是根据接口清单,模拟客户端向服务端发送请求数据,并获取响应数据后,查看响应数据是否符合预期的过程。
整个过程可以分为三个步骤:
第一步:模拟客户端向服务端发送请求;
第二步:接受服务端返回的数据;
第三步:查看返回数据是否符合预期。
必须要明确的一点是,接口测试的依据是接口清单,接口清单的依据是API文档,API文档的依据的项目需求文档和原型图。有了接口清单后,针对于每一个接口依次执行上述三个步骤的过程就是接口测试。
那么是怎么执行的呢?因为接口测试是在程序开发过程中进行的,是没有完整的程序的,所以测试是需要用到工具的。不仅模拟客户端向服务端发送请求是需要工具的,从服务端接受数据也是需要工具的,而且有时候验证返回数据是否符合预期也是需要用到工具的。
这就不得不提到在接口测试中常用的如fiddler之类的抓包工具、postman、Jmeter等工具了。如果再涉及到接口自动化测试的话,还需要学习python、pytest、java等有关内容,这里先不介绍。对于小白来说,能够先入门是最重要的。
4、接口测试的分类有哪些?
虽然接口测试已经是一个比较小的分类了,但是它仍旧是可以细分的。一般来说,可以分为两种:
web接口测试------>指基于BS架构的软件测试
模块接口测试------>指基于CS架构的软件测试
在做接口测试的过程中,主要做的是web接口测试,即基于BS架构开发的软件。至于说BS和CS架构是什么,这里就不介绍了,百度一下就可以找到很多答案了。
上面的分类方法我们知道即可,在工作中最常用的两种接口测试,实际上是:单接口测试和关联接口测试(多接口测试)。
顾名思义,单接口测试就是针对于接口清单里的某一个接口来进行测试,主要针对的是某一个点,而关联接口测试(多接口测试)则是指针对于接口清单里的某几个接口进行测试,主要针对的是某一业务逻辑。
测试的点不同,所需要学习了解的点就不同。单接口测试的目的是为了测试某个接口是不是完美地实现了需求,那么就需要测试到各种可能出现的情况,所以是对某一个接口进行大量同类用例的设计,这就是常说的数据驱动测试。
关联接口测试的目的是为了测试某一业务逻辑是不是能正常实现的,所以基本上是建立在单个功能接口正常的前提下的,即一般不会填入逆向数据。在这个过程中,难点在于不同接口之间的数据传递。
以上这两个点是接口测试执行过程的重点,也是在学习使用postman和jmeter工具过程中的重点。我们以后再来介绍。
三、软件接口测试怎么测?
前面铺垫了这么多,这里做一个简单的小结,到底应该要怎么做接口测试呢?
第一步:根据API文档提取接口清单;
第二步:根据接口清单,确定适用于单接口测试的接口。根据需求评审及业务逻辑,确定适用于关联接口测试的接口类。
第三步:根据确定的单接口测试和关联接口测试,搭建测试框架,设计测试用例。这里的重点是用postman或jmeter等工具搭建测试框架(重点是数据驱动和参数传递),并根据等价类法、正交表法等方法设计合理有效的测试用例。
第四步:执行测试用例,并验证结果是否符合预期。如果是bug,提交bug等。
到这里,软件接口测试就结束了。当然,还有一些更细节的实现流程没有介绍,比如说,用例设计的方法有哪些?postman如何使用?jmeter如何使用?软件测试的基本理论有哪些?缺陷管理工具怎么用?接口测试自动化如何学习?等等、等等,我们之后的文章再来介绍。
下一篇文章:软件接口测试工具Jmeter怎么使用安装教程详解(一)