API(应用程序接口)正逐渐成为很多软件开发的中心,不同的系统、应用通过API连接、传输数据、互相交互。越多越多的系统从MVC架构转向微服务架构,各个微服务之间通过Rest API进行交互。对于企业来说,相比产品开发完成后,进行UI测试,API测试更容易发现问题,更可能在早期阶段发现问题。并且API测试成本更低,更容易实现自动化测试,并且有更多的成熟的自动化测试工具可以使用,比如RestBird、Postman、SmartBear等,大大提高效率。
1.什么是API接口测试?API测试和UI测试有什么区别?
API应用一般分为三层:数据层、服务(API)层、展现(UI)层。API层,即业务逻辑层,一般包括用户业务逻辑、用户和服务、数据、应用功能交互规则。API直接触及数据层和展现层,API测试是开发测试团队可持续、自动化测试最佳切入点。有助于大幅提高软件交付质量、系统稳定性。目前,传统测试更聚焦UI层测试,但接口测试的优势和价值目前已经被普遍认可。
API测试:通常向一个和多个API发送请求,并验证响应,以检查性能、安全、功能正确性、返回状态等。
UI测试:通常聚焦验证Web/APP的界面展示、按钮/控件的操作、通过控件操作验证功能等。
与UI测试相比,API测试更多聚焦业务逻辑、数据响应、安全、性能瓶颈等。
2.为什么现在越来越重视API接口测试?
测试介入阶段更早,更容易发现问题 :通过API测试,只要核心逻辑设计完毕,就可以通过API测试验证响应的正确性和数据。无需等待各个团队完成自己的工作和整个软件开发完成。
更容易测试管理:UI界面会因为用户的访问方式和终端的变化而变化(比如浏览器、访问设备、屏幕尺寸等),因此测试工程师需要不断重新测试或者重写自动化测试代码。甚至有的图形错误造成无法测试核心功能。API测试更容易控制,甚至几秒就可以重构一个测试。
更容易定位问题:API测试更容易定位Bug。这在开发、集成,尤其是不同团队之间配合非常重要,可以快速定位问题,解决问题。
更节省测试时间:300个UI测试大概需要30个小时,300个API接口测试仅仅需要3分钟。这意味花费更少的时间发现bug,可以立即修复bug。
一个案例
1)下面是UI级别测试示例:一个相当简单和普通的测试。访问一个网站、填写表单、提交表单,认证后进入下一个页面。
在UI测试层面,即使最简单的测试也会面临很多的挑战。首先,受到浏览器和网络连接的限制,每次运行测试的时候,都需要等浏览器加载网站。其次,自动化测试,页面中的任何元素都可能改变,造成测试失败。有时候界面错误造成无法测试核心服务逻辑。这些但严重耗费测试工程师时间和拖慢项目进度。如果你想把所有可能性全部测试一遍,可能会出现上万个排列组合。
2)通过API接口测试,整个测试只有一个步骤。
3.API测试有哪些类型?
1)单元测试
测试领域有很多人喜欢定义概念,给大家带来很多困扰。API单元测试最简单的定义,通过一个简单的请求,获得一个或者多个响应。通常这种测试可以通过一个命令行或者使用Restbird API工具快速完成。
2)集成测试
API接口是内部系统、三方服务集成的核心,API接口测试最频繁、最重要的往往是集成测试。
3)端到端测试
端到端测试可以帮助我们验证几个不同API连接之间的数据和信息流。
4)性能测试
API请求响应时间、事务响应时间、并发用户数、吞吐量、TPS、资源利用率等。API性能是系统整体性能等基石。
4.Restbird、Postman等工具加速API自动化测试
相比UI测试,API更容易实现自动化测试,从而大大提高测试效率,提高研发交付质量。你可以自己撰写测试脚本,也可以使用第三方API测试工具,如Restbird、Postman、Runsope、Curl、Cfix、Check等,这些三方工具可以很好的帮助工程师实现自动化测试。比如Restbird不仅支持http的get、put、post、delete、head、patch、options等请求外;还支持Python、JavaScript、Golang编程;svn、git版本管理、CI/CD集成。合理运用三方工具,能快速实现API测试自动化,并极大提高API测试效率。
有疑问加站长微信联系(非本文作者)