
正文
java测试代码性能 java编写完测试代码 怎么运行
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
北大青鸟java培训:Java初期学者程序性能容易的问题测试?
1、介绍在开发中,性能测试是设计初期容易忽略的问题,开发人员会为了解决一个问题而“不择手段”,所参与的项目中也遇到了类似问题,字符串拼接、大量的调用和数据库访问等等都对系统的性能产生了影响,可是大家不会关心这些问题,“CPU速度在变快”,“内存在变大”,并且,“好像也没有那么慢吧”。
有很多商业的性能测试软件可供使用,如Jprofiler、JProbeProfiler等,但在开发当中显得有些遥远而又昂贵。
2、目标本文将讲述如何利用语言本身提供的方法在开发中进行性能测试,找到系统瓶颈,进而改进设计;并且在尽量不修改测试对象的情况下进行测试。
3、预备知识面向对象编程通过抽象继承采用模块化的来求解问题域,但是模块化不能很好的解决所有问题。
有时,这些问题可能在多个模块中都出现,像日志功能,为了记录每个方法进入和离开时的信息,你不得不在每个方法里添加log("insomemethod")等信息。
如何解决这类问题呢?将这些解决问题的功能点散落在多个模块中会使冗余增大,并且当很多个功能点出现在一个模块中时,代码变的很难维护。
因此,AOP(AspectOrientedProgramming)应运而生。
如果说OO(AobjectOrientedProgramming)关注的是一个类的垂直结构,那么AOP是从水平角度来看待问题。
动态代理类可以在运行时实现若干接口,每一个动态代理类都有一个Invocationhandler对象与之对应,这个对象实现了InvocationHandler接口,通过动态代理的接口对动态代理对象的方法调用会转而调用Invocationhandler对象的invoke方法,通过动态代理实例、方法对象和参数对象可以执行调用并返回结果。
说到AOP,大家首先会想到的是日志记录、权限和事务,是的,AOP是解决这些问题的好办法。
性能测试主要包括以下几个方面:计算性能:可能是人们首先关心的,北大青鸟认为简单的说就是执行一段代码所用的时间内存消耗:程序运行所占用的内存大小启动时间:从你启动程序到程序正常运行的时间可伸缩性(scalability)用户察觉性能(perceivedperformance):不是程序实际运行有多快,而是用户感觉程序运行有多快.
相关问答
Q1: 有了java代码,如何测试
你这说的太笼统了,应该具体些。
有了Java代码之后
1、可以在代码中写些测试的方法,把你想要验证的东西,输出看一下。
2、可以用Debug的形式,跟踪代码执行,验证程序的逻辑是否正确。
3、利用JUnit写断言,测试结果
Q2: 64位计算中的Java虚拟机(JVM)性能测试
随着DEC(Digital Equipment Corp)公司Alpha处理器在 年末的发布 就意味着这个世界开始进入 位计算的时代 紧接着 全球几大主要计算机公司 如IBM Hewlett Packard(惠普) Fujitsu(富士通) Sun Microsystems 也发布了各自相应的产品进入到 位 这个市场 在 年 Fujitsu旗下的HAL Computer发布了业界第一台基于 位SPARC CPU的工作站 SPARC 此后不久 Sun发布了大众期盼已久的Ultra Ultra 工作站 其内置了Sun的 位UltraSPARC处理器 时间转换到 年 IBM发布了其第一个 位PowerPC RISC芯片 RS 在 年 IBM对RS 进行改良 使其支持SMP 这就是Power 如今看起来 对 位计算来说 其整整花了五年的时间 才在 年开始大量进入市场 在本文中 将主要涉及两个现在广泛应用的 位平台 AMD 与PowerPC 并分别使用IBM与Sun Microsystems这两个Java语言巨头提供的Java虚拟机(JVM) 通过SPECjvm 与SPECjbb 的测试 来评价 位与 位中JVM的性能 (注 SPECjvm 与SPECjbb 来自Standard Performance Evaluation Corp )AMD 是Advanced Micro Devices(AMD)公司的 位平台 其扩展了工业标准的x 指令集架构 并设计在不降低任何性能的前提下 于 位模式中完全兼容现有的x 应用程序与操作系统 在 年 月 AMD发布了Opteron 遵循AMD 架构的第一款处理器 与其同时 年 IBM发布了PowerPC 其是源自IBM Power 双核CPU的单核处理器 从此 IBM把 位PowerPC架构带到了桌面系统与低端服务器领域 另外要说明一点 PowerPC 也像Power 一样 可在不降低性能的前提下 本地执行 位指令 不久之后 在 年 月 由Apple Computer公司设计 基于PowerPC CPU的Power Mac G 电脑上市 Java背景介绍 在第一款 位处理器诞生不久 Java技术也出世了 并由此改写历史 Java是一种健壮的 通用的 面向对象的 构架中立的 可移植的 安全的 多线程的编程语言 并带有隐式内存管理功能 Java面向对象的特性在很大程度上与C++相似 但加入了更多的接口与扩展以创建更具灵活性的解决方案 与C++不同的是 Java不支持操作符重载 多重继承和自动类型强制 Java通过广泛的运行时检查和内置的例外处理机制 达到健壮性的目的 编译器所生成的只是字节码指令 其是独立于任何特定平台的 这样就保证了架构中立性 可移植性是通过指定基本数据类型大小和其算术操作符的行为来达到的 例如 int总表示一个有符号的 位整数 而float总表示一个 位的IEEE 浮点数 Java同时也有一系列的同步原语 其基于广泛使用的条件变量范式 自动内存垃圾回收(GC)简化了Java编程的难度 并极大地降低了bug的数目 但也使运行机制稍微复杂了点 在 年 也就是DEC公司发布第一款 位处理器的前一年 Sun Microsystems开始了一个名为 the Green Project 的计划 目的是要抢占 下一波计算 的先机 并为此提前做好准备 计划得出的最初结论是 移动数字设备与计算机的融合将会很快出现 在 年的夏天 计划小组演示了* (星 ) 一个通过动画式触摸屏控制的交互性手持娱乐设备 通过使用Oak 一种全新的编程语言 这个设备可控制很多不同的平台 而由James Gosling开发的Oak 其最主要的特点在于它是一个彻底独立于处理器的语言 在往后的几年中 这种语言被用于Internet 之后成为大众所知的Java 而 Oak 这个名字则因为版权问题从此消失了 在 年 月 Sun正式宣布Java的诞生 这是一种程序员只需编写一次 但却可在多种操作系统及多种硬件平台上运行的语言 编写一次 随处运行 在 年 Sun发布了Java开发工具包(JDK ) 其后不久 个主要的操作系统开发商宣布支持Java技术 当中也包括Microsoft 其以每年大约 万美元取得五年时间的Java许可协议 在 年 月 Sun发布了Java平台的第一个即时(JIT)编译器 在 年 月 JDK 面世 在随后的三周时间里 达到了 万次的下载量 到了 年初 这个数字达到两百万 在 年末 Java 平台发布了 大概半年后 也就是 年年中 Sun发布了三个版本的Java平台 J ME(Java Micro Edition) 应用于移动 无线及有限资源的环境 J SE(Java Standard Edition) 应用于桌面环境 J EE(Java Enterprise Edition) 应用于基于Java的应用服务器 此后 广泛应用的Java技术出现了一些framework 如Enterprise JavaBeans (EJB)和JavaServer Pages (JSP) Java技术的随后一次升级 是出现在 年 月的J SE 几周后 其获得了Apple公司Mac OS X的工业标准的支持 J SE 发布于 年 月份 对Java平台来说 这是一个几乎全新的产品 与J SE 相比 其多了近 %的类和接口 在这些新特性当中 还提供了广泛的XML支持 安全套接字支持(通过SSL与TLS协议) 全新的I/O API 正则表达式 日志与断言 在 年 月 是Java最近的一次发布 J SE (内部版本号 ) 代号 Tiger 现已提供公开下载 Tiger包含了从 年发布 版本以来的最重大的更新 其中包括泛型支持 基本类型的自动装箱 改进的循环 枚举类型 格式化I/O及可变参数 Java虚拟机(JVM)是一个软件规范 相关软件有责任遵守它 以运行编译为Java字节码的程序 JVM是一个抽象的计算机制 并独立于操作系统 具有编译后的程序体积小 可防止执行恶意代码等特点 其没有预先假设基于任何特定的实现技术 不管是硬件还是操作系统 通常我们有几个常用的JVM软件 其 位与 位版本性能有所不同 但它们都包括JIT编译器和垃圾回收功能(GC) JIT编译器从JDK 开始就是JVM的一部分了 当时Java只是用于浏览器客户端动态效果显示的一种技术 JIT编译器实现了程序执行之前Java字节码到硬件机器码的动态翻译 其背后的思想在于 相比Java源代码 字节码更小也更容易编译 但付出的代价是需要在Java字节码编译为机器码时花上一点时间 但与直接把Java源代码编译为机器码相比 时间还是少得多的 在 位与 位的JVM中 相应的JIT在把Java字节码编译为最终的机器码时 所花的时间稍微有所不同 但还能进行一些优化 另外 在IBM与Sun这两个版本的客户端与服务端程序上 总体性能也会有所不同 垃圾回收是一种自动内存管理系统 它会收回对象不再需要使用的内存 从软件工程的角度来看 垃圾回收最大的一个好处就是 程序员不用再操心那些低级的内存管理细节了 同时 垃圾回收也去除了源代码中两个最大的bug 内存未释放(内存泄漏)与过早释放(指针崩溃) 内存回收在Java程序运行期间占了一个很重要的部分 因为它必须被经常执行以释放对象不再访问的Java堆 由于在 位与 位平台上 Java堆中的数据大小会有所变化 所以会因为 位与 位JVM的性能差异 导致相应垃圾回收的性能也会有所不同
位背景介绍 位计算有几个重要组成部分 第一就是 位寻址 实际上 位寻址是通过 位整数寄存器达到的(或RISC中所指的通用寄存器) 位寄存器允许 位的指针装入到单个的寄存器中 而 位的指针 才是可以寻址访问更大内存的实质所在 当 位处理器只能访问到 字节或 GB内存时 位处理器理论上却可寻址访问 字节或 × GB内存 在现代的 位系统中 可寻址的内存的实际限制通常比理论值低一点 具体依赖于特定的硬件架构和操作系统 举例来说 在基于Linux的操作系统中 受限于当前Linux内核数据结构的设计 可寻址的内存最多为 字节或 GB 位计算的第二个重要方面 就是 位整数运算 要提醒的是 这可不是简单地因为有了可存储更多更大整数量 更宽的 位整数寄存器而带来的必然结果 其最直接的影响就是对那些需要处理密集大数值整数运算的程序而言 可带来性能上的飞跃 第三个方面 即 位计算的特性 是 位操作系统与程序的应用 相关的软件必须全面支持硬件的 位特性 包括 位寻址和运算 通常还有一些附带的好处 如 可操作更多更大的文件 管理更大的磁盘等等 位计算所带来的影响 目前已在许多程序中得到了体现 数据库服务器现在可寻址更大的内存 以维持更大的缓冲池 数据缓存 或在内存中进行排序以减少相关的I/O操作 也能给每个用户分配更多的内存 支持更多的用户 或对更大的数据文件进行操作 仿真或其他计算密集的程序也将从中受益 如 现在可以在内存中分配更大的数组了 最后 别忘了还有大量的Java程序 J EE应用服务器 现在也能充分享受到 位计算所带来的好处了 位计算的主要缺点是 与它们 位的兄弟相比 位二进制文件一般都更大 因此 最终生成的机器码体积也更大 在系统缓存与旁路转换缓存(TLB)大小不变的情况下 可能会同时降低两者的命中率 这就是说 在一定程度上性能会有所损失 性能评测 此处用于测试 位与 位JVM性能的系统 是两台 位双CPU工作站 一台是基于AMD 技术的Opteron系统 而另一台是基于PowerPC 的Apple Power Mac G 两台工作站都分别运行基于Linux的 位操作系统 受测试的JVM分别来自于IBM和Sun 将使用SPEC的SPECjvm 和SPECjbb 来测试相应JVM的性能 其中SPECjvm 使用了以下项目测试客户端性能 ·_ _press 一个流行的压缩程序 ·_ _jess 一个Java版的NASA CLIPS基于规则的专家系统 ·_ _db 数据管理基准测试软件 ·_ _javac JDK Java编译器 ·_ _mpegaudio 一个MPEG 音频解码器 ·_ _mtrt 一个对图像文件进行处理的双线程程序 ·_ _jack 一个分析程序生成器 SPECjbb (Java商业基准程序)是一个用于服务端的基准测试程序 其模仿了三层体系结构 是一个通用类型的Java服务端应用程序 通过运行SPECjvm 以秒为单位记录了每个基准测试的运行时长 时间越短越好 所有SPECjvm 测试的堆大小因JVM而有所变化 从最小值 MB至最大值 MB 在SPECjbb 测试中 记录了在三种不同堆大小时的每秒执行操作数 更高的值代表更高的性能 每一个测试程序都运行三次 取成绩最好的一次作为最后的结果 图 与图 显示了在AMD 平台上 Linux版本的Sun Java Standard Edition Development Kit (J SE )在SPECjvm 和SPECjbb 中 位与 位的性能测试结果 在SPECjvm 测试中 只有三项 _ _press _ _mpegaudio _ _jack 在 位版本的JVM上比 位表现出更佳的性能 在SPECjbb 中 位版本的性能只在有足够堆大小的情况下 才表现出更高的性能 其中在堆大小为 MB时 因为某些活动数据在 位JVM版本中体积更大 导致垃圾回收动作更频繁 从而降低了程序性能
图 图 图 与图 显示了在AMD 平台上 Linux版本的IBM Developer Kit for Linux Java Technology Edition Version GA在SPECjvm 和SPECjbb 中 位与 位的性能测试结果 其中 基准测试程序中有三项 _ _db _ _javac _ _jack 在 位环境下表现出了更佳的性能 另外 在SPECjbb 测试中 当面对三个不同大小的测试堆时 位IBM版本的JVM都没有表现出比 位版本更好的性能 图 图 图 与图 显示了在PowerPC 平台上 IBM Developer Kit for Linux Java Technology Edition Version GA在SPECjvm 和SPECjbb 中 位与 位的性能测试结果 此处 在所有SPECjvm 和SPECjbb 的测试中 位JVM的性能都不及 位平台 图 图 结论 基于运行Linux操作系统的PowerPC 平台的测试结果 表明如果在此平台上使用IBM的JVM 那么 那些不需要 位特性的程序 还是让它们运行在 位JVM中吧 因为在此平台的所有测试结果中 位JVM的性能都比 位平台低 而基于运行Linux操作系统的AMD 平台的测试结果 表明不管是Sun还是IBM的JVM 位与 位的性能都在伯仲之间 要注意的是 性能的差异是依赖于具体的应用程序与JVM的 如果需要最佳性能 就必须在某个特定的执行环境中测试某个特定的程序 以评价转换到 位所带来的潜在性能提升 有几件事情需重点注意 第一 尽管SPECjvm 与SPECjbb 都是工业标准的基准测试程序 但它们的测试范围有限 因此 就测试结果而言 只对一部分的Java程序正确 而不是所有 第二 随着 位计算越来越被人们接受 我们期待 位程序会有所改进 包括 位JVM 也许其在将来会大幅提高性能 第三 此处只组合测试了几种特定的硬件平台 操作系统与JVM 因此 如果要进一步地说明问题 恐怕只有在 位Windows XP/ 及 位Mac OS X上的进行JVM基准测试了 lishixinzhi/Article/program/Java/hx/201311/26587
Q3: 怎么进行性能测试
问题一:性能测试应该做哪些准备 环境搭建:这个根据实际规划java测试代码性能,我在企业内做过的性能测试搭建的环境都是和用户上线使用的实际环境一样的。
数据准备:个人感觉是整个工作里第二耗时的,需要真实模拟用户数据,这个不是单单的创建几个帐号就完事的,每个用户基本都会有不太一样的配置,实际操作的时候部署数据的脚本都写到手软。
脚本编译:选择性能工具编译性能脚本,java测试代码性能你需要跑什么业务流程就编译什么样的脚本。
脚本执行:用规划好的用户数执行脚本,这个一般持续很长时间,时间太短不足以暴露服务器等的性能瓶颈,性能测试中最耗时的就是这个步骤。
收集日志:在执行脚本完成后收集到的能客观反应系统性能的日志、报表文件,比如LR的报告、数据库的AWR日志等等。
分析结果:分析收集到的日志、报表,找出性能瓶颈或是得出性能指标结果。这个一般需要对数据库或者底层非常了解的专业人士来分析,一般测试人员只需要提供收集到的报告就差不多了。
生成报告:将上面所有的性能测试活动整理总结,输出测试报告。
问题二:如何做好性能测试java测试代码性能? 你好,首先很欣赏你的这种态度。我在TestBird 招聘新人的时候,也有很多小朋友觉得自己有多了解工具运用,有多熟练步骤过程,自我感觉很不错。
其实,我却想说,性能测试的重点不在性能测试工具的学习上。
当然,你也通过分析系统的压力点、LR录制脚本,设置用户,做压力,分析结果,整理测试报告。完成了性能测试的整个过程。那么我说这个性能测试报告是有效的,但它不一定是有用的。
为什么呢?因为在性能测试报告中,在你所在的环境中,你是测出了这样的效果。并未掺假,全部真实的记录。
为什么说它不一定是有用的,你了解系统架构么?知道数据库、中间件、前端程序的运行方式和处理机制么?了解网络协议么?了解操作系统么?熟悉开发系统的语言么,如java JVM的内在机理知道么?这些都是系统运行的一部分,都在影响着系统的性能。如果不了解这些,你如何做出有价值的有参考意义的性能测试。
所以,学会这些性能测试工具很好,但是这仅仅是第一步。性能结果只是一些数据而已,知道你在做什么,为什么要做这些,做完后能给出有价值的东西,才是后面要慢慢修炼的。
问题三:移动客户端的性能测试如何做? 。就当练习了。。大家看了不要喷我。。现在很多测试人员做移动端测试,可能主要还是关注功能和自动化测试。性能测试可能大多是按照每个人的体验来做报告,是不是比较快,或者比较慢。当然也不乏有很多的测试人员会回复我说,性能测试都是服务器的,移动端根本就不需要性能测试。我实在觉得可笑。 不过我毕竟一直在创业公司,而且就我一个人,所以了解可能有限,我这里就说下我之前碰见的,所知道的,目的只是抛砖引玉。 另外,我这里也不去说什么MAT,instruments了,这种固有查找内存的工具大家自己google吧。 客户端的性能从系统层面,电量消耗,网络流量,内存泄漏等都是被关注,或者说用户最最关注的点。 实例一,3rd 应用的性能测试。应用本身的响应时间可以通过call 应用intent来查看,设备纯环境,设备低内存等各种情况下进行同样此数的call,进行对比。或者与同行业同性质的应用进行对比测试。我相信很快就能够有结论了。除了应用本身,还需要对于应用本身某些特别的功能进行响应测试。比如测试一个list,测试的方法为onkeydown之后查看这个list.index(0)是否高亮,是否正常的界面跳转了,那么分别进行计时(精确ms)。同样的,我们在空list以及有几百条list的情况进行这样的case test,那么就会有一个性能的结果出来。 实例二,假设你测试微薄客户端,那么你肯定是需要进行一个list上下滑动的性能测试。我们需要使用脚本语言shell或者python去call server api来仿造数据反馈到移动设备上,否则你不可能自己手动去发几百条weibo然后再测试。测试的时候需要关注两个问题,一个是list在各种情况下是否滑动流畅,一个是当list中有很多的图片的时候图片load的速度也是一个很大的测试点。这个load可以直接检查imageview什么时候load出来pic,什么时候显示在界面上,计算时间。这里其实很多应用是webview,或者数据是存在服务器端的,这个时候无论是平时的测试还是压力,还是性能,数据的修改,其实还是多使用脚本ping api比较好,能够很好的去辅助达到性能测试的效果。 实例三,比如要测试一个优酷的视频软件,那么视频的播放的时候,首先保证网络的情况下,各种分辨率各种码率的视频接入时间是需要关注。然后在播放,也就是和网络不停的通信的同时,那么需要通过tcp dump和wireshark工具来检查网络访问是否正确,视频的卡顿,视频的花屏等除了硬件兼容之外,可以通过抓包来判断其性能。如果丢包率高那么自然视频卡,体验不好,性能也就不会好。 其实以上只是一些很基础,现在很多公司也已经在这个基础上改良测试了。不过也是一些思路,让更多的企业和测试关注移动客户端的性能。不要一提到性能脑中只有LR等这些Server测试。
问题四:为什么要进行性能测试? 原因有三:
川. 开发者的水平各有不同,有的写出来的东西性能高,有的低,所以需要统一测试一下。
2. 编程工具本身也有性能问题,用这样的工具开发出来的软件也要确认一下是否达到了需求所要求的性能指标,比如响应时间应该控制在多少秒以内。
3. 性能测试,强度测试都是为了测试系统的稳定性,稳定性好,软件的质量就好,买的钱就多。
问题五:如何进行Web服务的性能测试 贴一篇我们内部的文章:
随着浏览器功能的不断完善,用户量不断的攀升,涉及到web服务的功能在不断的增加,对于我们测试来说,我们不仅要保证服务端功能的正确性,也要验证服务端程序的性能是否符合要求。那么性能测试都要做些什么呢?我们该怎样进行性能测试呢?
性能测试一般会围绕以下这些问题而进行:
1. 什么情况下需要做性能测试?
2. 什么时候做性能测试?
3. 做性能测试需要准备哪些内容?
4. 什么样的性能指标是符合要求的?
5. 性能测试需要收集的数据有哪些?
6. 怎样收集这些数据?
7. 如何分析收集到的数据?
8. 如何给出性能测试报告?
性能测试的执行过程及要做的事儿主要包含以下内容:
1. 测试评估阶段
在这个阶段,我们要评估被测的产品是否要进行性能测试,并且对目前的服务器环境进行粗估,服务的性能是否满足条件。
首先要明确只要涉及到准备上线的服务端产品,就需要进行性能测试。其次如果产品需求中明确提到了性能指标,那也必须要做性能测试。
测试人员在进行性能测试前,需要根据当前的收集到的各种信息,预先做性能的评估,收集的内容主要包括带宽、请求包大小、并发用户数和当前web服务的带宽等
2. 测试准备阶段
在这个阶段,我们要了解以下内容:
a. 服务器的架构是什么样的,例如:web服务器是什么?是如何配置的?数据库用的是什么?服务用的是什么语言编写的?;
b. 服务端功能的内部逻辑实现;
c. 服务端与数据库是如何交互的,例如:数据库的表结构是什么样的?服务端功能是怎样操作数据库的?
d. 服务端与客户端之间是如何进行交互的,即接口定义;
通过收集以上信息,测试人员整理出服务器端各模块之间的交互图,客户端与服务端之间的交互图以及服务端内部功能逻辑实现的流程图。
e. 该服务上线后的用户量预估是多少,如果无法评估出用户量,那么可以通过设计测试执行的场景得出这个值;
f. 上线要部署到多少台机器上,每台机器的负载均衡是如何设计的,每台机器的配置什么样的,网络环境是什么样的。
g. 了解测试环境与线上环境的不同,例如网络环境、硬件配置等
h. 制定测试执行的策略,是需要验证需求中的指标能否达到,还是评估系统的最大处理能力。
i. 沟通上线的指标
通过收集以上信息,确定性能测试用例该如何设计,如何设计性能测试用例执行的场景,以及上线指标的评估。
3. 测试设计阶段
根据测试人员通过之前整理的交互图和流程图,设计相应的性能测试用例。性能测试用例主要分为预期目标用户测试,用户并发测试,疲劳强度与大数量测试,网络性能测试,服务器性能测试,具体编写的测试用例要更具实际情况进行裁减。
用例编写的步骤大致分为:
a. 通过脚本模拟单一用户是如何使用这个web服务的。这里模拟的可以是用户使用web服务的某一个动作或某几个动作,某一个功能或几个功能,也可以是使用web服务的整个过程。
b. 根据客户端的实际情况和服务器端的策略,通过将脚本中可变的数据进行参数化,来模拟多个用户的操作。
c. 验证参数化后脚本功能的正确性。
d. 添加检查点
e. 设计脚本执行的策略,如每个功能的执行次数,各个功能的执行顺序等
4. 测试执行阶段
根据客户端的产品行为设计web服务的测试执行场景及测试执行的过程,即测试执行期间发生的事儿。通过监控程序收集web服务的性能数据和web服务所在系统的性能数据。
在测试执行过程中,还要不断的关注以下内容:
a. web服务的连接速度如何?
b. 每秒的点击数如何?
c. Web服务能允许多少个用户同时在线?
d. 如果超过了这......
问题六:网站性能测试主要有哪几种方法? 我知道的性能测试主要有:压力测试,负载测试,容量测试,发性能测试,兼容性测试(不同的操作系统和不同的浏览器)。测的时候应用在客户端的性能、应用在网络上的性能和应用在服务器端的性能都要进行测试的。
希望能帮到你。
问题七:怎么才能做性能测试工程师? 性能测试实际上确实需要些功底儿,但是也并不是非得一两年之后才去做。
我给你列几条性能测试工作中的建议,你可以自己温习一下,然后去面试,具体的经验需要实际的工作才能得到,然而你扎实的基础知识才识支撑你走下去的动力。
1,最直接也是最表面的建议,适用于面试:Loadrunner, HttpWatch, Dynatrace, TeamQuest, JMeter(可选), Wily(可选), HTML/HTTP, Webservice, Mainframe, DB. 这些东西足够学很久很久的了,所以说需要几年的工夫,但是没必要每一样都学太深,了解即可,经验日后会积累到的。
2,相对比较深层的建议:性能测试最关键之处不是工具的选择,而是对整个性能参数的理解,所以比较贴近于概念,比如说什么是TPS, Response Time, Connection浮 per Second....还有就是什么是CPU Utilization, FreeMem, Disk IO, Paging.... 工具也无非都是通过日积月累形成的客户端,所以抓到本质才是关键。
不在这里长篇大论了,呵呵,加油!
问题八:性能测试应该怎么做 需求分析 - 测试设计 - 测试执行 - 结果分析
问题九:APP如何做性能测试 目前市面上有很多家做安全加密的平台都有做安全检测,但是大部分需要付费,如果说只是个小项目的话花钱去做的话成本太高,也不建议去做
你可以了解下爱内测这个平台,专门做测试的,有安全检测、兼容测试、插件评估等,虽然这个平台也是付费的,但是他有免费的版本提供,个人觉得安全检测免费版本已经足够强大了,自动化生成测试报告,提供精准的检测数据
希望可以帮助到你
问题十:服务端怎么做性能测试 使用LR对数据库进行性能测试,实际上有多种办法,包括通过现有的数据库协议进行CS模式的先录制后执行的模式,以及通过socket方式向服务器发包方式的测试方式。这些是常规书籍上介绍的比较简单上手的测试方法,但是不具备通用性,受已有协议或socket编程方式的限制,所以需要更为通用的测试方法。
用Java user的协议进行所有数据库性能的测试工作:
Java user 不需要录制,把所有的操作通过java语言进行实现,通过lr调用java的class进行加压批量操作,这样可以不关心被测系统是哪个数据库,只要能够通过jdbc进行访问,就能实现性能测试。
一、测试环境准备
1. 被测服务器准备,根据测试目的,搭建需要的数据库服务器,确保数据库能够正常访问,正常操作;
2. Java代码的准备,无论使用哪种IDE,只要能够编写访问数据库的class就可以,形式可以是j2se,也可以是j2ee,因为在操作时只使用class的部分方法,所以j2ee就可以了;
3. LR的脚本调试,把java的class导入到脚本调试模式,根据需要添加事务以及其他操作。
二、编写数据库访问
1. 使用myeclipse,创建web project,创建如下图的包目录:
Java文件中包含各种访问数据库的方法。
需要注意的是,class中的方法必须是public static,否则LR中无法调用。由于创建的是j2ee程序,所以不用main函数,在web中就可以进行功能验证。
确认class中的方法编写完成,创建一个web.jsp文件,如下:
导入class
声明类,并实例化,直接调用刚才编写的3个方法,因为这3个方法是直接对数据库进行操作,不需要实参,也没有返回值,所以直接实现即可。
此时启动web服务,在浏览器中输入jsp的地址,直接刷新页面,就可以调用这3个方法,如果正确,就会对相应的表进行操作,如果不正确,则需要修改相应的代码。
2. LR脚本准备:
LR脚本实际上就是对访问代码的调用,关键在于需要根据测试场景划分不同的脚本布局。
例如:在myEclipse里,我们只编写了一个class,其中包含三个方法,如果在执行性能测试时,这三个方法相互独立,互不干涉,则最简单的划分方法是,创建三个java user,每个java user中包含一个方法,做三份脚本,场景执行时分别进行调用。如果三个方法之间有相互关系,则需要根据实际情况,把有关联的方法放在一起,具体情况可按实际灵活分配。
因为已经将class文件进行编译发布了,所以可以在“java2postgres\WebRoot\WEB-INF\classes\\lr\test”目录中找到对应的class文件,
复制这个文件,找到LR的目录:HP\LoadRunner\classes\\lr\test\ 如果没有文件夹,按相同的内容创建。
在LR脚本中进行引包操作:
将需要执行的java类以及方法,放在action中,可根据实际测试情况和所需要验证的内容,具体调试代码。
在这里可以像编写普通LR脚本一样,添加事务或 *** 点等内容。
由于是通过JDBC对数据库进行访问,因此要在java user中加载jdbc驱动。
运行时设置中,增加jdbc驱动,需要注意的是java user使用的本地jdk,需要至多1.6版......
Q4: 利用 Oracle DMS 测量 Java 应用程序性能
如果您开发了一个运行在 Oracle 应用服务器 (OracleAS) 或 Oracle Containers for J EE (OC J) 上的 Java 应用程序 那么您可以使用 Oracle 的动态监控服务 (DMS) 来测量您的应用程序的性能 本文分几个简单的步骤说明了如何准备好您的应用程序 以进行性能测量 并如何读取结果 Oracle DMS 提供了一组 Java 和 C API 来为 OracleAS 和其它的 Oracle 产品测量和报告性能量度 状态 信息和诊断信息 Oracle 产品调用 DMS 函数库例程来计算量度 并把它们输出到 Oracle 企业管理器中 有关监控和优化 OracleAS 及其组件的性能的详细信息 请参见 Oracle Application Server g 性能指南 DMS 测量 API 小 简单而高效 为了创建定制的量度 开发人员在事件发生时 重要的时间段开始和结束时 或者当预先计算的性能量度改变了它们的值时通知 DMS 然后 DMS 将量度发送到 Oracle 企业管理器 将它们转储到文本文件中 或者进行格式化 以适合 web 浏览器 下面进行简要介绍 首先 您将需要确定您要测量应用程序的动作(可能以某种层次表示 例如 读时间 和 写时间 可以结合构成 总时间 ) 然后创建一个准备这些定时 事件 的结构的专用 Java 类 然后在 Java 应用程序的相关位置上 调用这个专用类中的方法来启动和停止相关的定时器 然后运行应用程序(运行多次以采集实际的平均值) 并通过一个专门的 URL 来查看时间测量的结果 下面更详细地介绍了这个过程中的步骤 第 步 确定您想要测量的应用程序部分 下面是根据我自己经验而编写的示例 为了进行概念验证 我的小组需要显示 Java 应用程序中的一个特定序列的步骤可以在 秒内执行 我们想要测量总时间 以及每一个步骤花费多少时间(从而我们能够指出需要改进的地方) 我们想要测量以下步骤所花费的时间(三层的层次结构) 总时间 检索数据(不需部分求和) 读取数据库 写入文件 计算 计算的初始化 重复计算步骤 提交结果 图形表示 字母数字表示 这些测量必须在应用程序的每次运行中进行 以便您能够比较它们在不同情况下的值 并为每一个应用程序组件计算平均时间 就我们而言 输入参数之一是计算步骤的数目 因此我们运行了几次 每次执行不同数量的步骤 因此 我们能够指出哪些部分有一致的性能 以及如果我们增加步骤数 对于其它的部分需要增加多少时间 第 步 安装 dms jar 找到 dms jar(在 [OC J_HOME]\lib 或 [OracleAS_HOME]\lib 中) 并确保它在您的应用程序的类路径中(特别在开发环境中 因为如果您部署到 OracleAS 或 OC J 中 那么在部署环境中它将已经存在) 如果您使用 JDeveloper 那么您可以将 dms jar 作为一个资料库添加到 JDeveloper 项目设置中 以实现这一目的 为您的项目创建一个新的资料库 然后在它的类路径中为 dms jar 增加一个项目(指定到 dms jar 的完整路径) 第 步 创建类 PerformanceMeasurement 在您的 Java 应用程序中创建一个新的 Java 类 在该类中您可以准备好测量层次结构 列表 显示了一个准备第 步中说明的层次结构的示例类 这个示例使用 DMS PhaseEvent 感应器( 定时器 )来测量在代码的完整特定部分中所花费的时间 并且它使用 DMS Nouns( 树结构 )来在一个层次结构中组织 PhaseEvent 感应器 这种层次结构类似于文件系统中的目录结构 第 步 测量应用程序 现在 在应用程序中的适当位置开始和停止相应的定时器已非常容易(用 DMS 的术语 这称为 instrumenting ) 您所需要做就是初始化一个 PerformanceMeasurement 对象 然后将这个对象传递给需要控制这些定时器中的某一个启动和停止的 Java 例程 下面是一个示例代码段 // Initialize Performance Measurement objectp = new PerformanceMeasurement( MyApplication_ +numberOfSteps+ _steps );p start(p TOTAL);// And now the actual steps in the caseDataHandler getData(p);doCalculations(p);generateChart(p);您可以按您的需要频繁调用 p start 和 p stop 只要您确保对于某个定时器的每一次启动操作 总存在对该定时器的停止操作 例如 p start(p READING);// Load the Oracle JDBC driver and connect to the database p stop(p READING);p start(p WRITING);// Initialize output file p stop(p WRITING);p start(p READING);// Get first batch of data p stop(p READING);p start(p WRITING);// Write first batch of data p stop(p WRITING);记住您还必须手动启动和停止 Total 和 Subtotal 定时器 第 步 捕获一个页面在浏览器中完全显示的时刻 在我们的概念验证中 将在浏览器中显示图形和字母数字数据所需的时间包括在我们的测量中是必需的 我们的页面相当大 因此完全加载它要花一些时间 我们使用一个 Javascript 陷阱来捕获结束时间 Javascript 在客户机上执行 因此如果您将一段脚本放在页面的末尾 那么只有页面在客户机上完全加载时才执行 在那段脚本中 我们调用了另一个页面 该页面调用了一个 Java 方法来停止相应的定时器 下面是一个示例 JSP 代码段 jsp:useBean id= myApplicationBean class= MyApplicationBean scope= session ! Do all the calculation stuff first % myApplicationBean doSteps(); myApplicationBean p start(myApplicationBean p GRAPHICAL); % show chart % myApplicationBean p stop(myApplicationBean p GRAPHICAL); myApplicationBean p start(myApplicationBean p ALPHANUMERIC);% show alphanumerical data % myApplicationBean p stop(myApplicationBean p ALPHANUMERIC);%script window open( Stop jsp stop width= height= );/script/JSP:USEBEANJSP:USEBEAN class=MyApplicationBeanid=myApplicationBean scope= session 下面是 Stop jsp 的源代码 %@ page contentType= text/;charset=windows %jsp:useBean id= hopCalBean class= HopCalBean scope= session /Stop!!!!% myApplicationBean stop(); %myApplicationBean stop() 方法包含以下 Java 代码 /* * This method will be called after everything has been done */public void stop(){p stop(p PRESENTATION_TOTAL);p stop(p TOTAL);p writeLogFile( d://temp//MyApplicationPerformance log );} 第 步 运行应用程序 现在将经过测量的应用程序部署到 OracleAS 或 OC J 中 并运行它 DMS 将采集时间统计数据 如果您想比较几次运行的时间测量结果 请多次运行您的应用程序(可能用不同的变量 变量可以在初始化 PerformanceMeasurement 对象时放到运行名称中) 第 步 在浏览器中查看 DMS 输出 如果您编写了对 p writeLogFile 的调用 那么您可以查看该日志文件的内容 它包含原始的 DMS 数据 通过在应用服务器上调用一个特定的 URL 可以找到一种更加清晰的数据表示方法 用您的 Java 应用程序使用的应用服务器的主机名和端口号来替换 [host:port] 对于独立的 OC J 使用//[host:port]/dms /Spy 对于 OracleAS 使用//[host:port]/dmsoc j/Spy 您将看到如下页面 educity cn/img_ / / / gif 正如您所看到的 DMS 还收集 JDBC JVM 和 OC J 的统计数据 并且无需任何进一步的调整 关于内置性能量度的一个列表 请参见 Oracle Application Server g 性能指南的附录 A 要查看某种类别的详细信息 请单击左边框中的名称 educity cn/img_ / / / gif 总结 如果您以一种结构化的方式安装了 DMS Nouns 和 DMS PhaseEvent Sensors(利用一个 PerformanceMeasurement 类) 那么利用 DMS 您可以容易地测量您的 Java 应用程序的性能 并且获得性能时间测量结果的一种易读的结构化输出 lishixinzhi/Article/program/Java/JSP/201311/19348
关于java测试代码性能和java编写完测试代码 怎么运行的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







