开发与测试分析工具集锦(网络摘要)不断更新

一、测试工具
     (一)软件测试工具
 
     (二)网络分析工具
            1、TcpDump工具(网络安全分析工具 ):抓包分析
                    tcpdump 是一个运行在命令行下的嗅探工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 是一个在BSD许可证下发布的自由软件。
                    tcpdump是非常强大的网络安全分析工具,可以将网络上截获的数据包保存到文件以备分析。可以定义过滤规则,只截获感兴趣的数据包,以减少输出文件大小和数据包分析时的装载和处理时间。
               tcpdump 适用于大多数的类Unix系统 操作系统:包括Linux、Solaris、BSD、Mac OS X、HP-UX和AIX 等等。在这些系统中,tcpdump 需要使用libpcap这个捕捉数据的库。其在Windows下的版本称为WinDump;它需要WinPcap驱动,相当于在Linux平台下的libpcap。
             2、Wireshark(网络封包分析软件 )
           一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换
           网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。
           WireShark是一种网络协议分析工具,使用户能够深入分析网络活动,涵盖上百种协议以及各主要平台,包括Windows,Linux,OS X,Solaris,FreeBSD 和 NetBSD。数十种抓包文件格式的读写功能,通过GUI或TTY-mode浏览数据
             3、Tcpreplay
              Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep等工具,它可以用来在Unix系统或者linux系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。
              4、Fiddler(http协议调试代理工具 )
              Fiddler 是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
             5、Hping(TCP/IP数据包组装/分析工具 )
               Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UDP、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之间传送文件。Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Windows。
               主要功能编有:防火墙测试;实用的端口扫描;网络检测,可以用不同的协议、服务类型(TOS)、IP分片;手工探测MTU(最大传输单元)路径;
   先进的路由跟踪,支持所有的协议;远程操作系统探测;远程的运行时间探测;TCP/IP堆栈审计
             6、HttpWatch( 网页数据分析工具 )
HttpWatch是强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能.报告输出.HttpWatch 是一款能够收集并显示深层信息的软件。它不用代理服务器或一些复杂的网络监控工具,就能够在显示网页同时显示网页请求和回应的日志信息。甚至可以显示浏览器缓存和IE之间的交换信息。集成在Internet Explorer工具栏。
只需要选择相应的网站,软件就可以对网站与IE之间的需求回复的通讯情况进行分析并在同一界面显示其相应日志记录。每一个HTTP记录都可以详细的分析其 Cookies、消息头、字符查询等信息。支持HTTPS及分析报告输出为XML、CSV等格式
          7、JDSU 网络分析软件标准版
     方便网络专业人士排查网络故障,告知谁在网络上,谁在占用带宽,故障发生在何处。JDSU可分析潜在性能问题,并同时提供实时分析和更深入的离线数据分析
  8、TCP Traffic Analyzer开源网络分析工具
      借此分析网络应用在服务器端与客户端之间的运行状态TCP Traffic Analyzer的几个显著分析功能包括:
        1持续时间超过(或者小于)某阈值的TCP连接数;2、尝试次数超过N次才成功的TCP连接数。3、TCP连接持续时间和吞吐量的分布情况。
             4、 数据包超过N字节的TCP连接分布情况。5、持续时间在特定阈值内的IP地址和端口分布情况。
    9、Charles
   是一个HTTP代理服务器,HTTP监视器,反转代理服务器·它允许一个开发者查看所有连接互联网的HTTP通信·这些包括request, response现HTTP headers (包含cookies与caching信息)
 
   10、tcpcopy
  tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,我们曾经应用于网易的广告投放系统,urs系统,nginx hmux协议开发等系统,避免了上线带来的很多问题。
总体说来,tcpcopy主要有如下功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)对于后端的短连接,请求丢失率非常低(1/10万),可以应用于热备份
3)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
4)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
5)利用级联tcpcopy,构造无限在线压力,满足中小网站压力测试要求
6)实战演习(架构师必备)
如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力无法预测,tcpcopy可以帮助你解决上述难题。
11、TCPView
          也是Windows下的神器,主要是查看当前的TCP连接、UDP连接状态,也可以断开正在传输数据的连接。
          她除了平时测试、调试TCP等用到,有的时候还能发现一些     莫名奇妙的连接,那么就该查查你的系统了
          12、sokit
           国人写的一个TCP、UDP socket调试辅助工具,非常的好用,基于QT框架,所以在linux和windows下都能用,他能很方便的组装二进制数据包,很方面的模拟分包、粘包。
          有客户端、服务器、转发器三种模式,转发器实际上就是一个透明代理,原理和Fidder类似,所以可以轻量级的进行抓包,当然不能断点调试的啦。
       用这个玩意发现一个小bug,就是在发二进制包的时候[00,88] ,就这个中括号后面多了一个空格,
          也会被发出去,有一次我在这里栽了跟头,当然在日志中仔细查看能够看到完整的发出的包(这个故事告诉我们,日志很重要)http://blogread.cn/it/article/6365?f=wb
 
      (三)Java分析监测工具
             Java自带的性能监测工具——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
          (1)性能分析检测工具
               1DTrace
                    DTrace,也称为动态跟踪,是由 Sun™ 开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具。 在任何情况下它都不是一个调试工具, 而是一个实时系统分析寻找出性能及其他问题的工具。DTrace 是个特别好的分析工具,带有大量的帮助诊断系统问题的特性。 还可以使用预先写好的脚本利用它的功能。 用户也可以通过使用 DTrace D 语言创建他们自己定制的分析工具, 以满足特定的需求。
                   2、JClarity - 性能检测
目前提供了两个工具:Illuminate and Censum。Illuminate 是一款性能检测工具,而Censum 主要专注于垃圾收集日志分析
主要功能:
 
故障检测((Disk I/O,垃圾收集,死锁等等)
操作建议 - 对故障提出解决建议,如"The application needs to increase the number of active threads".
解释 - 给出问题出现的原因,如"A high percentage of time spent paused in GC may mean that the heap has been under-sized".
  独特之处:该工具和其他性能监控工具之间的一个区别是,它简化了问题报告并用简单的英语描述了建议解决方案。
3、Scalasca并行程序性能分析
Scalasca 是一个用来分析并行程序的性能,并给出优化的建议
4、JRockit——任务管理

Oracle的JRockit是一套完整的Java SE解决方案,包含了一个高性能JVM、性能分析、监控和排错工具。可用于预测Java程序中的延迟。

现在,JRockit打包有一系列的称为JRockit任务控制(JRockit Mission Control)的工具。这些工具包括:一个用于管理的控制台(console,译者注:此console跟终端不一样,是特指管理后台系统),进行GC 数据可视化和其他的一些性能统计。它同样可以作为运行时性能分析工具Runtime Analyzer来使用,也可以分析内存问题。
5、Patty
“Patty” 项目 是一个开源项目,可以从Source Forge下载。它致力于为Java 1.5.0和更高版本的虚拟机提供性能分析工具。与其他性能分析工具不同之处在于,它专注性能分析,并且允许用户在运行时开启和关闭性能分析功能。

目前Patty正处于beta版阶段,但随着更多强大的功能如方法执行、代码覆盖、线程竞争(Thread Contention)分析的加入,Patty可以用于(内存、CPU等)性能调优,并且可以将信息通过TCP/IP Socket发送到其他电脑上。
Patty有着易用的GUI,可以用于分析堆。还可以在Java编译流程中的准备阶段,对应用程序运行时对class进行 监测(instrument)和取消监测(de-instrument)
6、JProfiler
JProfiler集CPU、内存和线程性能分析于一体,可以用于分析性能瓶颈、内存泄漏、CPU 负载和解决线程相关的问题,并且支持本地性能分析(分析与JProfiler软件安装在同一台机的应用)和远程性能分析(它可以分析远程没有安装 JProfiler机器上的应用),这一点对开发人员非常有用。主要为Java EE和Java SE应用所设计。
7、GC Viewer
GC Viewer 可以(从主页和Github) 免费获取。GC Viewer是一个开源工具,
可以对vmflags -verboase:gc和-Xloggc:等Java VM选项产生的数据进行可视化分析。
GC Viewer可以用于计算GC(垃圾回收)相关的性能数据记录,包括吞吐、累积暂停、最长时间的暂停等等。+
当你想要通过改变生成大小和设置初始堆大小来调 整某个特定应用的GC时,它尤其有用
8、  ORM Profiler
旨在帮助提高数据访问层性能的工具。它会跟踪和记录 ADO.NET 调用,以便开发者可对他们的数据访问进行分析,进而发现其中的潜在问题。

ORM Profiler 可与任何用 DbProviderFactory 类构建的、用于对象关系映射(ORM)的数据访问层一起使用,而且适用于任何可通过数据访问层使用的数据库,包括 SQL Server、MS Access、Oracle、MySql、SQLite、PostgreSQL、以及 DB2。它支持 .NET Framework 3.5 和4.0。

Solutions Design 称,在应用程序中只需要一行代码便可激活 ORM Profiler,而且还可从用户界面或命令行来激活它。虽然不是一款实时分析器,但是它会拍摄快照以备稍后使用。它会记录各种数据库调用,并以三种不同形式的视图呈现出来:

当查看执行代码视图时,它允许用户在 Visual Studio(或其他代码编辑器)中定位到相关的行;
按时间顺序排列、根据事务分组的视图;
以及根据查询分组的视图。
当某项记录被选中时这些视图彼此之间会保持同步,以便通过全部三种不同的方式对该查询进行分析。ORM Profiler 还提供了从数据库获取查询执行计划的能力,并与查询统计一起显示出来。

ORM Profiler 的其他功能包括:

在同一时间支持多种形式的数据访问,只要它们都使用 DbProviderFactory 就行
一次配置多个应用程序的能力
一个强大的筛选系统
只用一行代码即可完成打开与关闭之间的切换配置
可配置的警报提示
有关 ORM Profiler 的更多细节可在其网站上找到。
 
 

          (2)内存检测工具

                    1、 Plumbr  内存泄漏检测
               用Plumbr,它可以检测出应用程序的内存泄漏问题并提供切实可行的解决方案。 Plumbr是一款监控JVM的工具,能检测的内存泄露,GC时间过长,线程锁的情况。
主要功能:
实时内存泄漏检测和警报并提供泄漏的时间、大小、速度和重要性的报告代码中内存泄漏的位置
独特之处:快速定位泄漏点,并给出详尽的解决方案,再也不用担心内存泄漏问题啦~
                  2、HeapAnalyzer
IBM的alphaWorks网站发布的一款免费的JVM内存堆的图形分析工具HeapAnalyzer,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因
 
HeapAnalyzer可以帮助你分析JVM内存堆的如下信息:
 
* List of Java heap leak suspects
* Recommendation of the size of kCluster
* List of gaps among allocated objects/classes/arrays
* Java objects/classes/arrays search engine
* List of objects/classes/arrays by type name
* List of objects/classes/arrays by object name
* List of objects/classes/arrays by address
* List of objects/classes/arrays by size
* List of objects/classes/arrays by size of child
* List of objects/classes/arrays by number of child
* List of objects/classes/arrays by frequency
* List of available heap spaces by size
* Tree view of Java heap dump
* Loading/saving processed Java heap dumps.
 
对于恼人的Java内存泄漏问题,HeadAnalyzer无疑是一把利器
            (3)错误跟踪工具
                    1、Raygun 错误管理系统
Raygun是一款基于Web的错误管理系统,用于跟踪应用程序异常。它支持多种桌面、移动和Web编程语言,包括Java、Scala、.NET、Python、PHP和JavaScript,其主要特点如下:
错误分组——同一Bug多次出现会显示在同一个组中;
全文搜索——错误组及所有收集到的数据都是可搜索的;
查看应用活动——错误组上的每个动作都会展示给所有的团队成员,如状态更新、评论等;
受影响的用户——每个错误影响的用户数;
外部集成——Github、Bitbucket、Asana、JIRA、HipChat等。
 
2、Sentry
Sentry是一个基于Web的开源解决方案,用于实时地事件日志记录和聚合,支持的语言包括Ruby、Python、JS、Java、Django、.NET等,其主要特点如下:
可以实时查看新部署的影响;
在用户访问因错误而中断时,可以利用Sentry日志向他提供支持,帮助他恢复访问;
检测并防止欺骗——比如,如果购买、身份验证次数超出正常范围,Sentry就会发出通知;
可以集成GitHub、HipChat、Heroku等。
 
3、Takipi   错误追踪和分析
Takipi是一个软件即服务(SaaS)模型,使用Java代理实时地进行代码分析及跟踪代码变化。它的大部分分析工作都是在云上完成的,支持JVM语言,包括Java、Scala、Clojure、Groovy、JRuby、Jython等,其主要特点如下:
检测——所有捕获和未捕获的异常、HTTP和日志错误;
按优先级排序——错误在整个集群中的发生频率、是否包含新的或修改过的代码、频率是否在增加;
分析——查看具体代码和变量状态;
易于安装;
系统资源开销少于2%。
Takipi的目标很简单:告诉开发者代码崩溃的时间及原因。无论在何时发生异常,Takipi都会抓取到并给出分析报告。
 
4、Airbrake
Airbrake为用户提供了一个基于Web的界面,上面有一个仪表板,记录了错误的详细信息以及特定应用程序的视图,支持的语言包括Ruby、PHP、Java、.NET、Python、Swift等,其主要特点如下:
详细的堆栈跟踪信息,根据错误类型、用户和环境变量分组;
提高团队生产力——从繁杂的信息中过滤出重要的错误;
团队协作——查看哪位成员导致了Bug以及哪位成员正在进行修复;
外部集成——包括HipChat、 GitHub、JIRA、Pivotal等共30多种。
 
5、StackHunter
StackHunter是一款自托管的Java异常跟踪工具,目前还是测试版。它可以将异常通知给开发者,并帮助他们更快地解决问题,其主要特点如下:可以在单个自托管的Web界面上查看所有异常;
收集堆栈跟踪数据和上下文信息,例如,异常、受影响的用户、受影响的会话等;
在异常发生时立即发送警告邮件;
根据异常产生的根本原因将其分组。
             (4)日志记录管理工具
                       1、 Loggly
Loggly 也是一个健壮的日志分析工具,强调简洁朴素让开发者用起来方便
优点
SL 注重的是企业级别的应用和安全性,而 Loggly 却将重点放在了帮助开发者查找和修复操作性的问题上。因为操作界面非常友好,自定义性能和开发者仪表盘这种东西非常简单。并且它的价格透明,入门方便。
缺点
不要奢望 Loggly 具备成熟的架构、安全和分析解决方案。Loggly 不具备取证和监控基础架构,它仅仅是帮助开发者处理应用服务器数据的一个工具。除此之外的其他事情就需要你自己去做了。
 
(三)源码分析工具
          1、 Source-Navigator
Source-Navigator是原来redhat开发的一个源代码管理分析工具,它可以在Windows,Linux等多种平台下工作。功能类似于windows下的Sourceinsight,它可以显示类,函数以及成员之间的关系,对阅读分析源代码机器有用。
Source-Navigator 支持C, C++, Java, Tcl, [incr Tcl], FORTRAN 和 COBOL, 并且提供SDK给开发者开发自己的语言解析器
你可以使用Source-Navigator:
      • 分析某处源码的变化对其他模块的影响
      • 查找某个函数被调用的地方
      • 查找所有包含某个头文件的文件
      • 利用grep工具在源码中进行搜索
Source-Navigator 是基于 GNU Public License 的
   2、Source insight 
              Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工     作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息
      Source Insight不仅仅是一个强大的程序编辑器,它还能显示reference trees,class inheritance diagrams和call trees。Source Insight提供了最快速的对源代码的导航和任何程序编辑器的源信息。 Source Insight提供了快速和革新的访问源代码和源信息的能力。与众多其它编辑器产品不同
 
(四)Web应用性能测试
1、javamelody
为了提升应用的性能我们可能需要做很多分析和优化。但具体从哪里优化,优化的效果是多少就难以判定了。
 
javamelody用嵌入式的监控方式,实时监控性能指标。如:页面相应时间,spring bean方法调用时间,sql语句执行时间等很多指标。我在这就不一一列举了。
 
我感觉比较好的两特点是:
会自动按命中次数与相应时间结合排序,这就可以知道优化哪个页面,bean方法,sql最有效果
页面,bean,sql自动关联,可钻取,点页面可以看页面中调用bean方法的情况,点bean方法可以看sql情况
                    2、FunkLoad
                    FunkLoad是一个功能和负载的Web测试仪,主要的用于Web项目(进行回归测试),性能测试,负载测试(如音量的测试或寿命测试),压力测试的 功能。它也可以用来编写Web代理脚本的任何Web重复性的任务。 FunkLoad 是一个网站项目的功能、性能测试工具。
(五)代码质量分析工具
     1、 Logiscope     
Logiscope有三项主要功能,以三个独立工具的形式出现,分别是:
软件质量分析工具 - Audit;
代码规范性检测工具 - Rulechecker;
测试覆盖率统计工具 - TestChecker。
Audit和Rulechecker提供了对软件进行静态分析的功能,TestChecker提供了测试覆盖率统计的功能。
Logiscope可以对多种语言实现的代码进行分析,比如C、C++、Java、Ada,等等。下面的内容与具体的语言基本是没有关系的,但如果某些地方确实要涉及具体的语言,则我都是以C++为例。
 
     2、 SonarQube
                    SonarQube(曾用名Sonar)是一个开源的代码质量管理系统。
     3、FindBugs
           FindBugs是由Bill Pugh和David Hovemeyer创建的开源程序,用来查找Java代码中的程序错误。它使用静态分析来识别Java程序中上百种不同类型的潜在错误。
潜在错误可分为四个等级:恐怖的(scariest)、吓人的(scary)、令人困扰的(troubling)和值得关注的(of concern),这是根据其可能产生的影响或严重程度,而对开发者的提示。[4]FindBugs操作的是Java字节码,[3]而非源代码。软件作为一个独立的图形化应用程序分发。[5] Eclipse[6]、NetBeans[7]、IntelliJ IDEA[8][9][10]、Gradle、Hudson[11]和Jenkins[12]有可用的FindBugs插件。
也可以给FindBugs添加用于检查的规则集。
(六)javascript测试工具
     1、 OneHeap
         OneHeap 关注于运行中的 JavaScript 内存信息的展示,用可视化的方式还原了 HeapGraph,有助于理解 v8 内存管理
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

posted @ 2015-10-11 13:42  奋斗超云  Views(680)  Comments(0Edit  收藏  举报