首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

求求你,别写祖传代码了

今天跟大家来分享一下如何解耦系统与修改代码中的坏味道。如有不对之处,欢迎指出,共同进步~ 二.实体类 实体类作为数据的载体,大家日常工作中绝对会接触到,但是你真的正确使用了吗?...如果只有一个实体的情况下,我从数据库里查询出来的数据拥有4个字段,把密码传递到前端肯定是不合适的。做一下脱敏,将password置为空。...说明: 1.DTO与VO我常常会混用,如果数据传输载体只会在controller展示层中被组装使用,那直接返回给前端也可以,如果与前端要求不一致的情况,需要编写对应的Converter类进行处理,不可以将转换逻辑编写在...直接映射业务错误码,使用ValidationUtil.isTrue()语义化形式强的表达方式,代码易读。...稍微好点的给你备注一下,再好点的给你定义常量。但是正确的做法应该是定义一个枚举,里面定义清楚1,2,3到底的作用是什么。

39110

API接口测试规范总结

(3)无操作权限 (4)特定的业务逻辑报错,涉及敏感的报错不应该有明确的原因,例如登录失败就不能报成密码错误或手机号码错误 (5)单位标准,时间,服务端使用时间戳还是直接日期类型,在接口定义里前后端要一致...(6)重复传参,字段唯一性校验,发送两次请求,接口需要做重复判断处理 3、必填参数 (1)接口文档要求必填的字段 (2)必填参数传参 传参类型和内容都正确 传参类型错误,参数类型非法,例:int传string...必填参数数值范围错误,数值越界 必填参数为空格,前面,中间,尾部 (3)必填参数不传,必填参数全部为空,必填参数部分为空 (4)必填参数组合,有些参数需要配合一起使用时需组合测试 4、非必填参数 (1...电商下单接口测试环境返回2000多张优惠券 推荐服务挂掉,电商h5页面接口返回全部商品 3、契约验证 如上 3、命名规范 接口、字段命名的含义准确且拼写无误 4、业务判断 1、约束条件 (1)数值限制...,没有对应权限的不应返回响应的数据 2、操作对象,例如:非自己创建的数据,不能修改 3、时序分析,例如:要先做完A操作才能进行B操作,即前置条件需要有,下个接口才能进行 5、安全校验 1、防遍历校验 2

84610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    API接口测试点

    一、测试流程 1、分析接口文档和需求文档(接口说明、请求方式、请求URL、请求参数、返回数据、返回实例) 2、接口用例设计 3、编写接口测试用例 4、接口测试执行 5、输出接口测试报告 二、如何快速评估自己的测试用例覆盖率...四、API测试用例设计 测试点 测试内容举例 入参校验---传递不同的入参,检查返回值是否正确【必选】 入参等于空字符串/null 入参类型(字符串、数值、布尔、数组、对象) 入参长度(字符串最小.../最大长度) 入参值域(数值最小/最大值) 入参是否在枚举值范围内 入参存在默认值 入参等于0/负数 入参组合(参数之间是否存在关联) 入参符合一定规则(比如账号只能由字母、下划线组成)...更新或删除类接口建议校验返回消息中 success 为 true 列表查询类接口建议校验返回的查询记录数是否正确,排序规则是否正确 数据详情类接口建议校验核心字段数据准确性 幂等---检查幂等逻辑正确性...(入参字段只能新增,不允许修改删除) 返回值兼容性(返回值字段只能按顺序新增) 功能兼容性(兼容老功能) 数据兼容性(兼容老数据) 透明性【可选】 接口对调用方透明 可维护性【可选】 检查日志和变更记录

    61920

    测试思想-测试设计 接口测试用例设计实践总结

    1、正向用例优先测试,逆向用例次之(通常情况,非绝对); 2、是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 > 参数数据类型自身的数据范围值限制...逆向用例: 针对是否满足前置条件(假设为n个条件),设计0~n条用例 2、是否携带默认值参数 正向用例: 带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例...异常流测试用例:异常容错校验 4) 编写描述 尽量逻辑化,这样方便后续的维护 5) 实践操作 接口样例 获取订单列表接口(多条件) 获取店铺指定期间的所有订单列表(多种条件组合),默认根据日期倒序排序...开发过程中,开发者肯定需要调用这些接口,如果类型错了,他们也就获取不到预期的数据,这些错误,他们肯定可以发现,所以,他们传递的参数值一般能保证类型正确。...(参数值超过类型最大值) 理由: 1、内部调用,参数值不是外部手动输入的,输入数据长度、值大小可控,当然如果数据一直增长,那再大的类型可能都无法保证不超出,比如自动增长的商铺id 2、部分参数的参数值是自定义的

    1.3K20

    软件测试_接口测试面试题_1.6

    常见的,需要登录Token 逆向用例:针对是否满足前置条件(假设为n个条件),设计0~n条用例 ②是否携带默认值参数 正向用例:带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其他不填写...可用性测试: 根据约定的协议、方法、格式内容,传输数据到接口经处理后返回期望的结果: 接口功能是否正确实现:返回值测试 - 返回值除了内容要正确,类型也要正确,保证调用方能够正确地解析;参数值边界值、等价类测试...; 错误和异常处理测试:输入异常值(空值、特殊字符、超过约定长度等),接口能正确处理,且按预期响应;输入错误的参数,接口能正确处理,并按预期响应;多输入、少输入参数,接口能正确处理,且按预期响应;错误传输数据格式...用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那用全局变量来传token参数 06. 依赖于第三方数据的接口如何进行测试?...输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理; 输入错误的参数、多输入、少输入参数,接口可能出现的错误; 安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等

    15610

    框架源码调试实战之easypoi异常解决方案精讲

    确实,很多人在遇到此类问题的时候往往想到的就是自己的代码有问题,或者是使用框架不当,未按框架的规则来编写代码才导致出现问题,而极少会想到是自己使用的框架本身就有问题,本身就有bug。...首先,我们将导出正确,和导出错误的两组参数进行收集,然后使用postMan分别进行调制,在关键代码初打上断点,如下图: 图片.png 图片.png 图片.png 图片.png 从上图可以看出,导出的关键代码在...sheet对象;3.第一次循环执行完毕后,才开始判断条件(do……while循环是先执行一次循环,再判断条件),这时候入参名称和sheet的名称相同,取反后便不成立,于是返回了有值的对象,反之则再次进入了循环...按理来说这是框架的bug,应该改框架的源码最正确,可这样得反编译后,修改编码了再打包进去,很费时费力。而在入参时每个都做判断会增大代码量,也容易忽视这个问题。...,更能体现变成思想能力,从源头消除隐患。

    1.3K10

    RobotFrameWork编写接口测试及如何断言

    前面我们介绍了,在真正实施前,需先定好多人协作过程中约定的接口用例规范,以及开始时,接口项目如何结构化分层,那么今天,我们来聊聊,用RobotFramework如何编写接口用例及如何对用例断言。...那么如何发现异常 ,简单来说,就是期望接口返回的数据与接口实际返回的数据不一致。而这个过程就需要通过合理地在接口用例中使用断言来实现。 那么有人会问,接口断言我加了啊?...那么接口断言,需要有几种呢,从上面接口用例设计的截图中大家也能看出,一般来说至少需要有三种:正常code断言(正常返回的code值)、异常断言(异常的code值和异常的msg错误信息)、接口关键数据断言...sondId的值与xxx数值进行比较,因为对于这类返回的字段来讲,歌曲id都会要求是大于0的数值,所以断言时比较返回的数据是否是大于0即可,对于返回的字符串字段而言,比如userLogo用户头像字段,比如返回的...当然如果有些特殊场景,需要用具体的数值比较,可另当别论。

    1.3K30

    框架源码调试实战之easypoi异常解决方案精讲

    确实,很多人在遇到此类问题的时候往往想到的就是自己的代码有问题,或者是使用框架不当,未按框架的规则来编写代码才导致出现问题,而极少会想到是自己使用的框架本身就有问题,本身就有bug。...首先,我们将导出正确,和导出错误的两组参数进行收集,然后使用postMan分别进行调制,在关键代码初打上断点,如下图: ? ? ? ?...null,而是创建了sheet对象;3.第一次循环执行完毕后,才开始判断条件(do……while循环是先执行一次循环,再判断条件),这时候入参名称和sheet的名称相同,取反后便不成立,于是返回了有值的对象...按理来说这是框架的bug,应该改框架的源码最正确,可这样得反编译后,修改编码了再打包进去,很费时费力。而在入参时每个都做判断会增大代码量,也容易忽视这个问题。...,更能体现变成思想能力,从源头消除隐患。

    88820

    基于Fuzzing和ChatGPT结合的AI自动化测试实践

    实践结果证明基于ChatGPT创建的推荐用例,已经能够正确执行并感知到代码异常错误。第二阶段做了初步调研,暂未实现功能。...3.4.1 用例生成速率 通过ChatGPT生成千条用例并执行完毕产出报告的速率在8分钟左右(测试条件:推荐用例生成的入参字段个数的手工测试,使用用例生成服务,可以节省大量参数构造以及用例执行所需的时间...当然,标准的MVEL语言有自己的编写规范,我们要做的是设定自己的编写方式,目的是降低使用者在撰写推荐入参时的理解成本。...我们现在可以通过自定义MVEL表达式编写方式,来解决具有业务语义参数的指向性生成,比如在接口参数中需要指定 "kdtId" 字段的取值范围在某几个特定的店铺范围内,可以在入参中写为 {"kdtId":"...生成内容的准确性(强依赖正确的JSON格式) ChatGPT在回答内容时,有一定概率返回错误的JSON格式,比较常见的错误是未闭合的JSON、错误的JSON格式、回答包含解释文案等。

    3.1K22

    测试经理: 工作五年你连服务端接口测试还不知道?

    详细介绍如下: 针对输入 输入主要是指接口的入参,我们平常的测试中,会先考虑正常的入参,以及异常的入参,异常情况包括:参数异常和数据异常,用例设计这块使用较多的是等价类划分和边界值分析 A、正常的入参...正常的入参很好理解,就是根据接口设计文档的入参标准,输入正常的参数,响应按接口设计文档的约定条件正常返回 B、参数异常 参数异常包括:参数为空,多参或少参,错误的参数 C、数据异常 数据异常:数据类型错误...,我们可以从入参的限制条件、事件的操作对象、业务的状态转换 A、 限制条件分析 数值的限制:字典,等级,行业相关限制,金额限制,分数限制等 状态的限制:有效|无效,在线|离线,拉黑|洗白等 关系的限制:...,如果在入站后车辆直接掉头不驶入高速业务如何处理?...,接口调用是否方便,接口是否可扩展,接口参数使用是否方便,接口的业务规则是否都正确,接口都整个服务的使用会产生那些影响

    49010

    JAVA安全编码标准学习分享

    6、使用stricftp修饰符确保跨平台浮点运算的一致性 7、不要尝试与无序的非数值NaN进行比较,因为表达式NaN==NaN总是返回false 8、检查浮点输入特殊的数值,比如Double.isNan...或任何它的基类 八、可见性和原子性 1、当需要读取共享基础数据类型变量时,需要保证其他可见性,勿必声明为volatile变量或者正确进行代码同步 2、认为只包含不可变对象的引用的类是不可变的,这样的假设是错误的...)进行同步,不可以使用map.keySet()进行同步 6、对那些可以被非受信代码修改的静态字段,需要同步进入 7、不要使用一个实例锁(非静态的类成员)来保护共享静态数据 8、使用相同的方式请求和释放锁来避免死锁...9、在异常条件时,保证释放已经持有的锁 10、不要执行那些持有锁时会阻塞的操作 11、不要使用不正确形式的双重检查惯用法,需要保证延迟初始化必须在多线程中是同步的 12、当类方法和类成员使用不同的内置锁时...4、使用安全管理器检查来操作敏感操作 5、不要使用反射来增加类、方法、字段的可访问性 6、不要依赖于默认的URLClassLoader和java.util.jar提供的自动化签名检查 7、当编写一个自定义的类装载器时

    4.7K10

    存储过程和函数

    如果不使用exec或者call命令的话,我们也可以使用pl/sql块的方式来调用。 2.创建in参数过程 创建过程时,可以使用输入参数将应用程序的数据传递到过程中。...为形参传递变量和数据可以采用位置传递、名称传递和组合传递3种方法。如果在定义参数时带有默认值,则在调用子程序时可以不为该形参提供数值。为说明多个参数传递的问题,我们编写一个计算3个整数和的过程。...但如果更新了一个过程的形参的名称,则对该过程的所有调用都必须进行相应的更新,会增加维护应用程序的难度。名称传递在调用子程序时指定参数,并使用关联符号“=>”为其提供相应的数值或变量。...通过查询数据字典US_ER_SOURCE,显示当前用户的包及其源代码,包代码的查询和过程代码查看区别就在type字段,包的type字段值为”PACKAGE”,包体的type字段值为”PACKAGE BODY...以上说法都不正确 4. 下列选项中,关于Oracle程序包的描述正确的是 ( )。 A. 在包规范部分定义公用组件 B. 在包体部分定义公用组件 C.

    7410

    或许是市面上最强的 Mock 工具

    所以学习如何利用最好的 Mock 数据是很关键的。这样做会降低前端开发者的工作量,降低开发费用,提高开发效率。以下是一些常见的 Mock 方法,我们可以根据具体的场景和条件来进行选择和配置。...主要有:开发进行单元测试因为单元测试只对目前的单元进行,所以必须保证所有的内外依赖关系都是稳定的,使用 mock 的方式来模拟基础单元依赖的其它单元,这样就可以把测试的重心放在当前单元的功能上,从而消除外部因素的影响...通过编写 Javascript 脚本设置响应内容,还可以直接使用内置函数设置“请求体触发条件”相关内容, 设置的信息等同于在“请求体触发条件”输入框中的设置,如设置 Header 参数或者请求体参数等,...示例:设置请求体参数,对触发条件进行判断输出符合条件的数值 判断触发条件“a”是否等于“eo_test”若等于则输出“成功”,否则输出“失败”。...对返回参数字段进行约束条件设置后,Mock 规则输入框会自动填入占位符 @eo.limit 并自动根据约束条件返回 Mock 数据。在操作区域内点击更多设置,如字段长度,最大值最小值,和值可能性等。

    1.1K30

    黑盒测试和白盒测试的区别

    (4)、调用其他方法接口的正确性:检查实参类型正确与否、传入的参数值正确与否、个数正确与否,特别是具有多态的方法。返回值正确与否,有没有误解返回值所表示的意思。...(7)、检查常量或全局变量使用的正确性:确定所使用的常量或全局变量的取值和数值、数据类型;保证常量每次引用同它的取值、数值和类型的一致性。...采用边界值分析法设计合理的输入条件与不合理的输入条件;条件边界测试用例应该包括输入参数的边界与条件边界(if,while,for,switch ,SQL Where子句等)。...对于每一个包或子系统我们可以根据所编写的测试用例来编写一个测试模块类来做驱动模块,用于测试包中所有的待测试模块。而最好不要在每个类中用一个测试函数的方法,来测试跟踪类中所有的方法。...测试用例设计的基本原则:(1)、一个好的测试用例在于能够发现至今没有发现的错误;(2)、测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;(3)、在测试用例设计时,应当包含合理的输入条件和不合理的输入条件

    9.2K21

    《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

    流程控制指的是在编写代码时,有不同条件下需要执行的代码,满足该条件后将会执行这部分流程;这一部分流程可以是一条代码、空或多条代码。那我们的代码如何体现这个流程控制呢?...那if 1>10:的指定流程改如何编写呢?我们可以看一下这一行代码中有一个冒号,冒号的一般作用是解释说明,那在代码中是否也可以使用冒号用作一种类似于“解释说明”的作用?...在前几节中,我们学习了如何跟已经运行的程序进行对话,那就是使用input,使用input可以接收用户输入的值;那我们现在编写一个程序查看该程序是否大于10。...首先我们查看一下我们的魔法到底哪里错了: ? 以上错误提示中,告诉我们使用数值进行判断,比较的两个值不能一个为字符串另外一个为整数。 怎么回事?难道我输入10不是数字?...我们看一下正确的代码: a=input("请输入一个数值:") if int(a)<10: print("密码正确√") b=input("请输入一个数值:") if

    52420

    第6章 | 循环控制流,return,loop,函数,字段,运算符,类型转换,闭包

    `是 // 输入中的一行),或者当输入已结束时返回`None`。...(第 9 章在讨论用户定义类型时会展示如何定义我们自己的方法。) Rust 通常会在引用和它们所引用的值之间做出明确的区分。如果将 &i32 传给需要 i32 的函数,则会出现类型错误。...笔记 比目鱼,很形象呀 或者,通常可以删掉类型参数,让 Rust 来推断它们: return Vec::with_capacity(10); // 正确,只要fn的返回类型是Vec let...元组也一样,不过它们的字段是数值而不是名称: game.black_pawns // 结构体字段 coords.1 // 元组元素 如果 ....与 C 不同,Rust 不支持链式赋值:不能编写 a = b = 3 来将值 3 同时赋给 a 和 b。赋值在 Rust 中非常罕见,你是不会想念这种简写形式的。

    10210

    【Python】利用Scapy进行四层主机探测

    通过-i参数,输入一个IP地址,探测该IP所在网段的存活主机。...第五行,利用parse_args()方法来获取定义的选项和参数,可以视作一种固定用法。 parseargs()方法返回两个值,其中options对象保存了所传递进来的参数值。...第六、七行,通过options.filename和options.address的方式调用参数值。 (2)判断用户是否传参 判断filename和address参数是否同时为空: ?...(1)查看帮助信息 输入 -h 查看帮助信息: ? (2)不传入任何参数 当不传参时,脚本提示报错并退出: ? (3)通过 -i 传入IP地址 成功探测到存活主机: ?...监测一个未开放的非知名端口,例如56789。 通过判断应答报文的proto字段是否为1,来确认主机是否上线。 代码其他部分与前面的TCP一致,这里就不再进行赘述。简单测试如下,成功探测上线主机: ?

    1.8K20

    测试工程师「 面试题 」那点故事!

    ,左表数据不足的地方用NULL填充 平均值avg():select avg(字段) from 表 where +条件 求行数量count():select count(字段) from +表 where...+条件 累计之和sum():select sum(字段) from +表 最大值max():select max(字段) from +表 最小值min():select min(字段) from +表...接口查看法 请求接口的URL是否正确,若错误,为前端bug body的传参是否正确,若错误,为前端bug 响应的状态码是否正确,若错误,为后端bug 响应的内容是否正确,若错误,为后端bug 求和响应都正确时...,如上输入参数取值0到100的开区间,即有效边界就是1和99; 断法:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法; 法:又称为策略表...区别二:从测试目的上:黑盒测试的目的是检测是否有不正确或遗漏的功能;数据或者参数上,输入能否正确接收;是否有数据结构错误或外部信息访问错误;性能上是否能够满足要求;是否有初始化或终止性错误。

    62810

    测试人员面试需要掌握的内容

    +条件 累计之和sum():select sum(字段) from +表 最大值max():select max(字段) from +表 最小值min():select min(字段) from...接口查看法: 1.请求接口的URL是否正确,若错误,为前端bug 2.body的传参是否正确,若错误,为前端bug 3.响应的状态码是否正确,若错误,为后端bug 4.响应的内容是否正确,若错误,为后端...,如上输入参数取值0到100的开区间,即有效边界就是1和99; 错误推断法:在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法; 判定表法:...功能: 在用户名与密码均不输入的情况下,点击提交,看toast提示信息 输入正确的用户名及密码,点击登录,验证是否可以正常登录 登录成功之后是否跳转相对应的页面 输入正确的用户名+错误的密码,点击登录,...区别二: 从测试目的上:黑盒测试的目的是检测是否有不正确或遗漏的功能;数据或者参数上,输入能否正确接收;是否有数据结构错误或外部信息访问错误;性能上是否能够满足要求;是否有初始化或终止性错误。

    58510
    领券