快速了解自动化测试工具Parasoft vs Fortify功能对比

你知道测试金字塔吗?

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

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

Parasoft测试金字塔

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

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

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

如果你想试用Parasoft的强大功能,可以申请完整版试用

Jtest 启用规则(136条)FortifyCWE说明规则分类
合并CWE、PCI DATA的规则集并添加了部分重要规则  严重等级是否有对应规则对应的规则名称是否在CWE中有要求
BD.CO.ITMOD不要在遍历集合时修改它1缺陷预防
BD.EXCEPT.NP避免空指针1API Abuse-Missing Check against Null
Code Quality-Null Dereference
Code Quality-Redundant Null Check 
缺陷预防
BD.PB.ARRAY避免访问数组越界1缺陷预防
BD.PB.ARRAYINP避免输入未经验证的数组索引1Code Quality--Code Correctness: Erroneous Negative Value
Code Quality--Code Correctness: Erroneous Zero Value 
缺陷预防
BD.PB.CC避免总是为相同的值的条件2Code 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确保资源已释放1Code Quality-Unreleased Resource: Streams 缺陷预防
BD.SECURITY.CUSTOM防止安全漏洞(自定义规则)  1缺陷预防
BD.SECURITY.SENS防止敏感数据的曝露1Encapsulation-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防止命令注入1Input Validation and Representation-Command Injection 缺陷预防
BD.SECURITY.TDDIG防止 Jakarta Digester 注入1缺陷预防
BD.SECURITY.TDENV防止环境注入1缺陷预防
BD.SECURITY.TDFILES防止文件内容注入1缺陷预防
BD.SECURITY.TDFNAMES防止文件名注入1Input 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注入1Input Validation and Representation-LDAP Injection
Input Validation and Representation-LDAP Manipulation 
缺陷预防
BD.SECURITY.TDLIB防止 Library 注入1Input Validation and Representation-Process Control 缺陷预防
BD.SECURITY.TDLOG防止日志伪造1Input Validation and Representation-Log Forging 缺陷预防
BD.SECURITY.TDNET防止网络资源注入1Input Validation and Representation-Resource Injection  缺陷预防
BD.SECURITY.TDRESP防止HTTP响应拆分1Input Validation and Representation-HTTP Response Splitting缺陷预防
BD.SECURITY.TDRFL防止映射注入1Input Validation and Representation-Unsafe Reflection 缺陷预防
BD.SECURITY.TDSQL防止SQL注入1Input 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数据注入1Input Validation and Representation-XML Injection 缺陷预防
BD.SECURITY.TDXPATH防止XPath注入1Input Validation and Representation-XPath Injection 缺陷预防
BD.SECURITY.TDXSS防止 XSS 漏洞1Input 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' 角色3Environment-J2EE Misconfiguration: Weak Access Permissions 安全
EJB.EJB3.PERMIT避免EJB 3没有安全注释的方法3安全
EJB.LNL避免在 Bean 类中加载本地库文件。2安全
EJB.SMSN在 EJB 中不要设置或创建一个新的 SecurityManager2安全
GC.FCF从 'finalize()' 中调用 'super.finalize()'。1API Abuse-Code Correctness: Erroneous finalize() Method 规则规范
GC.FM不要使用'finalize ()'方法去注销监听。1安全
GC.IFF在 'finalize()' 方法的 "finally" 模块中调用 'super.finalize()'。1规则规范
GC.NCF不要明确地调用 'finalize ()'。1API Abuse-Poor Style: Explicit Call to finalize() 安全
HIBERNATE.CHS在 "finally" 块中关闭 Hibernate 会话2规则规范
HIBERNATE.CSF关闭所有 'SessionFactory' 对象。3规则规范
HIBERNATE.LHII避免在 'log4j.properties' 文件中记录与 Hibernate 相关的为 'info' 级别的敏感信息。3Encapsulation-System Information Leak: Overly Broad SQL Logging安全
HIBERNATE.UPWD避免在 'web.xml' 文件中保存未加密的 Hibernate 用户名和密码。1Environment-Password Management: Password in Configuration File
Security Features-Password Management: Hardcoded Password 
安全
INTER.SEO避免调用不允许指定字节码选项的方法和构造函数 。3规则规范
JDBC.CDBC在 "finally" 块中关闭 JDBC 连接1Database-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不要用负数来初始化数组的维数1Encapsulation-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避免总是等于常量值的条件表达式1Code Quality-Dead Code: Expression is Always true
Code Quality-Dead Code: Expression is Always false
缺陷预防
PORT.NATV不要使用用户自定义的"native"方法。3Input Validation and Representation-Unsafe JNI 安全
PROPS.PLAIN密码信息不应以明文形式包括在属性文件中3Security 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中存储明文的敏感数据3Security Features-Cookie Security: Persistent Cookie 安全
SECURITY.ESD.UPCT凭证传输使用 'post' 而不是 'get' 2安全
SECURITY.IBA.AEAF不要从Struts 类 'ActionForm' 和 'DynaActionForm'继承。3Input Validation and Representation-Struts: Form Does Not Extend Validation Class 安全
SECURITY.IBA.CDBV验证之前,规范化的所有数据。3安全
SECURITY.IBA.UPS使用 'prepareCall' 或r 'prepareStatement' 而不是 'createStatement'3Input 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' 文件中以纯文本格式存储用户名和密码1Environment-Password Management: Password in Configuration File安全
SECURITY.UEC.PTPT避免在 Axis 'wsdd' 文件中使用纯文本密码3Environment-Axis 2 Service Requester Misconfiguration: Plain Text Password
Environment-Axis Service Requester Misconfiguration: Plain Text Password
安全
SECURITY.UEC.PWD确保密码不存储在纯文本中和足够长1Security Features-Password Management
Security Features-Password Management: Hardcoded Password 
安全
SECURITY.UEC.SRCD确保在 'web.xml' 文件中引用的每个安全角色有一个相对应的定义3安全
SECURITY.UEC.STTL确保在'web.xml'文件中配置会话超时时间在一个合理范围内。3Environment-J2EE Misconfiguration: Excessive Session Timeout
Security Features-Acegi Misconfiguration: Run-As Authentication Replacement 
安全
SECURITY.UEC.UTAX避免在 Axis2 配置文件中使用纯文本密码3Environment-Password Management: Password in Configuration File 安全
SECURITY.UEC.WCPWD避免在 WebSphere 的 'ibm-webservicesclient-ext.xmi' 文件中有未加密的密码1Security Features-Password Management: Hardcoded Password 安全
SECURITY.UEC.WELC确保所有 web 内容目录中有一个 "welcome file"1安全
SECURITY.UEC.WPWD避免在 WebSphere 的 'ibm-webservices-ext.xmi' 文件中有未加密的密码1Environment-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查找进行决策4API Abuse-Often Misused: Authentication 安全
SECURITY.WSC.ENPP确保参数传递到某些预先定义的方法列表中的方法。2安全
SECURITY.WSC.HCCK避免使用硬编码密键3安全
SECURITY.WSC.HCCS避免传递硬编码的用户名/密码/URl到数据库连接方法.2Security Features-Password Management
Security Features-Password Management: Hardcoded Password  
安全
SECURITY.WSC.ICA不要对密码学使用不安全算法。2Security Features-Weak Encryption 安全
SECURITY.WSC.PAC调用认证方法执行一致性2安全
SECURITY.WSC.PACC调用访问控制方法以执行一致性2安全
SECURITY.WSC.PPF不允许密码字段是自动完成的。2安全
SECURITY.WSC.SCF在设置或得到字段之前执行'SecurityManager'检测 2安全
SECURITY.WSC.SCSER在可序列化类的方法中执行SecurityManager' 检测。2Security 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()'.2Security Features-Insecure Randomness
API Abuse-Obsolete: Deprecated by ESAPI 
安全
SECURITY.WSC.SSM确保设置了恰当的安全管理3Security Features-Acegi Misconfiguration: Run-As Authentication Replacement安全
SECURITY.WSC.UOSC使用''getSecure()''和 ''setSecure()'' 方法执行安全cookies的使用.3Security Features-Cookie Security: Cookie not Sent Over SSL安全
SECURITY.WSC.USC可能的话使用类的SSL-enabled版本。2安全
SERVLET.CETS捕获所有可能在Servlet方法中抛出的异常4Environment-Struts Misconfiguration: Missing Exception Type 安全
SERVLET.UCO使用一个Context对象来管理HTTP请求参数4Input Validation and Representation-Open Redirect 安全
STRUTS.MLVP在'validation.xml'中为密码字段使用'minlength' 验证器2Input 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" 模式。3Time 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避免从未被读取过的局部变量1Code Quality-Poor Style: Value Never Read 规则规范
UC.PF避免未使用的"private" 字段1Code Quality-Poor Style: Value Never Read 规则规范
UC.SNE避免空的 "synchronized" 语句。1Code Quality-Poor Style: Empty Synchronized Block 规则规范

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


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

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

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

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

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

申请Parasoft测试试用


版权声明:本文为mnrssj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。