首页
学习
活动
专区
圈层
工具
发布

为什么你一直在写假的测试用例?

在测试REST资源时,通常会有一些正交的职责需要关注: HTTP响应代码 响应中的其他HTTP头 有效负载(JSON,XML) 每个测试用例应该只关注单个职责,并包含一个断言。...清晰的关注点分离总是有好处的,并且在这种黑盒测试中就更重要了,因为通常的情况是在一开始就编写复杂的测试用例。 集成测试的另一个重要原则是坚持单一抽象层级——业务逻辑应该在更高层级的用例中完成。...诸如创建请求、向服务器发送HTTP请求、处理IO等细节应该委托给第三方库,而不是自己实现并且到处散落在测试用例中。 2....不管出于什么原因它失败了,那么在被修复之前,我们就不需要查看这个API相关的测试用例。 3....依赖 测试工具和测试用例使用的库在Maven Central上都是可用的,如下所示: HttpClient Jackson 2 Hamcrest (可选的) 7.

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

    Go 语言反射和范型在 API 服务中的应用

    API 接口中抽取参数的逻辑大量重复   API 接口自然是要获取传过来的数据,不同接口要获取的数据自然也不一样,如果不做特殊处理,必然是每个接口都有一堆功能重复的从 request 里获取参数的代码。...API 框架提供的抽取参数的方式并不满足需求   当然 API 框架会提供这些功能,不过有些情况不能满足需求,比如gin-gonic,提供了将将 request 转为对应结构体的函数,但存在两个问题,第一个问题是参数区分大小写...还有一点就是要能获取到 struct 结构体中每个参数的类型,并且给其赋值,Golang 提供的 reflect 机制可以很好的完成这项功能。 4....实例   以下代码先是建立了数据库连接(请注意,数据的连接需要提前建立好,并按照代码中的用户名、密码、地址、端口和数据库名称建立,不然代码无法运行成功);之后在数据库中建立了一个叫 User 的表;之后有一个创建用户的接口...ExtractParamFromBody 是通用的参数抽取函数,不光是 User 类型,interface{} 是 Golang 中范型,可以对应任何结构体。

    1.3K20

    为什么说用例设计在软件开发中很重要

    用例(Use Case)设计可以说是软件设计的基本功,我现在还记得上大学刚学UML的时候,老师第一个教的图就是用例图,后面其他的图几乎都是在围绕用例而展开。但为什么在工作中看到画用例图的反而少了?...我可能要先说一下我的观点:初级程序员画时序图,中级程序员画类图,高级程序员画用例图。为什么这么说?...在用例的继承关系中,父用例表示流程中共性的部分(通常是大体的流程框架),子用例可以复用父用例的流程框架,再扩展实现自己的特殊逻辑。...这个...看起来是不是很像设计模式中的模板方法模式(Template Method Pattern) 因此在代码实现上,也可以用父类和子类来实现: package cn.louisxiv.baozi.domain.service...下次老板问你为什么这么拆的时候,希望你不要再回答:“一般一个微服务提供8~10个接口是比较合理的”这种话。

    48810

    HTable API有没有线程安全问题,在程序中是单例还是多例?

    在单线程环境下使用hbase的htable是没有问题,但是突然高并发多线程情况下就可能出现问题。   ...以下为Htable的API说明: This class is not thread safe for updates; the underlying write buffer can be corrupted...因此如果客户端对于同一个表,每次新new 一个configuration对象的话,那么意味着这两个HTable虽然操作的是同一个table,但是建立的是两条链接connection,它们的socket不是共用的,在多线程的情况下...  当然最方便的方法就是使用HTablepool了,维持一个线程安全的map里面存放的是tablename和其引用的映射,可以认为是一个简单的计数器,当需要new 一个HTable实例时直接从该pool中取

    31520

    新手学robotium-robotium初探

    2.由于测试类型没有指定待测活动类型,因此在类型的构造函数里,采用反射机制通过应用主界面的类型名称获取其类型构造测试用例,如代码的第 16 行。   ...3.在测试的准备函数 setUp 中,一般会通过调用 getInstrumentation() 和 getActivity()函数获取当前测试的仪表盘对象和待测应用启动的活动对象,并创建 robotium...跟仪表盘测试用例中的 setUp 函数一样,禁用触控模式、创建启动活动的意图对象这些操作都应该在 getActivity() 函数之前调用,如第 20 行。...4)因为 robotium 进行的是集成测试,在测试过程中可能会打开多个活动,所以在测试结束后的扫尾函数 tearDown 中,会调用 robotium API 关闭所有的已打开活动,为后面执行的测试用例恢复测试环境...•Robotium测试用例是突出可读性,相比标准 仪器测试。 •滚动Robotium框架活动是自动处理的。

    1.1K20

    像 google 一样测试系列之四:技术篇

    (1)private方法是否可测(不管是否被UI层调用的)。 业务代码中,private 方法通常被UI层调用,如下,被按back键时调用,如果按一般的测试java层是测试不到的。...结论:Activity里的public 返回和static返回 可测。 (4)相关依赖是否可mock。 如下,purify业务app中,有第三方库的调用,这个调用里存在异步线程的处理。...mock后的测试样例代码如下: 结论: 可Mock。 (5)接收参数的Activity是否可测。 如下,业务代码中,Activity启动时含有对启动intent是否有参数的逻辑。...业务有如下图异步线程: 测试样例如下: handle.post() 样例: 如下,业务代码使用了内部handle来处理消息,当执行到handle.post() 因为是异步,测试用例无法获取正常结果。...就写在一起了: ReflectUtil是已经封装好的反射工具类。 七、业务代码直接调用 在模式和方案选型时,是否能直接调用业务代码,也是一个衡量项。最好是能直接调用。能省事省力。

    2.1K10

    为什么在Java中没有为空字符串设置访问API呢 | Java Debug 笔记

    为什么在Java中没有为空字符串设置访问API呢?...=========================熟悉Java的朋友都知道,当我们通过双引号创建字符串的时候,Java 会将字符串存储在常量池中以供我们下次使用但是为什么String类不为我们提供一个对空字符串的引用呢因为这样做至少可以节省了编译的时间...,因为我们引用API的话编译器就知道我们引用现有的常量而不会再去对他做检查是否已经存在常量池等操作。...我个人认为这某种意义上来说这有点“代码味道”所以说,关于String的空字符一说在Java中中是否有更加复杂的涉及考虑还说设计者没有考虑到这个问题呢回答1===String.EMPTY是12个字符,而"..."仅仅2个字符,它们在运行时都将引用内存中完全相同的实例。

    58410

    前端单测,为什么不要测 “实现细节”?

    “为什么不要测代码实现细节?”...看起来非常完美,而且在 UI 真实的使用场景中也没任何问题,但当我们回去跑一下测试用例,kaboom,会发现 setOpenIndex sets the open index state properly...因为我们只测了业务中非常小的一个实现细节,所以为测这个实现细节,我们不得不补另外很多测试用例,来测其它毫不相关的实现细节,那这样我们永远都不可能补完所有实现细节的测试代码。...然而 Enzyme 的测试用例基本都是在测这些别人根本不 care 的内容。...这也是为什么 Enzyme 测试用例为什么这么容易出现 “假错误”,因为 当用它来写一些 End User 和 Developer 都不 care 的测试用例时,我们实际上是在创造第三个用户视角:Tests

    1.4K50

    IOC容器-实现原理反射

    在上一篇中我们通过spring的IOC容器,成功实例化了我们指定的对象,在这一篇中我们将简单了解一下spring底层到底是怎么实现上述功能呢。也就是Java中反射技术。...由于反射技术是Java API中提供的功能,所以在这里我们不在做过多的介绍,而是通过测试用例,来了解一下反射技术的具体应用。 下面我们将用反射技术,来实现上一篇中IOC容器实现的功能。 属性注入 ?...上面的代码基本实现了我们上一篇中IOC容器的功能,但是在用Java反射技术实例化对象时,如果方法是私用的也就是private,那么我们通过上述的方式调用则会出现问题,请看下面测试用例。 ?...然后我们直接执行上一个已经通过的接口注入的测试用例。看一下执行结果。 ? 我们看虽然我们测试用例什么都没有改,但上述结果还是出现了异常。这是为什么呢?...这是因为在使用Java反射时如果要访问private类型的方法或字段必须要取消Java语言的语法检查。

    1.1K20

    基于docker的分布式性能测试框架功能验证(二)

    jar包中或者classpath目录下。...Part2master调度机 这里我只实现了一种调度功能:就是提供一个接口,该接口返回一个测试用例(尚未封装对象)。提供给slave测试机请求,返回给测试机测试任务(测试用例)。...1master脚本 这里写了三种不同的返回参数方式,主要是为了匹配测试用例的执行方法,后面介绍测试用例的时候会详细讲解用途。...2测试用例 其中com.funtester.main.DcsCase.main是jar包中的一个测试用例,类代码如下: import com.alibaba.fastjson.JSONObject import...3slave测试机 这个逻辑通过简单的轮询去master调度机提供的接口获取测试任务或者测试用例。然后解析,执行测试用例。

    47520

    网易云音乐测开面筋

    针对这个系统设计测试用例 写一个查找第 K 大的数的伪代码,然后面试官也说了一种思路问这样可以吗,我说不行,讨论了一会儿  二面(业务复面,42分钟) 自我介绍 一面都问了啥 最后一个写的是伪代码?...那你代码写的怎么样,把这个代码写出来吧 你把这个题你的思路给我讲一下 这个题还有别的思路吗,这两种思路你觉得哪个好,为什么 数据库多表查询 为什么选测开 (这不是 hr 才问的吗??)...现在有一个 APP,是智能控制灯的亮灭的,针对这个设计测试用例2....现场有这么多灯,你如何测试哪一个等坏了  (上面两个测试场景说了比较久,感觉面试官想看思维活不活跃) 你为什么选测开 有什么问题问我  HR面(38分钟) 自我介绍 说一件你觉得最沮丧的事 说一件你最有成就感的是...你的职业规划 对加班的看法 如果让你学习 java 你会怎么做 为什么选测开 (总共问了三遍的问题...)

    1.9K31

    如何才能避免漏测事故的发生?

    在我们进行测试时候,会遇到漏测的事情发生,不管你是“初出茅庐”,还是从业多年的“老司机”,在测试的时候都会遇到过这样的事情,那么出现漏测的原因都是有哪些,如何才有有效的避免它再次发生,是我们需要考虑的问题...出现漏测的原因,无外乎一下几种情况测试用例编写的时候没有考虑周全,测试场景出现了遗漏而导致漏测。测试需求不清晰,编写测试用例的颗粒度过于粗,导致漏测。...需求进行了变更,对应的测试用例没有进行更新,按照原来的用例执行导致漏测。测试过程中没有按照严格的要求进行执行,导致漏测,测试时间不充足,导致一些功能点在测试过程中被忽略等等。...六、 缺陷驱动的测试增强根因分析(RCA):对每个缺陷追问“为什么遗漏?”(如“是否缺少异常场景用例?”)。将高频缺陷类型(如空指针异常)固化为测试检查项。...测试右移:监控生产日志(ELK/Grafana),将用户反馈的问题反向补充测试用例。用例资产库:维护可复用的测试用例集,按功能模块分类,避免重复设计。

    73610

    接口异常测试:自动生成用例的系统化思路

    本文从 测试开发 / 平台化 / 自动化 视角,系统拆解接口异常测试如何实现自动生成测试用例。...一、为什么异常测试必须“自动生成” 在真实项目中,接口异常测试普遍存在几个问题: 人工只测“想得到的异常” 用例零散、不可复用 接口一多就直接放弃 而接口异常的特点恰恰是: 数量多(参数 × 规则 ×...四、接口定义:用例生成的“唯一事实来源” 1. 接口定义从哪里来 优先级推荐: OpenAPI / Swagger 内部 DSL / 注解 代码反射 没有结构化接口定义,就无法规模化生成异常用例。...典型用法: 从接口文档中抽取隐含约束 生成业务异常场景 对失败用例自动归因 注意: AI 更适合生成“候选异常”,最终仍需规则收敛。...为什么不用“纯测试框架” JUnit / PyTest 适合写测试 不适合管理大规模生成用例 平台化必须解决: 调度 存储 分析 12.

    9510

    大模型生成单测用例的评估方案

    生成成功的标志是: 1) 可以生成单元测试用例 2) 该用例可以被编译、执行通过 3) 被测方法被调用 4) 有断言 评估框架 类别 具体项 代码场景 对各种代码场景的覆盖 过程 用例的通过率和正确率%...Utils ·静态方法调用-SDK类,如定时器 ·静态方法调用-枚举类 ·接口/实现的调用 ·抽象类/实体类的继承 ·异常(受检异常、非受检异常、try-catch-finally) ·文件I/O操作 ·反射代码...,期待使用MockStatic进行mock 单元测试用例筛选(Selection) 单测用例如果能自动生成,用例编写的成本就会极大降低,转而会对用例的维护带来压力。...筛选条件 方案 1 缺陷对应的测试用例优先保留 测试用例的方法上带有 @Bug 或者 @OnlineBug 的注解 2 接口覆盖率100%,应保留接口自动化覆盖的用例 每个接口至少要保留一个单接口的集成测试用例...(可能受用例执行顺序的影响,每次筛选的结果会不一样) 4 用例集的执行耗时最小 在3的基础上,如果有多个用例可选,则选择耗时最短的(要考虑 setup/teardown) 方案局限性 就代码生成单测

    1.7K10

    像 google 一样测试系列之二:方向篇

    这里会因为人的经验,单测写法等各种原因会认为现有代码不可测。同时,输出的可测案。 例上,开发在短时间内也难以修改。新代码也不一定会按照可测性来。...然而为什么我们却达不到,甚至只能是20%。...[1505725461895_8438_1505725660914.png] 三、google单测中 2种测试代码的运行机制 1、google单测之Test运行机制: (1)Test 在google...包括 Local Unit Tests; (4)Junit和Testng支持:普通测试用例支持Junit和Testng,但Application的测试只能用Junit; (5)运行原理:测试代码和源代码分别...build成一个app,安装到真机,但是是运行在同一个进程里,因此可以调用业务代码和反射执行。

    1.8K10

    测试匠谈 | 别让测试用例成为负债 — 三个实用的接口测试建议

    本文聚焦于接口测试中的功能测试,提出了三个实用的建议,帮助开发团队在长期项目中有效地管理和维护测试用例,避免测试用例成为负债。 背景与挑战 在后台,接口测试用于验证接口的功能、性能、安全性和可靠性。...我们团队也制定了一套写接口测试用例的规则。 按接口的代码映射测试用例 按接口的代码(分支覆盖或条件覆盖)映射测试,这个观点隐含的意思是接口测试是白盒测试,那为什么接口不是根据对外的表现如契约来映射呢?...在实现中,是否需要验证后4位的逻辑是封装在『识别结果』类中。 验证后4位有基于识别风险和产品规则等 5个原因,并且每个原因只用一个测试用例就可以覆盖。...API,受限于其实现,可能不会路由到测试者的私有环境: 如果开通接口有改动,在改动之后想测试对识别是否有影响,则使用上面的测试用例无法测出这个影响,上面的测试用例变成一个无效的测试。...上面的分析得出,在系统内,只有为那些没有前置步骤的接口编测试用例时才需要用到可测试性API。另外,可测试性API还广泛用于产品的验收,这些可测试性API可以直接构造复杂的需求验收前置条件。

    28010

    Junit5框架详解

    一个标准的测试用例** import static org.junit.jupiter.api.Assertions.fail; import org.junit.jupiter.api.AfterAll...testWillBeSkipped() { } @Test void testWillBeExecuted() { } } @Tag JUnit5@Tag可用于从测试计划中过滤测试用例...它可以帮助针对不同的环境,不同的用例或任何特定要求创建多个不同的测试计划 通过仅在测试计划中包括@Tag标记的测试或通过从测试计划中排除其他测试来执行测试集 ## 可以在测试类或测试方法或两者上应用@...ClassATest { @Test @Tag("userManagement") void testCaseA(TestInfo testInfo) { } } ## 在单个测试用例上应用多个标签...assertThat(map, hasValue("test2")); 2、Java注解和反射 上面我们介绍了Junit5的基本使用后,下面我们来看看注解和反射,为什么我们要学习注解和反射,这块在设计测试框架以及多框架功能扩展的时候我们就会用到注解和反射

    1.7K40

    你每天跑这么多自动化用例,能发现BUG吗?

    我们希望一组测试用例不仅能够“触发被测代码的各种分支”,还能够做好结果校验。 当业务代码出现问题的时候,测试用例可以发现这个问题,我们就认为这一组测试用例是有效的。...我们对测试用例有效性的理论建模是: >> 测试有效性 = 被发现的问题数 / 出现问题的总数 为什么要评估测试用例的有效性? ? 测试用例有效性评估的方法?...我们认为: 一组Success的测试用例,在其被测对象发生变化后(注入变异后),应该至少有一个失败。 如果这组测试用例仍然全部Success,则这组测试用例的有效性不足。...为了全自动的进行测试有效性评估,我们做了一个变异机器人,其主要运作是: 往被测代码中写入一个BUG(即:变异) 执行测试 把测试结果和无变异时的测试结果做比对,判断是否有新的用例失败 重复1-3若干次,...内存注入:修改API接口的返回内容,看测试用例是否能发现该问题 静态扫描:扫描测试代码里是否做了Assert等判断,看Assert场景与被测代码分支的关系 ...

    2.2K30

    干货 | 携程酒店360度Java质量控制

    常见的测试保障体系 携程酒店测试的质量保障体系在传统的质量体系中增加了一些 “保镖”,不同的是,其中一部分增加的“保镖”是机器人。这样既增加了被测系统的安全性,也适当的降低了成本。...目前酒店测试持续集成包含了API,UI以及Job这几种自动化测试,且除了UI自动化之外都实现了无码测试用例的编写,测试人员可以很便捷的编写和维护相应的测试用例 3....回归测试 在回归测试中,持续集成依然会继续进行,而且通过在早期对测试用例执行已经进行过分析,此时测试用例的质量已经得到了加强。测试自动化的实施效果应该会更显著。 5....为什么要做代码覆盖率 前面我们介绍酒店目前的质量保障体系,那么大家可能会注意到,在整个测试周期内会产生大量的测试用例,单元测试用例,API测试用例,UI测试用例,Job测试用例,功能测试用例等等。...5)覆盖率统计数据查看 覆盖率统计完毕后,可以通过在Sonar中进行代码覆盖率数据的查看。我们也会通过Sonar的Api把覆盖率数据落地到服务器的数据库中。

    1.1K40
    领券