白盒测试之代码审查
代码审查范围
合格代码应该具备正确性、清晰性、规范性、一致性和高效性
- 业务逻辑的审查
- 算法的效率
- 代码风格
- 编程规则
代码审查的方法:
- 互查:在相同模块或者相近模块的编程人员之间相互检查对方的代码
- 走查:从头到尾将写好的代码检查一遍
代码审查
- Java 最基本语句的使用
- 重载函数的审查
- 内存分配和管理:确保内存的及时释放和避免缓冲区溢出
程序性能的审查
- 减少创建用户
- 减少循环体的执行代码,能放在循环体外的代码要尽量放在循环体外
- 提高处理异常出错的效率
- 减少 I/O 操作时间
白盒测试方法-逻辑覆盖
单元测试:软件测试中最基础的测试,集成测试、功能测试和系统测试都建立在单元测试之上;其对象是构成软件产品或者系统的最小的独立单元,如封装的类或者对象、独立的函数、进程、子进程、组件或者模块等
用例设计
对于单元测试用例的设计和程序的实现过程,主要集中在白盒测试方法之上,并力求达到下列测试要求:
- 对程序模块所有独立的执行路径至少要测试一次
- 对所有逻辑判定,其结果为真、假两种情况至少要测试一次
- 对程序进行边界检查(常见的如数据越界检验)
- 检验内部数据结构的有效性
逻辑覆盖法:白盒测试中最主要的测试方法
分类:其基本思想不同,产生的测试用例不同,覆盖范围也有所不同
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定-条件覆盖
- 条件组合覆盖
语句覆盖:设计若干测试用例,运行被测试程序,使程序中的每个可执行语句至少被执行一次
- 不足:不能准确判断运算中的逻辑关系错误
判定覆盖:使每个判断的取真值和取假值都至少经历一次
条件覆盖:使每一个条件的取真值和取假值都至少经历一次
判定-条件覆盖:确保设计足够或精巧的自测用例,可使得判断条件中所有的可能取值至少被执行一次,同时所有判断的可能结构也至少被执行一次
条件组合覆盖:设计足够的测试用例,使判断中每一个条件的所有可能至少出现一次,而且每个判断本身的判定结果也至少出现一次。
- 与判定-条件覆盖的差别:条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次
自动化测试
把手工测试转化为用机器,软件,程序来测试产品的过程
作用
- 缩短软件开发测试周期,可以让产品更快投放市场
- 测试效率高,充分利用硬件资源
- 节省人力资源,降低测试成本
- 增强测试的稳定性和可靠性
- 提高软件测试的准确度和精确度,增加软件信任度
- 软件测试工具使测试工具相对比较容易,但能产生更高质量的测试结果
适合使用自动化测试的项目
- 需求变更有计划性,并且频率不高
- 项目周期长,资源丰富
- 脚本重复利用率高
- 代码规范
手工测试更适合测业务逻辑,自动化测试适合用来测非常基础、没有业务依赖的基础性功能
安全测试
Web 应用的概念:
- 由动态脚本、编译过的代码等组合而成
- 它通常架设在web服务器上,用户在web浏览器上发送请求
- 这些请求使用 HTTP 协议,由 web 应用和企业后台的数据库及其他动态内容通信
Web 应用安全威胁:
- 验证:用来确认某用户、服务或是应用身份的攻击手段
- 授权:用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段
- 客户侧攻击:用来扰乱或是探测web站点用户的攻击手段
- 命令执行:在web站点上执行远程命令的攻击手段
- 信息暴露:用来获取 web 站点具体系统信息的攻击手段
- 逻辑性攻击:用来扰乱或是探测 web 应用逻辑流程的攻击手段
OWASP
10 大安全漏洞:
- 注入:
SQL
注入- 失效身份认证和会话管理
- 跨站脚本:
XSS
- 失效的访问控制
- 安全配置错误
- 敏感信息泄露
- 跨站请求伪造:
CSRF
- 使用含有漏洞的控件
- 攻击检测和防范不足
- 未受保护的
APIs
流程:
不同测试的先后顺序:
- 功能测试
- 自动化测试
- 安全测试:在此期间会有较多代码修改,影响性能测试
- 性能测试
安全审计
自动化审计工具:AppScan
, Weblnspect
不建议依赖审计工具,尽可做临时或紧急使用
性能测试
意义:多个客户端同时访问造成压力
概念:包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性
是描述测试对象与性能相关的特征,并对其进行评价而实现和执行的一类测试。主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下,对系统的各项性能指标进行测试
性能测试包含的事项:
- 评估生产准备状态
- 评估性能判定标准
- 比较多个不同系统或同一系统不同配置之间的性能特征
- 找出导致性能问题的源头
- 帮助进行系统性能调优
- 确定吞吐量水平
核心流程:
确定测试环境:
- 物理环境、生产环境、测试团队可利用的工具和资源
确定性能验收标准
- 确定响应时间、吞吐量、资料利用总目标和限制
计划和设计测试
- 确定关键场景
- 确定典型用户的可变性、以及如何模拟这些变化
- 确定测试数据
- 确定需要收集的度量值
配置测试环境
- 随着需要测试的功能和组件的完善,逐步为每一个策略准备执行所需的测试环境、工具以及资源
实现测试设计
- 根据测试设计逐步展开性能测试
执行测试
- 执行和监控测试
分析结果、报告以及重复测试
- 整合并共享结果数据
性能测试目标:
- 评估软件发布准备
- 评估基础结构是否恰当
- 评估已开发软件的性能是否满足要求
- 提高性能调整效率
性能测试的种类:
- 负载测试
- 压力测试
- 容量测试
- 其他:配置测试、并发测试、可靠性测试、稳定性测试
性能测试工具:LoadRunner
、 Jmeter
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。