自动化测试工具Parasoft功能对比之Java测试篇(七):Parasoft VS Fortify

原创|对比评测|编辑:李显亮|2021-05-21 09:18:24.193|阅读 27 次

概述:从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,加快软件交付,节约交付成本。本文是parasoft与同类产品Fortify的功能对比,希望对您有所帮助。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

相关链接:

你知道测试金字塔吗?

为了用开发实践来扩大测试规模,如何以正确的数量设计合适类型的自动化测试?测试金字塔是一个很好的指南!

测试金字塔是一个很好的视觉隐喻,它描述了不同的测试层,以及每一层要做多少测试。

Parasoft测试金字塔

虽然测试自动化金字塔为高效的测试自动化策略提供了一个蓝图,但你不能把测试质量融入到应用程序中。金字塔需要建立在坚实的基础上,进行深度的代码分析,专注于识别和预防可靠性和安全性问题。Parasoft测试金字塔,如下图所示,展示了Parasoft如何帮助每个级别的测试解决方案。

测试自动化金字塔在软件开发中是如何使用的?

本文是自动化测试工具Parasoft功能对比之Java测试篇之一,将介绍Parasoft Jtest和同类工具Fortify的功能对比,哪一款更强大一目了然。

如果你想试用Parasoft的强大功能,请联系在线客服

Jtest 启用规则(136条) Fortify CWE说明 规则分类
合并CWE、PCI DATA的规则集并添加了部分重要规则   严重等级 是否有对应规则 对应的规则名称 是否在CWE中有要求
BD.CO.ITMOD 不要在遍历集合时修改它 1 缺陷预防
BD.EXCEPT.NP 避免空指针 1 API Abuse-Missing Check against Null
Code Quality-Null Dereference
Code Quality-Redundant Null Check 
缺陷预防
BD.PB.ARRAY 避免访问数组越界 1 缺陷预防
BD.PB.ARRAYINP 避免输入未经验证的数组索引 1 Code Quality--Code Correctness: Erroneous Negative Value
Code Quality--Code Correctness: Erroneous Zero Value 
缺陷预防
BD.PB.CC 避免总是为相同的值的条件 2 Code Quality-Dead Code: Expression is Always false
Code Quality-Dead Code: Expression is Always true
缺陷预防
BD.PB.SWITCH 避免不能到达的分支 2 缺陷预防
BD.PB.ZERO 避免除零错误 1 缺陷预防
BD.RES.FREE 不要使用已释放的资源 1 缺陷预防
BD.RES.LEAKS 确保资源已释放 1 Code Quality-Unreleased Resource: Streams  缺陷预防
BD.SECURITY.CUSTOM 防止安全漏洞(自定义规则)   1 缺陷预防
BD.SECURITY.SENS 防止敏感数据的曝露 1 Encapsulation-System Information Leak
Encapsulation-System Information Leak: Apache Axis
Encapsulation-System Information Leak: Apache Axis 2
Encapsulation-System Information Leak: Overly Broad SQL Logging 
缺陷预防
BD.SECURITY.TDCMD 防止命令注入 1 Input Validation and Representation-Command Injection  缺陷预防
BD.SECURITY.TDDIG 防止 Jakarta Digester 注入 1 缺陷预防
BD.SECURITY.TDENV 防止环境注入 1 缺陷预防
BD.SECURITY.TDFILES 防止文件内容注入 1 缺陷预防
BD.SECURITY.TDFNAMES 防止文件名注入 1 Input Validation and Representation-Path Manipulation
Input Validation and Representation-Often Misused: File Upload
Input Validation and Representation-Dangerous File Inclusion 
缺陷预防
BD.SECURITY.TDJXPATH 防止 JXPath 注入 1 缺陷预防
BD.SECURITY.TDLDAP 防止 LDAP注入 1 Input Validation and Representation-LDAP Injection
Input Validation and Representation-LDAP Manipulation 
缺陷预防
BD.SECURITY.TDLIB 防止 Library 注入 1 Input Validation and Representation-Process Control  缺陷预防
BD.SECURITY.TDLOG 防止日志伪造 1 Input Validation and Representation-Log Forging  缺陷预防
BD.SECURITY.TDNET 防止网络资源注入 1 Input Validation and Representation-Resource Injection   缺陷预防
BD.SECURITY.TDRESP 防止HTTP响应拆分 1 Input Validation and Representation-HTTP Response Splitting 缺陷预防
BD.SECURITY.TDRFL 防止映射注入 1 Input Validation and Representation-Unsafe Reflection  缺陷预防
BD.SECURITY.TDSQL 防止SQL注入 1 Input Validation and Representation-SQL Injection
Input Validation and Representation-SQL Injection: JDO
Input Validation and Representation-SQL Injection: Persistence
Input Validation and Representation-SQL Injection: iBatis Data Map 
缺陷预防
BD.SECURITY.TDXML 防止XML数据注入 1 Input Validation and Representation-XML Injection  缺陷预防
BD.SECURITY.TDXPATH 防止XPath注入 1 Input Validation and Representation-XPath Injection  缺陷预防
BD.SECURITY.TDXSS 防止 XSS 漏洞 1 Input Validation and Representation-Cross-Site Scripting: DOM
Input Validation and Representation-Cross-Site Scripting: External Links
Input Validation and Representation-Cross-Site Scripting: Persistent
Input Validation and Representation-Cross-Site Scripting: Poor Validation
Input Validation and Representation-Cross-Site Scripting: Reflected 
缺陷预防
BD.TRS.LOCK 不要抛弃未释放锁 1 缺陷预防
BD.TRS.TSHL 在持有锁的同时,不要使用blocking方法 1 缺陷预防
EJB.AMSC 不要访问或修改安全性配置对象。 2 安全
EJB.DPANY 避免EJB方法的授权访问权限为 'ANYONE' 角色 3 Environment-J2EE Misconfiguration: Weak Access Permissions  安全
EJB.EJB3.PERMIT 避免EJB 3没有安全注释的方法 3 安全
EJB.LNL 避免在 Bean 类中加载本地库文件。 2 安全
EJB.SMSN 在 EJB 中不要设置或创建一个新的 SecurityManager 2 安全
GC.FCF 从 'finalize()' 中调用 'super.finalize()'。 1 API Abuse-Code Correctness: Erroneous finalize() Method  规则规范
GC.FM 不要使用'finalize ()'方法去注销监听。 1 安全
GC.IFF 在 'finalize()' 方法的 "finally" 模块中调用 'super.finalize()'。 1 规则规范
GC.NCF 不要明确地调用 'finalize ()'。 1 API Abuse-Poor Style: Explicit Call to finalize()  安全
HIBERNATE.CHS 在 "finally" 块中关闭 Hibernate 会话 2 规则规范
HIBERNATE.CSF 关闭所有 'SessionFactory' 对象。 3 规则规范
HIBERNATE.LHII 避免在 'log4j.properties' 文件中记录与 Hibernate 相关的为 'info' 级别的敏感信息。 3 Encapsulation-System Information Leak: Overly Broad SQL Logging 安全
HIBERNATE.UPWD 避免在 'web.xml' 文件中保存未加密的 Hibernate 用户名和密码。 1 Environment-Password Management: Password in Configuration File
Security Features-Password Management: Hardcoded Password 
安全
INTER.SEO 避免调用不允许指定字节码选项的方法和构造函数 。 3 规则规范
JDBC.CDBC 在 "finally" 块中关闭 JDBC 连接 1 Database-Unreleased Resource 安全
JDBC.RRWD 在 "finally" 块中关闭 JDBC 资源 1 安全
OPT.CCR 在 "finally" 代码块关闭所有的 "java.io.Closeable" 资源 。 3 规则规范
OPT.CIO 在"finally"代码块中关闭输入输出资源 1 规则规范
OPT.SI 如果可以,声明成员类为"static"。 1 规则规范
OPT.USC 为常量字符串使用'String'而不是'StringBuffer' 1 规则规范
OPT.USCL 避免有问题地使用non-short-circuit逻辑。 1 规则规范
PB.CUB.RMO 避免引用易变的字段 3 缺陷预防
PB.CUB.TOCTOU 避免 Time-of-check Time-of-use (TOCTOU) 竞争条件 1 缺陷预防
PB.LOGIC.FLRC 避免无限递归方法调用 1 缺陷预防
PB.NUM.AIC 避免整型类型到浮点数据类型的强制转换. 3 缺陷预防
PB.NUM.BBDCC 不要传递浮点值给 'BigDecimal'构造函数。 3 缺陷预防
PB.NUM.BSA 不要使用[0 31]范围外的整型作为移位操作的位数 1 缺陷预防
PB.NUM.CACO 避免在可能会导致溢出的情况下使用符合赋值操作符 3 缺陷预防
PB.NUM.CLP 不要把原始数据类型转换为较低的精度 2 缺陷预防
PB.NUM.DCF 不要比较浮点类型 3 缺陷预防
PB.NUM.FPLI 不要使用浮点类型变量作为循环的索引. 1 缺陷预防
PB.NUM.ICO 避免导致溢出或NaN的计算 2 缺陷预防
PB.NUM.IDCD 不要将整数相除的结果赋值给一个浮点变量 1 缺陷预防
PB.NUM.IMOF 避免整型的乘法结果转换成 "long" 3 缺陷预防
PB.NUM.IOF 当可能会溢出时使用无符号右移而不是除. 3 缺陷预防
PB.NUM.NIA 不要用负数来初始化数组的维数 1 Encapsulation-Unsafe Mobile Code: Unsafe Array Declaration
Code Quality--Code Correctness: Erroneous Negative Value
Code Quality--Code Correctness: Erroneous Zero Value 
缺陷预防
PB.NUM.UBD 如果需要确切的结果的话不要使用"float"和"double" 3 缺陷预防
PB.NUM.UCM 避免传递整形值给'Math.round()' 3 缺陷预防
PB.RE.ACTI 不要添加一个集合到它自己 1 缺陷预防
PB.RE.CAI 参数被在数组访问使用前总是检查 4 缺陷预防
PB.TYPO.WT 确保传递给ava包装器类的参数没有输写错误 1 缺陷预防
PB.USC.CC 避免总是等于常量值的条件表达式 1 Code Quality-Dead Code: Expression is Always true
Code Quality-Dead Code: Expression is Always false
缺陷预防
PORT.NATV 不要使用用户自定义的"native"方法。 3 Input Validation and Representation-Unsafe JNI  安全
PROPS.PLAIN 密码信息不应以明文形式包括在属性文件中 3 Security Features-Password Management
Environment-Password Management: Password in Configuration File 
安全
SECURITY.BV.DSSM 不要在'main'函数外设置自定义安全管理。 2 安全
SECURITY.BV.ENFL 确保所有的敏感方法调用被记录 2 安全
SECURITY.EAB.LDP 限制每个类调用"AccessController.doPrivileged"的次数。 4 安全
SECURITY.EAB.MPT 不要直接将某些特定类型传递给用户指定的可变对象 3 安全
SECURITY.EAB.PCL 在"privileged"代码块中限制行数  4 安全
SECURITY.ESD.CONSEN 没有机密日志或敏感信息 5 安全
SECURITY.ESD.PEO 不通过异常消息转换成输出,以防止应用程序泄露敏感信息 2 安全
SECURITY.ESD.PLC 避免在cookie中存储明文的敏感数据 3 Security Features-Cookie Security: Persistent Cookie  安全
SECURITY.ESD.UPCT 凭证传输使用 'post' 而不是 'get'  2 安全
SECURITY.IBA.AEAF 不要从Struts 类 'ActionForm' 和 'DynaActionForm'继承。 3 Input Validation and Representation-Struts: Form Does Not Extend Validation Class  安全
SECURITY.IBA.CDBV 验证之前,规范化的所有数据。 3 安全
SECURITY.IBA.UPS 使用 'prepareCall' 或r 'prepareStatement' 而不是 'createStatement' 3 Input Validation and Representation-SQL Injection  安全
SECURITY.IBA.VPPD 封装所有危险数据返回给验证功能方法  2 安全
SECURITY.IBA.VRD 封装了所有重定向和转发的URL与验证功能 1 安全
SECURITY.UEC.DSR 避免在 'web.xml' 中定义具有相同名称的多种安全角色 2 安全
SECURITY.UEC.HTTPS 在 'axis2.xml' 配置文件中使用 'https' 而不是 'http' 用于 'transportReceiver' 和 'transportSender' 5 安全
SECURITY.UEC.LCA 包括一个适当的 '<login-config>' 元素来指定在 'web.xml' 文件中要执行身份验证的类型 3 安全
SECURITY.UEC.PCCF 避免在 Castor 的 'jdo-conf.xml' 文件中以纯文本格式存储用户名和密码 1 Environment-Password Management: Password in Configuration File 安全
SECURITY.UEC.PTPT 避免在 Axis 'wsdd' 文件中使用纯文本密码 3 Environment-Axis 2 Service Requester Misconfiguration: Plain Text Password
Environment-Axis Service Requester Misconfiguration: Plain Text Password
安全
SECURITY.UEC.PWD 确保密码不存储在纯文本中和足够长 1 Security Features-Password Management
Security Features-Password Management: Hardcoded Password 
安全
SECURITY.UEC.SRCD 确保在 'web.xml' 文件中引用的每个安全角色有一个相对应的定义 3 安全
SECURITY.UEC.STTL 确保在'web.xml'文件中配置会话超时时间在一个合理范围内。 3 Environment-J2EE Misconfiguration: Excessive Session Timeout
Security Features-Acegi Misconfiguration: Run-As Authentication Replacement 
安全
SECURITY.UEC.UTAX 避免在 Axis2 配置文件中使用纯文本密码 3 Environment-Password Management: Password in Configuration File  安全
SECURITY.UEC.WCPWD 避免在 WebSphere 的 'ibm-webservicesclient-ext.xmi' 文件中有未加密的密码 1 Security Features-Password Management: Hardcoded Password  安全
SECURITY.UEC.WELC 确保所有 web 内容目录中有一个 "welcome file" 1 安全
SECURITY.UEC.WPWD 避免在 WebSphere 的 'ibm-webservices-ext.xmi' 文件中有未加密的密码 1 Environment-Password Management: Password in Configuration File
Security Features-Password Management: Hardcoded Password 
安全
SECURITY.UEHL.LGE 确保所有的异常要么是一个标准的记录器要么被重新抛出 3 安全
SECURITY.WSC.ACPST 不要调用 "Throwable"对象的'printStackTrace()'方法。  5 安全
SECURITY.WSC.AHCA 避免硬编码的参数确定方法 3 安全
SECURITY.WSC.CACM 保持所有访问控制方法集中强制执行的一致性 3 安全
SECURITY.WSC.CAM 保持所有访问控制方法集中强制执行的一致性 3 安全
SECURITY.WSC.DNSL 避免DNS查找进行决策 4 API Abuse-Often Misused: Authentication  安全
SECURITY.WSC.ENPP 确保参数传递到某些预先定义的方法列表中的方法。 2 安全
SECURITY.WSC.HCCK 避免使用硬编码密键 3 安全
SECURITY.WSC.HCCS 避免传递硬编码的用户名/密码/URl到数据库连接方法. 2 Security Features-Password Management
Security Features-Password Management: Hardcoded Password  
安全
SECURITY.WSC.ICA 不要对密码学使用不安全算法。 2 Security Features-Weak Encryption  安全
SECURITY.WSC.PAC 调用认证方法执行一致性 2 安全
SECURITY.WSC.PACC 调用访问控制方法以执行一致性 2 安全
SECURITY.WSC.PPF 不允许密码字段是自动完成的。 2 安全
SECURITY.WSC.SCF 在设置或得到字段之前执行'SecurityManager'检测  2 安全
SECURITY.WSC.SCSER 在可序列化类的方法中执行SecurityManager' 检测。 2 Security Features-Missing SecurityManager Check: Serializable 安全
SECURITY.WSC.SCSM 确保 "public" 非"final" 敏感类型的构造函数中的SecurityManager检测 3 安全
SECURITY.WSC.SMSTR 在 'Socket' transfers or retrievals转移或撤回之前确保SecurityManager检测。 4 安全
SECURITY.WSC.SRD 使用 'java.security.SecureRandom' 而不是 'java.util.Random' 或 'Math.random()'. 2 Security Features-Insecure Randomness
API Abuse-Obsolete: Deprecated by ESAPI 
安全
SECURITY.WSC.SSM 确保设置了恰当的安全管理 3 Security Features-Acegi Misconfiguration: Run-As Authentication Replacement 安全
SECURITY.WSC.UOSC 使用''getSecure()''和 ''setSecure()'' 方法执行安全cookies的使用. 3 Security Features-Cookie Security: Cookie not Sent Over SSL 安全
SECURITY.WSC.USC 可能的话使用类的SSL-enabled版本。 2 安全
SERVLET.CETS 捕获所有可能在Servlet方法中抛出的异常 4 Environment-Struts Misconfiguration: Missing Exception Type  安全
SERVLET.UCO 使用一个Context对象来管理HTTP请求参数 4 Input Validation and Representation-Open Redirect  安全
STRUTS.MLVP 在'validation.xml'中为密码字段使用'minlength' 验证器 2 Input Validation and Representation-Missing XML Validation  安全
TRS.CHM 如果可能尽量用使用 HashMap 的包装类 ConcurrentHashMap 来代替 Hashtable 和 "synchronizedMap"。 5 规则规范
TRS.CIET 不要捕获InterruptedException异常除非是在扩展自线程的类中 4 安全
TRS.CMA 避免复合同步破坏原子性的集合访问。 3 规则规范
TRS.DCL 避免执行不安全的 "double-checked locking" 模式。 3 Time and State-Code Correctness: Double-Checked Locking  安全
TRS.IASF 审查有权使用可能需要同步的 "static" 字段 2 安全
TRS.ILI 保证延迟初始化的线程安全 4 安全
TRS.RUN 对实现 'Runnable.run()'的方法使用同步。 5 规则规范
TRS.SOUF 不要对 non-"final" 字段使用同步因为这样做会很难保证互斥。 3 规则规范
TRS.SSUG 如果 set 方法是同步的那么也要保证 get 方法也是同步的 3 规则规范
TRS.UACS 避免非同步访问 "Collections.synchronized" 的包装集合。 3 规则规范
TRS.UCM 只有在安全的情况下才使用非同步的 Collections/Maps。 3 规则规范
UC.AURV 避免从未被读取过的局部变量 1 Code Quality-Poor Style: Value Never Read  规则规范
UC.PF 避免未使用的"private" 字段 1 Code Quality-Poor Style: Value Never Read  规则规范
UC.SNE 避免空的 "synchronized" 语句。 1 Code Quality-Poor Style: Empty Synchronized Block  规则规范

(如有差错欢迎评论留言,小编虚心与大家共同探讨)


Parasoft——领先的自动化测试工具,满足绝大多数行业标准

Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。

从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。

强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。

Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat