那些让你目瞪口呆的 bug

2023-11-21 10:10
文章标签 bug 目瞪口呆

本文主要是介绍那些让你目瞪口呆的 bug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前看到过一个有趣的故事,来自知乎的「清夜」同学。

对接后台的一个接口,返回的数据中有一段类似于这种北京丨海淀,然后我只想要“北京”这个词,于是前端 JS 随手写下北京丨海淀'.split('|')[0],结果没取到。

当时愣了下,不过没在意,换另外一个方法继续试,还是不行。

这个时候就有点懵逼了,于是再换方法继续试,把所有的方法试了一遍全都不行,这个时候就有点慌了,局面好像有点控制不住了。

把所有的原因都考虑了一遍,甚至换了浏览器和电脑,试了很长时间都不行最后终于将目光放到了“丨”这个字符上,复制粘贴然后打印其 unicode 编码发现这个东西根本不是英文编码状态下的竖线|,而是一个拼音为 gǔn 的汉字。

当然实际工作场景遇到的问题千奇百怪,回过头来我们看看这个问题到底出在哪?其实还是信息不同步,造成返工。

在实际的项目开发中,会时常听到前端对后端的吐槽,我相信大抵是因为接口问题。

无接口文档

  1. “代码都写注释了,文档就没必要了吧,直接 Git 拉一下就好了。”

  2. “接口使用方法 QQ 发你了。”

  3. “我离职了,各位好好加油。”

后端增删改 API 没同步消息

改了 API 的一些输出格式,没知会前端,可想而知前端会多么崩溃。

前端内心 OS:“我太难了。”

如果后端开发一开始进行自测、测试再进行再测,定位问题来解决,想必到了前端这就无需再返工了。也不排除一些团队比较小,没有测试,还是得开发自己上。

当你打开搜索引擎,检索「后端接口」,联想搜索第一个词就是「后端接口测试」。要知道,联想词排名越高,说明检索的人越多,可见多少人都在这犯了难。

回归核心还是如何减少开发的返工工作量。毕竟开发的时间价值也很宝贵,这时候学习接口测试就显得很重要。但是开发是天生的效率狂,能不能把接口测试也自动化了呢?

完全可以!同时,自动化测试还有以下的优点:

  • 速度: 测试执行的速度远远快于人类用户。

  • 可靠性: 准确地执行测试,消除人为错误。

  • 可重复: 可以测试在重复相同的操作后 AUT 的反应。

  • 广泛性: 可以建立一系列测试来覆盖 AUT 的每一项功能,测试覆盖率高。

  • 可重用: 可以重复使用已有的测试,即使 AUT 的版本不同或用户界面发生了变化。

  • 高效率: 允许测试人员专注于验证新的 feature,而不是已有的功能。

那么如何学习接口自动化测试?

我想这个《接口自动化测试实战》专栏能很好地帮到你,从此节省回归测试时间,做到真正的持续集成、持续上线。

案例上手,多动图解析练习操作

每篇文章都有大量编程练习,让你真正具备独立搭建接口自动化测试脚本的能力。

由易到难、提供练习代码 Repo

从一键初始化项目 BaseCode 提交到 Github 开始,逐步推进,由易到难,让基础薄弱的小伙伴也能完全掌握。提供练习代码 Repo,不会存在因为自己调试不过而无法继续的情况。

搭建真实的 Web 项目进行实战练习

搭建真实的 Web 应用,从用例分析开始到搭建完善的接口自动化测试脚本。脚本可在多环境中切换运行并能集成到 jenkins 上随时执行。学完本专栏后,可独立上手自己所负责项目的接口自动化测试搭建。

Postman 可以完成接口测试,为什么还要学习专栏?

可能有些小伙伴会有疑问:花半天时间学习一下 Postman 或者 SoapUI 等工具就可以开始进行接口测试,为什么还需要对这部分内容进行深入学习。确实,如果你只需要调用少量接口,且只校验接口的 Response,那么使用 Postman 是可以的。但实际项目中的接口数量将远远大于 10 个,真正的难点在于如何保证复杂项目中的所有场景都能通过接口调用、进行充分覆盖且能在持续集成平台上稳定运行。

实际项目中实施接口自动化测试可能会遇到的难点

  • 接口改动频繁,每次改动都需要修改被影响的接口 Reqeust Body,维护成本大;

  • 测试数据被破坏导致接口测试失败;

  • Dev 环境运行 OK,切换了一套环境,大部分 Case 都跑不起来了。

本专栏除详细讲解所使用的编程语言和测试框架外,还会讲解如何解决上面这些难点,专栏会覆盖到的自动化实施策略如下:

  • 如何通过 Velocity 管理接口 Request Body,极大降低维护成本;

  • 如何管理测试数据,保证 Case 运行前能自动准备所需测试数据;

  • 如何管理配置信息,保证自动化用例多环境自动化切换。

除此之外,相比 Postman、SoapUI 这些工具,使用 REST Assured 完成接口自动化测试有如下优势:

  • 可以将测试脚本放到代码管理仓库统一管理,作为项目资产;

  • 可以对测试场景进行覆盖,而不是单独的某个接口,因为仅仅校验某个接口是否能调用成功并不能充分说明系统所涉及的业务场景正确;

  • 通过编写脚本完成自动化可以实现一切想实现的点,例如校验接口的 Shema、接口返回的数据和数据库数据是否相等、数据的初始化等。这是相比配置型接口测试工具 Postman、SoapUI 最大的灵活之处。

你能学到什么?

项目收益
  • 项目搭建了高覆盖率的接口自动化测试,可以缩短项目质量反馈时间,节省回归测试时间,做到真正的持续集成、持续上线。

  • 专栏中采用的 BDD 框架可以让项目的任何角色轻易读懂 case 的测试场景,测试场景背后是一个个实际功能点,优秀的接口自动化测试还可以作为项目的活文档。

个人收益
  • 对测试人员:提升技术壁垒,让只会手动测试的测试人员不易超越。

  • 对开发人员:掌握如何搭建接口自动化测试以及如何对各种测试场景进行取舍,有助于提高开发人员的测试 sence 和技术广度

专栏大纲

 

作者简介

现在订阅专栏,还能与作者互动,加入专栏读者专享的学习交流群。

点击阅读原文,试读更多免费章节

这篇关于那些让你目瞪口呆的 bug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/401654

相关文章

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

JavaBug系列-解决SpringBoot返回Xml结构的问题

JavaBug系列之SpringBoot返回Xml结构的问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 作者:Java医生 教学: Java企业项目辅导,专注于辅导新入职员工,解决各种问题! V:study_51ctofx 一、关于错误信息 如图,SpringBoot请求返回Xml格式信息 通过以上信息分析,

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

【解决bug之路】npm install node-sass(^4.14.1)连环报错解决!!!(Windows)

有关node-sass的深入分析可参考:又报gyp ERR!为什么有那么多人被node-sass 坑过? 主要有如下三方面错误,请自查: 1.node,npm版本需与node-sass版本匹配,像node-sass(^4.14.1)就得node 14.x版本才可以,node 16不行 gyp ERR! build error15 gyp ERR! stack Error: `

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是mybatis得xml中if判断得问题,传值名字不匹配依旧可以进行判断,如下图 传值userName,但是有意思得事情出现了,进了if,并且没有报错,尝试了两次都是这

彻底解决魅族手机无法彻底卸载应用的bug

使用Flyme系统的同学可能会遇到一个问题: 卸载了某些软件(例如通过开发者模式调试安装的应用)后,实际这个应用还残留在系统,当你用低版本或者其他签名的apk覆盖安装的时候会提示“安装失败”,要求你卸载后重新安装。 可是无论你从应用列表寻找还是清理垃圾,都根本找不到这个应用。 闹鬼?这个bug一直伴随着flyme,可怜工程师们竟然一个都没发现。 今天笔者教大家一招解决这个问题。

今天做了freemaker 导出word文档 的bug修复,解决 \n换行 问题

结合Freemaker导出文件 public void exportSimpleWord() throws Exception{// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致Map<String,String> dataMap = new HashMap<String,String>();dataMap.put("username", "张三");dataMap.

【软件测试】软件测试-----什么是Bug?Bug是如何分级的?Bug的生命周期是怎样的?如何描述一个Bug?

博客目录 一.软件测试的生命周期二.BUG的定义和级别2.1 bug的概念.2.2 如何描述一个bug.2.3bug的级别2.3.1 bug分级的意义.2.3.2 bug的四种级别. 三.BUG的生命周期.四.当与开发人员发生冲突该如何处理(高频面试)五.总结 一.软件测试的生命周期 软件测试贯穿于软件的整个生命周期,针对这句话我们一起来看一下软件测试是如何贯穿软件的整个生命周

【ListView】有关填充bug

假设要实现如下效果 ListView里若使用RelativeLayot则会出现错误 得不到垂直线的填充 线性布局的高度设置为match_parent会使高度为0,必须给它一个固定值,比如20dp ListView建议使用LinearLayout在最外层,而最外层的宽高无论如何设置都无法确定的,建议第二层也使用linearLayout来布局 【实现

ListView数据只有显示不全bug

Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小。解决的办法有如下两种: 解决方案1: 直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法,如果一定要在ScrollView中包含ListView,则参考解决方案2: