其他非功能性测试
安全性测试:
理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值,此时非法侵入者已无利可图
(1)不同的安全性风险:
跨站点脚本(cross-site scripting,XSS)攻击;SQL注入式漏洞;URL和API的身份验证;缓冲区溢出;不安全的数据存储或传递;不安全的配置管理;有问题的访问控制,权限分配有问题;口令设置不严,包括长度、构成和更新频率;暴露的端口或入口;
(2)安全性的测试范围:
- 安全功能测试 (Security Functional Testing):数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等
- 安全漏洞测试 (Security Vulnerability Testing):从攻击者的角度, 以发现软件的安全漏洞为目的。安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点。
(3)安全性测试方法:
- 基于漏洞的方法: 从软件内部考虑其安全性,识别软件的安全漏洞。如借助于特定的漏洞扫描器。
- 基于威胁的方法:从软件外部考察其安全性,识别软件面临的安全威胁并测试其是否能够发生。
- 模拟攻击测试是一组特殊的、极端的测试方法,如Fuzzing,使用大量半有效的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞。
- 白盒方法:用商业的统计分析工具、对源码的内审、借助工具 Coverity /Fortify 等。
- 黑盒方法:错误注入(Fault injection)、Dumb Fuzzing。
- 灰盒方法:Smart Fuzzing / Intelligent fuzzing 。
(4)用户认证测试-传统的功能测试方法:
- 明确区分系统中不同用户权限
- 系统中会不会出现用户冲突
- 系统会不会因用户的权限的改变造成混乱
- 用户登陆密码是否是可见、可复制
- 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
- 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
(5)安全性测试工具:
- Burp suite:用于攻击Web应用程序的集成平台
- Nikto:Web服务器扫描程序
- Paros proxy:web代理程序,可评估Web应用程序的漏洞
- TamperIE:小巧的XSS漏洞检测辅助工具
- Tripwire:常用的开放源码的完整性检查工具
- Wapiti:安全测试工具,直接对网页进行扫描
- Whisker/Wikto:使用LibWhisker的扫描程序(HTTP测试)
- 网络监控工具主要有Nessus、Wireshark、Snort、Netcat等。
可靠性/容错性测试
可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。
DDP(错误发现率)=测试发现的错误数量/已知的全部错误数量。
容错性测试(Fault-tolrent test)是检查软件在异常条件下 自身是否具有防护性的措施或者某种灾难性恢复的手段。
- 输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好的话,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。
- 灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失、系统和数据是否能尽快恢复。
兼容性测试
兼容性测试: 验证软件之间是否正确地交互和共享信息
硬件兼容、 软件之间兼容 、数据之间兼容。
通常的做法:
- 将软件分类。例如:字处理,电子表格,数据库,图形处理,游戏等。从每种类型中选择部分测试软件
- 按软件的流行程度选择较流行的软件
- 按年份,选取一定年份内的程序和版本