为什么我们需要API接口?API接口的核心又是什么?
Posted Cris20230328
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我们需要API接口?API接口的核心又是什么?相关的知识,希望对你有一定的参考价值。
API(Application Programming Interface)是一种连接不同软件之间的标准化的接口,可以让不同软件间进行数据交互和通信。API接口的作用很多,以下是几个主要的原因:
1.提高软件系统的灵活性和可扩展性。API接口可以将不同的模块分离开来,使得系统更加模块化,便于后续的扩展和更新,降低了代码耦合性。
2.提高开发效率。API接口可以让开发者只关注自己负责的部分,而不用考虑整个系统的实现。这样可以大大降低开发时间,使产品更快地上线。
3.降低成本。API接口的个性化和灵活性可以降低组件成本,提升系统可维护性和扩展性。由于API接口是标准化的,不同厂商可以按照统一的标准进行接口开发,不必关注其他模块。
4.促进创新。API接口可以让不同软件之间的数据更加容易地共享和交流,从而推动创新和业务模式的变革。
总之,API接口在软件开发中具有非常重要的作用,可以快速连接各种不同的软件和设备,降低开发成本,提高系统的灵活性和可扩展性,促进产品和技术的创新。
举个大家熟知的电商平台API接口调试的例子:
请求地址:获》取》免》费》调》用》测》试
API接口的核心是提供标准化的数据交换方式,让不同的应用程序可以互相交互。具体来说,API接口的核心包括以下几个方面:
1.标准化的接口规范。API接口需要遵循一定的标准化规范,包括接口格式、协议、数据格式等。只有使用相同的规范,不同的应用程序才能有效地进行数据交换。
2.数据安全和授权管理。API接口的开发者需要考虑数据安全和授权管理,以确保数据不会被非法访问或篡改。API接口可以通过使用安全协议,如HTTPS协议,并且只有经过授权的用户才能访问API接口,以防止数据泄露或盗用。
3.灵活的数据交互方式。API接口需要支持不同的数据交互方式,如同步或异步,从而满足不同应用程序的需要。同时,API接口可以添加可选的参数或定制数据返回格式,从而满足更加复杂的应用需求。
4.系统的可扩展性。API接口需要具备良好的可扩展性,以便应对日益增长的数据交换需求。API接口可以通过增加数据传输带宽、优化调用逻辑、增强支持容错等方式,以满足大规模应用场景的需求。
综上所述,API接口的核心在于提供标准化的规范和安全的数据交换方式,并充分考虑不同应用需求的灵活性和系统的可扩展性。
接口测试-Postman VS SoapUI
其实市面上做接口测试的工具很多,为啥挑这两个来讲解了,重点是真心好用。好了,废话不多说,直接上干货。
相信有一定了解的人都知道这两个工具应用最广泛的就是接口测试,既然提到接口测试那我们不得不先普及下什么是接口,接口测试又是啥?
我们常说的接口一般指下面两种:
-
API:应用程序编程接口。程序间的接口
-
GUI:图形用户界面。人与程序的接口
我们这里说的接口测试主要指API接口测试,API接口分类一般有如下几种:
-
HTTP 接口
-
Webservice 接口
-
RESTful 接口
HTTP,RESTful 接口走 HTTP 协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为 json 串,最常见的是 get 和 post 方法。
WebService 接口是走 soap 协议,请求报文和返回报文都是 xml 格式。
而Postman和SopaUI支持的接口类型如下:
因此,我们需要先辨别项目前后端是用何种接口交互再来选取相应的接口测试工具。
接口测试又是啥?
接口测试就是模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端再接收应答然后对应答做一些校验的过程。
下面我们分别介绍下如何用PostMan和SoapUI做接口自动化测试。
A: Postman + Newman + Jenkins 实现接口自动化测试
1.安装Postman,编写API接口测试用例
示例:豆瓣公开查找书籍接口
2.导出Collection(项目-接口用例),安装NewMan,用NewMan Command运行Collection并输出HTML报告。
C:\\Users\\Li.Shi\\AppData\\Roaming\\npm\\newman run C:\\Users\\Li.Shi\\Desktop\\PostMan\\LiShiTest.postman_collection.json --reporters cli,json --reporters cli,html --reporter-html-export htmlOut.html
3.安装部署Jenkins,其中Jenkins的配置如下:
至此,我们可完成基于postman和Jenkins的自动化接口测试。
B:SoapUI+UnitTest 实现接口自动化测试
1.安装SoapUI,自行创建一个可运行的SoapUI的Project,得到项目XML文件.eg:DeviceReportService-soapui-project.xml
2.用VS(Visual Studio)创建一个Unit Test Project.添加reference,Check System, System.Configuration, System.Core, System.Data
3.添加app config文件,指定soapUI TestRunner.exe所在路径.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="SoapUIHome" value="C:\\Program Files\\SmartBear\\SoapUI-5.3.0\\bin"/> </appSettings> </configuration>
4.添加SoapUIRunner公共类,通过新建Process去调用TestRunner.exe命令进而运行SoapUI的case.
using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoapUI { public class SoapUIRunner { public void RunSoapUItest(string soapProject,string testSuiteName,string testName,string report,string set) { const string fileName = "cmd.exe"; var soapProjectFileName = Path.GetFullPath(soapProject); var arguments = string.Format("/C testrunner.bat -s\\"{0}\\" -c\\"{1}\\" \\"{2}\\" -r -a -f\\"{3}\\" -t\\"{4}\\" ", testSuiteName, testName, soapProjectFileName, report, set); var soapHome = System.Configuration.ConfigurationManager.AppSettings["SoapUIHome"]; //start a process and hook up the in/output var process = new Process { StartInfo = new ProcessStartInfo { FileName = fileName, Arguments = arguments, WorkingDirectory = soapHome, Verb = "runas", CreateNoWindow = true, ErrorDialog = false, RedirectStandardError= true, RedirectStandardOutput = true, UseShellExecute = false }, EnableRaisingEvents = true }; //pipe the output to console.writeline process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data); var errorBuilder = new StringBuilder(); //store the errors in a stringbuilder process.ErrorDataReceived += (sender, args) => { if (args != null && args.Data != null) { errorBuilder.AppendLine(args.Data); } }; process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); //wait for soapUI to finish process.WaitForExit(); //fail the test if anything fails var errorMessage = errorBuilder.ToString(); if(!string.IsNullOrEmpty(errorMessage)) { Assert.Fail("Test with name \'{0}\' failed. {1} {2}", testName, Environment.NewLine, errorMessage); } } } }
5.通过Unit Test调用SoapUI TestSuit, 进而可以运用bat命令集成运行TestCase. 做到接口的自动化测试。
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace SoapUI { [TestClass] [DeploymentItem(@"soapUIFiles\\DeviceReportService-soapui-project.xml", "TestData\\\\soapUIFiles")] public class DeviceReport:SoapUIRunner { private string testCaseSuiteName = "BasicHttpBinding_DeviceReport TestSuite"; private string soapProjectFile= @"TestData\\\\soapUIFiles\\\\DeviceReportService-soapui-project.xml"; private string reportFile = @"C:\\Users\\" + Environment.UserName + "\\\\Desktop\\\\TestReport"; private String SoapUISettingsFile = @"TestData\\\\soapUIFiles\\\\soapui-settings.xml"; private TestContext testContext; public TestContext TestContext { get { return this.testContext; } set { this.testContext = value; } } [TestMethod] [TestCategory("DeviceReport")] public void Device_Report() { RunSoapUItest(soapProjectFile, testCaseSuiteName, "DeviceReport TestCase", reportFile, SoapUISettingsFile); } } }
接下来我们对比下用方式A和B做接口自动化的区别:
1.从上面的实现来看,SoapUI自动化需要测试人员有一定的编码能力,想比如Postman会对测试人员要求高些。
2.从两种工具用例组织方式来看:
SoapUI的组织方式如下图,最上层是WorkSpace,所以每个WorkSpace中可以打开多个Project,一个Project也可以在不同的WorkSpace中。
Project对应我们的测试项目,其中可添加WSDL、WADL资源、TestSuite以及MockService。
TestSuite对应我们的测试模块,比如商户中心,其中可以添加TestCase,TestCase对应我们对某个模块的不同接口,比如订单管理接口。而一个接口可以能需要多个Step完成,变量、数据源、请求等都是一个Step。
Postman功能上更简单,组织方式也更轻量级,它主要针对的就是单个的HTTP请求。Collection就相当于是Project,而Collection中可以创建不定层级的Folders,可以自己组织TestSuite。每个Request可以当做是一个TestCase或者Step:
3. 从长期的团队协作来看:
SoapUI:本身一个project是一个xml文件,但是可以通过配置变成一系列文件夹,每个Case、每个Suite均是独立的文件,这样可通过svn/git/TFS进行团队协作。支持性较好。
Postman:有团队协作的功能,需要付费。
因此从项目支持的接口类型,不同集成测试需求和后期维护来考虑,我们可以根据上面几点选择适合自己项目的接口自动化工具。
以上是关于为什么我们需要API接口?API接口的核心又是什么?的主要内容,如果未能解决你的问题,请参考以下文章