今天带大家了解下服务端测试,说到服务端测试,其测试内容包含了很多,接口 API 是最上层的展现形式,其他的还有服务、脚本、数据层、分布式、算法等。从编程语言来说服务端语言应用最多,主要应用的就有Java、C/C++、Go、Lua、PHP、Python以上几种。

接口测试不是简单的 API 调用请求和查看返回值测试,如果测试接口,我们至少还要了解接口的内部逻辑,比如一个稍微复杂的接口,其内部会调用很多接口和服务,拿到相应的数据返回,这样你就需要跟踪每一个被调用接口的处理逻辑和脚本,保证其逻辑正确和返回数据的准确性,只了解数据库是远远不够的,还要了解系统架构、数据来源和各链路的数据处理,这样才能更好的为后期自动化测试做准备。

常用测试工具:

Postman、Linux 服务器、Nginx、Shell、Mock、数据库、开发工具、抓包分析工具、Git、Svn、Sublime Text、上述几种编程语言及对应的测试环境)。

从测试角度来看,服务端测试可从以下几点开展:

功能测试:

测试被测对象的接口,输入和输出(请求和响应)、内部接口逻辑调用的测试、数据有效性及各功能逻辑准确性。测试用例设计方法是通用的,这里不在介绍。

服务端的测试不能纯靠黑盒测试,稍微深入或复杂的逻辑测后的业务代码,需进行 code review,观察该功能的逻辑实现部分,并开展内部单元逻辑测试(举个简单例子,一个 C 接口的内部函数调用了 TCP 协议的服务,该服务后是另一套复杂的数据系统,这种情况测试人员须看其内部代码才会清楚后面具体都执行了什么,怎么调用的)、可结合详细设计文档、关键节点加 Log 日志进行检查,或者代码中 Mock 数据在进行一些内部逻辑单元的功能测试。

性能测试:

接口性能 Jemeter、Loadrunner、Ab 等工具、如工具无法满足,需要结合自身业务开发压测脚本

异常测试:

数据异常处理,可通过接口传参进行模拟(C/C++ 程序接口,如代码不严谨会经常出 Core),另外 Fuzzing 工具可以了解下(随机构造测试输入,对被测软件进行大量测试来发现软件中的漏洞的一种模糊测试方法)。

数据测试:

Redis、Hive、Hdfs、Kafka、Memcahe、Sql 数据库等。

算法测试:

了解算法模型、规则、对于该模型的数据效果开展测试,测试结果需符合算法规则预期。

自动化测试:

服务端自动化小文认为有两种:环境自动化、自动化测试(自动化测试一般都会和环境自动化、单元测试相结合使用)

环境:自动化环境搭建、持续集成(Jenkins 等)

接口:基于自身业务开发的单元测试自动化(Junit、Python Unittest 等)、第三方工具 Test NG、Pytest、开源测试平台等。

单元测试:

单元测试注重内部代码逻辑的测试。

安全测试:同移动端篇

联调测试:

一般指后端各个测试环境、服务、模块间的联调测试,首先将所有测试环境链通,进行各模块间的联调测试,测试通过后,再和前端(Web、H5、客户端 Android、iOS)联调测试、保证后端数据在前端正常展现。

以上,希望今天的内容,给你灵感和启发。码字不易,欢迎关注公众号。【软件测试之路 小文讲测试】

声明:上述观点为个人经验总结和观察,如有不对的地方请随时指正或留言交流。

作者:小文(一个即将从业 10 年的软件测试行业工作者)


↙↙↙阅读原文可查看相关链接,并与作者交流