- 软件测试
使用人工或者自动化的手段来运行或测试某个系统的过程,其目的在于检验他是否满足规定的需求或是弄清预期结果与实际结果之间的差异(是否满足需求)。 基本概念: - 测试用例
- 测试覆盖率度量指标
实践经验 预期测试的结果是预先确定的 好的测试用例发现错误的概率高 成功的测试就是发现了错误的测试 测试独立于编码 需要具备应用(用户)及软件(编程)两方面的专业知识 测试人员使用不同于开发人员的工具 只检查常用的测试用例是不够的 测试文档要能够再利用 - 软件测试方法
单元测试(某一功能)、集成测试(工作流程,模块接口)、系统测试(整个软件彻底的测试) 黑盒测试(完全不了解)、白盒测试(完全了解)、灰盒测试(有一定了解) 静态测试(不运行只分析)、动态测试(运行反馈) 回归测试(发生修改之后的测试) 验收测试
1.安全测试要点
软件安全测试:
- 确定软件的安全特性实现是否与与其设计一直的过程
- 有关验证软件安全等级和识别潜在安全缺陷的过程
- 查找软件自身程序设计中存在的安隐患,并检查应用程序对非法侵入的防范能力
- 传统的测试仅考虑软件出错时的处理,没有考虑对软件的故意攻击。而安全测试注重于软件的故意攻击。
2.安全测试方法
在应用投产前,应由独立的安全团队对应用的安全性进行综合评估。
2.1.模糊测试
2.1.1.概念
- 模糊测试也称为Fuzzing测试,一种通过提供非预期的输入并监视异常结果来发现软件故障的方法。
- 黑盒测试,不关心被测试目标的内部实现,而是利用构造畸形的输入数据引发被测试目标产生异常,从而发现相应的安全漏洞。
- 模糊测试是一种非常有效的漏洞挖掘技术,已知漏洞大部分都是通过这种技术发现是的。
2.1.2.过程特点
- 强制软件程序使用恶意/破坏性的数据并进行观察结果的一种测试方法
不够健壮的程序会崩溃 编码良好的程序正常运行 - 特性
方法学 随机值 大量测试用例 查找漏洞或可靠性的错误 - 主要步骤
1.生成大量的畸形数据作为测试用例; 2.将这些测试用例作为输入应用于被测对象; 3.监控和记录由输入导致的任何崩溃或异常现象; 4.查看测试日志,深入分析产生奔溃或异常的原因。
2.1.3.影响因素
数据通道入口(例如SSID)、可信边界点
选择覆盖面广、便于测试多个样本
智能模糊测试
2.2.渗透测试
2.2.1.概念
- 渗透测试通过模拟恶意攻击者进行攻击,来评估系统安全的一种评估方法,从攻击者的角度测试软件系统是否安全。
- 使用自动化工具或者人工的方法模拟攻击者的输入,找出运行时刻
目标系统所存在的安全漏洞。 优缺点:
优点:找出来的问题都是真实的,也是较为严重的
缺点:只能到达有限的测试点,覆盖率较低(人工测试)
2.2.2.过程特点
渗透测试流程 特点
安全性的评估,不是摧毁或破坏
技术、知识和经验很重要、像“坏人一样思考问题”
系统备份和恢复措施、风险规避
3.安全测试组合及思路
组合
- 代码审计+体系结构风险评估
- 基于风险的安全测试+渗透测试
- 安全需求分析+滥用案例开发
- 代码审计+渗透测试
- 体系结构风险分析+基于风险的测试
… 思路 - 充分了解软件安全漏洞
- 评估软件安全风险
- 拥有高效的软件安全测试和工具
|