jjzjj

传统 API 管理与测试过程正面临严峻的挑战

eolink 2023-03-28 原文

随着测试左移思想的引入, API (应用程序编程接口)经济的飞速增长导致对 API 管理平台的需求相应增加。越来越多的企业注重并关注接口测试。单纯的做接口测试或者做好接口测试的本质工作其实并不复杂; 我们可以借助接口测试工具辅助我们的工作,或者自己编写代码维护核心接口自动化脚本,单一的来看这些工作的话其实要做到这些并不难,难得是想要把整个过程流程化,规范化可能我们需要花费一定的时间去梳理和制订,下面是我们在测试过程中经常会遇到的一些问题和建议,我把这些整理出来,希望可以对大家起到一些建议性的帮助和正确的引导。

API 文档管理繁琐

目前现状:

  • API 数量,协议,规范众多

  • 编写文档麻烦,协作效率下降

  • 项目维护成本增加

规范化 API 管理的好处:

统一的 API 文档有助于减少项目维护和沟通成本,无论什么项目、什么人编写什么 API ,系统都可以保证 API 文档的可读性,方便后续维护和团队协作。有一款方便管理、查阅 API 文档,提高日常代码( CV )效率,如果有一款 API 文档管理工具可以大大提高工作效率和高质量交付工作。

API 版本管理弱

目前现状:

  • API 变更通知不及时

  • 缺少版本管理和对比手段

  • 管理人员对 API 管理的痛点

a. 无法随时清晰的了解当前进度的状态:

Manager 无法从代码层面清晰的看到开发进度,需求排期的情况,是否已经到达提测阶段,是否已经对接和发布都缺少一个平台展示。

b. 发现问题总是滞后

让开发团队编写进度说明比编写开发文档更难,由于缺乏了解问题的渠道,只能通过开会的方式,口头了解问题。但是当问题被说出来时,其实早已滞后了。

以上两个问题不难发现:项目进度管理工具并不完全适用于研发工作,如何规范开发行为、判断开发质量、帮助团队沟通的协作,这些日常问题依然得要人力介入,效果并不好。

管理缺乏工具,针对研发工作需要有深入参与研发的管理工具才行。

管理 API 变更历史:

通过 API 变更通知、 API 评论、 API 版本管理等功能促进团队高效协作,构建敏捷团队。

API 开发协作慢

目前现状:

  • 前/后端、测试的工作需要互相等待,无法高效合作;主要体现在以下方面:

a. 前端开发进度受制于后端:单纯API文档缺乏 Mock API ,前端需要等待后端开发完成才能拿到测试数据,自己构造测试数据费时费力。

b. 反复沟通浪费时间:由于文档滞后于代码,而开发经常在开发最后才完善文档,导致前后端对接需要反复沟通确认。

c. 缺少统一沟通平台:如果 API 出现了什么问题,只能在内部通讯工具交流,既没有存档,也不便于多人协作。

d. 文档变更不通知:后端开发改了代码和接口习惯于口头沟通,而不是通过文档明确地指出修改的内容,导致后期沟通成本高昂。

e. 文档阅读体验差:文档不标准、内容不清晰、平台不统一等问题导致最终文档效果也不好,体验越差越不维护,导致破窗效应。

f. 接口测试不方便:需要看着接口文档再另外使用工具进行测试,如果接口发生了变化,写好的测试也作废了,增加了重复工作量。

帮助团队内部进行协作,共享劳动成果:

团队之间没有参与任何沟通协作的内容,缺乏API定义、测试、协作的主动权。

测试维护成本高

目前现状:

  • 维护测试麻烦,每次改动 API 都需要手动维护测试用例

  • 测试时间完全不够充分;主要体现在:

a. 测试工作重复:需要看着接口文档再另外使用工具进行测试,如果接口发生了变化,写好的测试也作废了,增加了重复工作。

b. 工作成果无法分享:每个测试人员都用单机测试工具编写测试脚本,但却没法共享和协作。

c. 测试工作不自动化:一直希望促进自动化测试,但是没有真正运作起来,每天“点点点”依然消耗大量测试团队的精力。

d. 测试效果无法量化:无法准确了解测试效果,没人可以说清今天、昨天、上周、这个月的测试情况如何,和之前比有何改进。

e.** 测试工作被动**:测试总是排在最后进行,无法参与项目讨论,无法进行快速大范围回归测试,甚至无法按时完成测试任务,导致项目延期或带着忐忑上线。

引入管理 API 测试用例工具:

将文档和测试关联起来有助于减少 API 测试和维护测试用例的时间,不再需要一边对照 API 文档,一边打开其他的工具来测试。提高测试人员的工作效率。所有 API 测试数据、用例、报告都在平台中统一管理,减少测试团队的重复工作,让团队成员可以共享工作成果。

自动化测试难

目前现状:

传统 API 自动化测试工具上手门槛高,对成员水平要求高,无法快速在团队推广 API 自动化测试经常受到测试人员编码水平等因素的影响,难以大范围和高效实施。 Eolink 提供的 API 自动化测试可以不编写代码,测试人员进行简单的培训后即可编写复杂的测试用例,通过自动化取代手工来进行重复的 API 测试。

Eolink 工具可以帮助测试团队提高测试效率和测试覆盖率。

以上的问题你在工作中遇到过吗?请问是怎么处理和优化过程的呢?

说出你的心得和感受,请在下面的评论区给我留言互动。

图中所使用的的接口管理工具是eolink,感兴趣可以自行使用:www.eolink.com

有关传统 API 管理与测试过程正面临严峻的挑战的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  5. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  6. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  7. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  8. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  9. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  10. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

随机推荐