• 同样是断言,为何 Hamcrest 如此优秀?测试灵魂三问,该如何回答?


    本文为霍格沃兹测试学院学员的课程学习记录,供参考,想进一步深入学习?文末获取入群方式。

    Junit 自带原生断言 Assert,常用的一些断言,如 assertTrue、assertEquals、assertNotEquals
    等,总体来说都是比较简单的相等语义判断的断言。如果需要断言一个约等于的值或者有个区间波动的值,是否包含某个值等,这个时候 assert
    就无法直接满足需求了。这里就需要一个更强大灵活的断言—— Hamcrest 断言


    ** Hamcrest 断言**

    根据项目对象模型(POM)的概念,Maven 可以管理一个项目的依赖关系、构建、报表以及信息中心的部分文档。

    hamcrest 断言 maven依赖:

    hamcrest支持多种语言,这里以 Java 为例:

    进入到 hamcrest 断言的 Matchers 类中可以看到其中包含了相当丰富的断言匹配器,能更大程度上实现各种复杂断言场景:

    官网也对断言进行了分类和说明:

    先来看hamcrest断言和原生断言的写法区别,在官方文档中给出了的第一个实例如下:

    在Junit4的官方也给出了说明:

    可以看到,hamcrest 会统一先使用 assertThat 来声明一个断言,然后再在内部进行具体匹配器的断言细节,期望值和实际值进行对比;有了
    hamcrest 断言,就可以直接摒弃原生的断言了~

    ** Hamcrest 断言实操演示**

    Hamcrest断言功能很强大,那么如何 get 这个功能的正确打开方式呢?接下来用实操演示,带领大家一起来进行实操。毕竟:内化于心,外化于行才是最重要的。

    • equalTo : 判断相等

    在失败时可以看到打印了我的说明:actual value equal to 10 以及失败的对比,<> 表示原始类型

    • closeTo : 接近于多少,给定误差值源码中是这样写的

    需要给定两个 double 类型的参数,一个是你要操作的数值,一个是误差范围;另外要注意的是实际值也必须是 double 类型才可以进行对比:

    • anyOf : 后面可跟上多个匹配器,只要其中任何一个满足条件就通过

    • allOf : 后面可跟上多个匹配器,只要其中任何一个不满足条件都不通过

    另外还有很多常用的匹配器,比如

    • hasItem, hasItems ,contains,等;具体的可以参考官方文档和类库

    hamcrest官方文档:

    http://hamcrest.org/JavaHamcrest/tutorial

    官方GitHub:

    https://github.com/junit-team/junit4/wiki/Matchers-and-assertthat

    Mvnrepository:

    https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core/2.1

    想深度掌握断言机制的同学,这里也推荐霍格沃兹测试学院独家特色课程:

    https://ke.qq.com/course/254956

    ** _
    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
    QQ交流群:484590337
    公众号 TestingStudio
    点击获取更多信息

    最近,测试人朋友圈被 3 个直击灵魂的问题刷屏了。

    1 问: 为什么这个 Bug 测不出来?

    2 问: 测试怎么测得? 到底会不会测?

    3 问: 测试快点啊! 为什么总是测试拖后腿,最后才报 Bug?

    这灵魂三问,真是「 测试听了会沉默,QA 听了会流泪 」,心中戚戚然,又如鲠在喉,不吐不快!

    各位测试同仁,你怎么看?

    小编特意挑选了 TesterHome 社区几位测试老司机的回复,附文如下,供大家探讨!

    另,请大家在评论区留言,精彩回复赠送精美礼物(测试好书、定制版卫衣、帆布包等)。

    by @混子 ****

    如果是研发问,直接怼回去

    1. 这么简单功能也出错?

    2. 研发怎么开发的,会不会开发?

    3. 研发能不能快点,为什么最后才给我们打包?

    如果是领导问,马上认错

    对不起!对不起!对不起!

    by @结婚兔子 ****

    具体问题具体分析吧:

    1. 复盘下为什么没有测出来? 是开发单元测试覆盖度不够,用例覆盖度不够,还是事实上就是难以覆盖到,之后改进。

    2. 把测试流程分享出来 ,邀请业务方、研发、测试等等相关人员,一起完善。

    3. 从流程下手
    ,需求开发测试都要排期,测试排期要有“底线”.实在不行,只能用老办法,要么砍掉不核心的需求,要么延期;另一方面,做测试提效,自动化测试、提测质量准入、测试左移右移那一套都用上。

    by @BNN ****

    1. 分析缺陷产生原因、复现条件 :测试环境能否复现?线上环境为什么没有复现?没有复现影响多大?—— 如果是漏测,那就得认;

    2. 摆事实
    :讲清测试方案、设计、方法,确认这个方案当时有没有获得一致评审通过?如果当时已经通过了,那就是大家的锅;如果这些没做,那测试当然就负主要责任;

    3. 看看是不是测试阶段总在做一些验收性的测试?
    如果是,验收性测试本身就比较耗时间,测试时间不足,测试的深度自然也不足;如果本身不是做一些验收性的测试,测试能够提前介入,一般不会“最后才报
    Bug”,这里只需要列举“提前”报的 Bug。

    by @Ouroboros ****

    看情况吧。 如果是自己问自己,那么就好好分析下。

    如果是开发要甩锅 ,那么就按 @混子 兄弟说的怼回去。

    如果是领导问到了 ,那就是时间紧、技术债多、开发不自测、基础设施差、沉淀差、产品瞎B改,再道个歉,许诺个美好的未来。

    最后说要用 TDD,需要一波 Money
    或者其它激励,来偿还技术债,比如让开发自测需要推动,基础设施需要组织人做,都需要钱和资源。嗯,这么看,好像还是个增收途径。

    各位同学,请在评论区留下你的精彩回复。也推荐大家加入测试大咖公开课群,收听测试开发干货分享和大咖解读!

    - 测试大咖公开课 -

    加小助手微信,回复「 公开课

    收听测试开发干货分享和大咖解读

    往期推荐

    -测试工程师职业发展漫谈|大咖深度分享

    -面试|今日头条测试开发岗位面试题目回顾

    -通关这 8 道面试题的测试工程师,年薪都在 30W+ 以上!

    -面试|互联网大厂测试开发岗位会问哪些问题?

    -面试|Python 自动化测试面试经典题目回顾

    -面试|百度测试开发岗位面试题目回顾

    -面试|卡掉不少人的一道腾讯算法面试题,高手来试试?

    -一道有趣的大厂测试面试题,你能用 Python or Shell 解答吗?

    -面试| 如果测试你完全不熟悉的系统,你会怎么办?

    -测试开发真题|测试老兵进阶突破,成功拿下大厂 P7 Offer!

    ** ** ** ** 点一下好看,就少一个 Bug!********

    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
    QQ交流群:484590337
    公众号 TestingStudio
    点击获取更多信息

  • 相关阅读:
    jQuery之元素操作及事件绑定
    JS中常遇到的浏览器兼容问题和解决方法
    九九乘法表
    全选复习
    css基本知识
    js数组
    Spark常见错误问题汇总
    被问懵逼的Kafka面试题
    被问懵逼的数仓面试
    Flink模拟项目: 订单支付实时监控
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15812628.html
Copyright © 2020-2023  润新知