全面提升测试技术

白盒测试之代码审查

代码审查范围

合格代码应该具备正确性、清晰性、规范性、一致性和高效性

  1. 业务逻辑的审查
  2. 算法的效率
  3. 代码风格
  4. 编程规则

代码审查的方法

  1. 互查:在相同模块或者相近模块的编程人员之间相互检查对方的代码
  2. 走查:从头到尾将写好的代码检查一遍
  3. 代码审查

    1. Java 最基本语句的使用
    2. 重载函数的审查
    3. 内存分配和管理:确保内存的及时释放和避免缓冲区溢出
    4. 程序性能的审查

      1. 减少创建用户
      2. 减少循环体的执行代码,能放在循环体外的代码要尽量放在循环体外
      3. 提高处理异常出错的效率
      4. 减少 I/O 操作时间

白盒测试方法-逻辑覆盖

单元测试:软件测试中最基础的测试,集成测试、功能测试和系统测试都建立在单元测试之上;其对象是构成软件产品或者系统的最小的独立单元,如封装的类或者对象、独立的函数、进程、子进程、组件或者模块等

用例设计

对于单元测试用例的设计和程序的实现过程,主要集中在白盒测试方法之上,并力求达到下列测试要求:

  1. 对程序模块所有独立的执行路径至少要测试一次
  2. 对所有逻辑判定,其结果为真、假两种情况至少要测试一次
  3. 对程序进行边界检查(常见的如数据越界检验)
  4. 检验内部数据结构的有效性

逻辑覆盖法:白盒测试中最主要的测试方法

分类:其基本思想不同,产生的测试用例不同,覆盖范围也有所不同

  • 语句覆盖
  • 判定覆盖
  • 条件覆盖
  • 判定-条件覆盖
  • 条件组合覆盖

语句覆盖:设计若干测试用例,运行被测试程序,使程序中的每个可执行语句至少被执行一次

  • 不足:不能准确判断运算中的逻辑关系错误

判定覆盖:使每个判断的取真值和取假值都至少经历一次

条件覆盖:使每一个条件的取真值和取假值都至少经历一次

判定-条件覆盖:确保设计足够或精巧的自测用例,可使得判断条件中所有的可能取值至少被执行一次,同时所有判断的可能结构也至少被执行一次

条件组合覆盖:设计足够的测试用例,使判断中每一个条件的所有可能至少出现一次,而且每个判断本身的判定结果也至少出现一次。

  • 与判定-条件覆盖的差别:条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次

自动化测试

把手工测试转化为用机器,软件,程序来测试产品的过程

全面提升测试技术_第1张图片

作用

  • 缩短软件开发测试周期,可以让产品更快投放市场
  • 测试效率高,充分利用硬件资源
  • 节省人力资源,降低测试成本
  • 增强测试的稳定性和可靠性
  • 提高软件测试的准确度和精确度,增加软件信任度
  • 软件测试工具使测试工具相对比较容易,但能产生更高质量的测试结果

适合使用自动化测试的项目

  1. 需求变更有计划性,并且频率不高
  2. 项目周期长,资源丰富
  3. 脚本重复利用率高
  4. 代码规范

手工测试更适合测业务逻辑,自动化测试适合用来测非常基础、没有业务依赖的基础性功能

安全测试

Web 应用的概念

  • 由动态脚本、编译过的代码等组合而成
  • 它通常架设在web服务器上,用户在web浏览器上发送请求
  • 这些请求使用 HTTP 协议,由 web 应用和企业后台的数据库及其他动态内容通信

Web 应用安全威胁

  1. 验证:用来确认某用户、服务或是应用身份的攻击手段
  2. 授权:用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段
  3. 客户侧攻击:用来扰乱或是探测web站点用户的攻击手段
  4. 命令执行:在web站点上执行远程命令的攻击手段
  5. 信息暴露:用来获取 web 站点具体系统信息的攻击手段
  6. 逻辑性攻击:用来扰乱或是探测 web 应用逻辑流程的攻击手段

OWASP 10 大安全漏洞

  1. 注入:SQL注入
  2. 失效身份认证和会话管理
  3. 跨站脚本:XSS
  4. 失效的访问控制
  5. 安全配置错误
  6. 敏感信息泄露
  7. 跨站请求伪造:CSRF
  8. 使用含有漏洞的控件
  9. 攻击检测和防范不足
  10. 未受保护的 APIs

流程

全面提升测试技术_第2张图片

不同测试的先后顺序

  1. 功能测试
  2. 自动化测试
  3. 安全测试:在此期间会有较多代码修改,影响性能测试
  4. 性能测试

安全审计

自动化审计工具:AppScanWeblnspect

不建议依赖审计工具,尽可做临时或紧急使用

性能测试

意义:多个客户端同时访问造成压力

概念:包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性

是描述测试对象与性能相关的特征,并对其进行评价而实现和执行的一类测试。主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下,对系统的各项性能指标进行测试

性能测试包含的事项

  1. 评估生产准备状态
  2. 评估性能判定标准
  3. 比较多个不同系统或同一系统不同配置之间的性能特征
  4. 找出导致性能问题的源头
  5. 帮助进行系统性能调优
  6. 确定吞吐量水平

核心流程

  • 确定测试环境:

    • 物理环境、生产环境、测试团队可利用的工具和资源
  • 确定性能验收标准

    • 确定响应时间、吞吐量、资料利用总目标和限制
  • 计划和设计测试

    • 确定关键场景
    • 确定典型用户的可变性、以及如何模拟这些变化
    • 确定测试数据
    • 确定需要收集的度量值
  • 配置测试环境

    • 随着需要测试的功能和组件的完善,逐步为每一个策略准备执行所需的测试环境、工具以及资源
  • 实现测试设计

    • 根据测试设计逐步展开性能测试
  • 执行测试

    • 执行和监控测试
  • 分析结果、报告以及重复测试

    • 整合并共享结果数据

性能测试目标

  • 评估软件发布准备
  • 评估基础结构是否恰当
  • 评估已开发软件的性能是否满足要求
  • 提高性能调整效率

性能测试的种类

  • 负载测试
  • 压力测试
  • 容量测试
  • 其他:配置测试、并发测试、可靠性测试、稳定性测试

性能测试工具LoadRunnerJmeter

你可能感兴趣的:(测试)