如今,软件交付的迭代速度越来越快,我们拥有为数不少的技术框架、开发工具、Web服务、自动化工作流等,为了推动更加收用户青睐的软件和服务。 自动化测试或者说测试自动化被认为是DevOps的主要瓶颈之一。如果没有先进的测试自动化设置,敏捷开发模式下的软件质量问题就有可能会被放大而不是减少。 本文将详细聊一聊无脚本测试,将其与常规自动化测试区分开来,并讨论如何使用无脚本测试工具来克服软件质量的瓶颈。 什么是无脚本测试 顾名思义,无脚本或无代码测试是一种使用工具而不是编写测试脚本来自动执行测试的方法。这些工具通常基于诸如Selenium、httpclient、request、robotframewor...

  YgmmQQ65rPv4   2023年11月02日   59   0   0 测试人员测试用例自动化测试

今天学到了一个非常有趣的API:java.lang.RuntimeaddShutdownHook,顾名思义,就是JVMshutdown的钩子,当JVM关闭时触发的。addShutdownHook方法是java.lang.Runtime类提供的一个方法,用于注册在Java虚拟机即将关闭时执行的代码块(也称为“钩子”或“hook”)。这个代码块会在程序终止之前被执行,无论是正常终止还是由于异常终止。 ShutdownHook介绍 具体来说,addShutdownHook方法允许你向Java虚拟机注册一个Thread线程,当虚拟机即将关闭时,这个线程会被启动并执行一些清理或其他的操作。 这个方法在以...

  YgmmQQ65rPv4   2023年11月02日   17   0   0 JavaJVM

Java是用于软件开发的最流行的编程语言,无论做自动化测试或者测试开发,Java依然是最重要的选项之一。 为什么要学习Java? Java很容易学习 Java是通用的,面向对象的,高性能,解释型,安全性和多线程语言。基本上,Java简化了建立网络连接所需的过程。它的安全模型可以防御很多攻击。许多繁琐的过程会在框架中自动运行,从而节省的时间。Java是静态类型的,因此在编译器中代码查找错误更加容易。Java是绝对初学者的绝佳第一语言。 Java很流行 Java是世界上最常用的编程语言之一。实际上,它在拥有开发人员,这意味着有一个庞大而成熟的社区,为Java程序员和学习者提供支持。如果遇到困难,可...

  YgmmQQ65rPv4   2023年11月02日   13   0   0 Java编程语言运算符

这是一篇有关GroovyShell的帖子,以及它如何在日常工作中为您提供帮助(只要您是软件开发人员)。无论您使用哪种编程语言或技术,都可以从GroovyShell中受益。唯一真正的要求是您能够编写(和阅读)小段Groovy代码。 入门 我认为Groovyshell的目的最好由官方文档来描述: GroovyShell,又名。groovysh是一个命令行应用程序,可轻松访问以评估Groovy表达式,定义类并运行简单的实验。 GroovyShell包含在Groovy编程语言的发行版中,可以在<groovyhome>/bin中找到。要启动GroovyShell,只需从命令行运行groo...

  YgmmQQ65rPv4   2023年11月02日   55   0   0 编程语言ShellGroovy

Groovy元组是有序的,不变的元素列表。Groovy有自己的groovy.lang.Tuple类。我们可以通过构造函数Tuple提供需要包含在其中的所有元素来创建一个实例Tuple。我们不能将新元素添加到Tuple实例或删除元素。我们甚至不能更改元组中的元素,因此它是完全不变的。这使得它非常适合用作需要返回多个值的方法的返回值。Groovy还提供了一个Tuple2仅可用于两个元素的元组实例的类。元素在Tuple2实例中键入。 在以下示例中,我们看到Tuple和Tuple2类的不同用法: packagecom.FunTester.demo importcom.fun.frame.Source...

  YgmmQQ65rPv4   2023年11月02日   34   0   0 Groovy删除元素元组

最近在学习和使用Web3j的过程中,发现一个非常奇怪的现象,当我使用了sendAsync()方法后,JVM进程一直无法退出。 一开始怀疑自己的代码有问题(因为引入了FunTester框架的jar包),开始注释了自己写的学习性质的测试代码后,问题依然存在。我这才意识到问题的严重性,可能不是我的问题。然后我又重新将代码和Web3j解耦开之后发现问题就消失了。 我基本判断就是Web3j某个API调用导致的这个问题。所以我开始使用排除法,最终确定了org.web3j.protocol.core.RequestsendAsync就是罪魁祸首。 Web3j异步回调 针对JVM无法退出的问题,之前也遇到过,...

  YgmmQQ65rPv4   2023年11月02日   33   0   0 Java线程池

在测试脚本的编写中会需要使用自定义异常,通常可以很容易地用Java创建自定义异常类。它可以是已检查或未检查的异常。下面将演示一个简单的示例来检查Java中自定义异常的创建。 如何创建自定义异常类 引发自定义Java异常 捕获自定义异常 检查输出 Java自定义异常 下面的类是创建自定义异常的简单Java类。 packagecom.fun.base.exception; publicclassFailExceptionextendsException{ privatestaticfinallongserialVersionUID=-7041169491254546905L; publi...

  YgmmQQ65rPv4   2023年11月02日   19   0   0 Javajson自定义异常

代理模式是一种常见的软件设计模式。所谓的代理者是指一个类别可以作为其它对象的接口。代理者可以作任何东西的接口:网络连接、存储器中的大对象、文件或其它重要或无法复制的资源。 有时候我们需要需要一个功能(通常是一个API)。该功能已经被某个类A实现了,代理类B实现相同的接口,并将操作交给A去处理,在这个过程中可以添加自己的功能。 之前只是听过一些说法,并未对Java代理进行学习,前些日子抽空学习了一点点,下面分享我在Java使用代理模式的一些Demo,主要分三类:静态代理、JDK动态代理和cglib动态代理。 创建一个简单的代理 我们从一个接口IUserProvider开始: packagecom...

  YgmmQQ65rPv4   2023年11月02日   51   0   0 Javaide动态代理

之前写了Go语言协程池的实践以及动态QPS的实现,本来计划就是开始做一些测试了,但是发现协程池的实现有些问题也有一些BUG,所以连夜修改了部分功能。 为了不咋不明真相的读者造成困扰,赶紧写篇文章报告一下。 缺陷&BUG 这里先把测试中遇到的问题和BUG梳理一下: 活跃协程数计算错误 执行数量和收到计数错误 QPS陡增和陡降的时候,无法及时增加压力和回收协程 协程回收存在问题不够优雅,效率太低 BUG分析 活跃协程数 这里计数错误的原因是因为在原来的实现中多次使用了ReduceWorker()和AddWorker()方法,导致没有将添加和减少的功能收拢到某一个时机统一处理,有两处重复...

  YgmmQQ65rPv4   2023年11月02日   34   0   0 Goi++Max

在之前的Socket学习中,主要都是基于两个Socket客户端:WebSocket和Socket.IO。在做测试的时候也是基于WebSocket消息的发送和接收为主要测试对象。但是对于超多Socket连接没有涉及。 在实践中会发现,这两个实现类都存在一个问题,为了维护1个Socket连接及其功能,通常需要创建多个线程。在计算机硬件资源有限的情况下,线程是稀缺资源,不仅仅是内存占用,也会增加CPU的负担。 之前解决这个问题的方案直接换成Go语言版本的Socket客户端。例如:/net/websocket和gorilla/websocket。 其实Java也有相对应的解决方案:netty。话不多说...

  YgmmQQ65rPv4   2023年11月02日   27   0   0 客户端ide.net

最近Ethereum又学了一点点,学会了主网冲浪和钱包的地址和私钥的生成。分享一点点学习成果,分为3部分: 申请infura主网的apikey 使用Web3jAPI网上冲浪 钱包生成和概念释疑 因为是初学小白,所以这中间又进行了一些基础知识的补习,才慢慢使用Web3j。如果你也想了解区块链,建议先了解足够概念性的知识,这里我踩坑比较多,幸好有个小伙伴随时答疑,这里表示感谢。 infuraapikey 在Ethereum官方的教程中,是给出了如何使用不同语言的Ethereum客户端连接主网同步区块链信息的。本人操作了两波,均已失败告终。后来去论坛看其他小白的帖子,发现这并不是说可以一键安装启...

  YgmmQQ65rPv4   2023年11月02日   39   0   0 区块链客户端API

最近看到冯唐一则短视频,其中部分内容让我大为震惊。他讲他在麦肯锡工作的时候,可以每周工作80100个小时,连续2年。 然而劳动法规定: 第三十六条 国家实行劳动者每日工作时间不超过八小时、平均每周工作时间不超过四十四小时的工时制度。 差不多是2倍,甚至3倍的工作时间了。之所以能坚持两年,冯唐总结为:身心健康。 总结起来两方面:身体和心理。身体要保持健康的状态,不能总生病,生病恢复时间比较长。心理要保持情绪的稳定,不用大起大落。不能经常性情绪低落,容易伤感(这点我觉得少点负面情绪,比如焦虑和抑郁)。 身心健康是你最大资本。 工作和生活都是一个长期的事情,需要在较长尺度(以年为单位)观察选择的影响...

  YgmmQQ65rPv4   2023年11月02日   12   0   0 时间比较电子设备

最佳实践(BestPractices)是指在特定领域或特定任务中,被广泛认可并被认为是最有效、最高效、最安全的方法或做法。它们是基于经验、实践和研究得出的,旨在提供一种可靠的指导,以帮助人们在特定情境下取得良好的结果。 性能最佳实践 在互联网企业,使用开源的框架、工具非常多,在使用这些软件的过程中如果面对性能问题,通常第一时间都会去官方渠道寻找性能相关文档。我们在使用这些软件进行编程时,在面对需要考虑性能场景下,通常都需要借鉴性能最佳实践。使用性能最佳实践的配置、参数以及组合。 在性能测试的经验中,各软件官方最佳实践基本都是普遍场景中性能最好的选择,而在于其他特例场景中,也都是在性能最佳实践周...

  YgmmQQ65rPv4   2023年11月02日   37   0   0 Java应用程序最佳实践

上期文章分享了ShutdownHook的API和基本使用,但是少了一些实际工作中的案例,总感觉没啥大用一样。 最近总结工作中可以用到ShutdownHook来解决一些实际问题的例子,分享给大家。 任务统计 FunTester测试框架定义了好几个自定义的异步关键字,例如fun、funny、funner等。一旦使用到异步,肯定会用到线程池。但是Java线程池销毁需要手动操作,之前的视线中是放在daemon线程中实现。如果我想在每次JVM关闭之前都统计一下线程池执行任务总数,就不能写在daemon线程中了,原因有二: daemon线程可能出现异常,导致退出。 用户可能会主动停止程序,例如C 虽然...

  YgmmQQ65rPv4   2023年11月02日   45   0   0 客户端服务器JVM

软件测试耗费时间和资源是事实。可以从不同的角度观察软件的测试。可以根据我们测试的内容来划分。例如,项目中的每个可交付成果,如需求、设计、代码、文档、用户界面等,都应该进行测试。 此外,我们可能会根据用户和功能要求或规范对代码进行测试,即黑盒测试。在此级别,我们将代码作为黑盒进行测试,以确保程序预期的所有服务都存在、按预期工作且没有问题。我们可能还需要测试代码的结构,即白盒测试。测试也可以根据测试中的子阶段或活动来划分,例如,测试用例生成和设计,测试用例执行和验证,建立测试数据库等。测试确保开发的软件最终没有错误。但是,任何过程都不能保证开发的软件100%没有错误。 尽管手动测试存在各类的问题,...

Java虚拟线程是Java19中引入的一项新功能,允许开发人员创建轻量级线程,也称为纤程或者协程。这可以提高Java应用程序的可伸缩性和效率,特别是那些需要处理大量客户端连接或并发请求的应用程序。 虚拟线程是使用一种称为ContinuationPassingStyle,简称CPS的技术来实现的。CPS是一种编程范例,其涉及在代码的不同部分之间传递程序的控制流,而不是依赖于中央执行线程。这允许比传统线程更有效地创建和管理虚拟线程。你可以通过本文了解更多细节。 虚拟线程与线程的区别 虚拟线程在几个方面与传统的Java线程不同。首先,它们是使用一个名为VirtualThreadFactory的新AP...

  YgmmQQ65rPv4   2023年11月02日   66   0   0 Java开发人员应用程序

在进行WebSocket协议连接或者WebSocket接口测试的时候,一旦遇到超大连接数量的场景中时,之前使用过的实现Java-WebSocket以及Netty-WebSocket两种实现就会显示出巨大的性能差距。当然Netty-WebSocket就是为了解决性能问题而来的。 so,今天我就来展示一下两个WebSocket实现在使用中具体的差异,本文集中在资源占用上,特别是线程占用。 理论差异 Java-WebSocket 据可靠资料显示,两者的差异主要以在管理WebSocket连接时使用的线程数不同,以下是使用org.java_websocket.client.WebSocketClient...

  YgmmQQ65rPv4   2023年11月02日   41   0   0 Java客户端.net
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~