测试技术深化
测试计划 - 测试设计 - 测试执行
除了掌握功能测试,还要对某一个方面精通,性能测试,安全性测试,白盒测试,探索性测试,自动化测试等。其中性能测试是薪资最高的。
白盒测试
包括代码审查、单元测试
白盒测试之代码审查(代码Review)
- 只要看懂代码中的逻辑、语法即可
- 合格的代码应具备正确性、清晰性、规范性、一致性和高效性(时间空间复杂度)
- 概括起来,代码审查的工作包括以下方面:业务逻辑的审查、算法的效率、代码风格、编程规则
代码审查的方法
- 互查 : 就是在相同模块或相近模块的编程人员之间互相检查对方的代码
- 走查:从头到尾将写好的程序检查一遍
- 代码审查(通过会议的方式,使用一些规则对代码进行一些校验)规则包括:Java最基本语句的使用、重载函数的审查、内存分配和管理(当进行内存分配和管理时,很重要一点就是确保内存的及时释放和避免缓冲区溢出)、程序性能的审查(减少创建对象、减少循环体的执行代码,能放在循环体外的代码要尽量放在循环体外、提高处理异常出错的效率、减少 I/O 操作时间)
白盒测试方法之逻辑覆盖
单元测试是软件测试中最基础的测试,集成测试、功能测试和系统测试都建立在单元测试之上,类似于代码的自测。
单元测试的对象是构成软件产品或系统的最小的独立单元,如封装得到类或对象、独立的函数、进程、子过程、组件或模块等
单元测试用例设计
对于单元测试用例设计和程序的实现过程,主要集中在白盒测试方法之上,并力求达到以下测试要求:
- 对程序模块所有独立的执行路径至少要测试一次
- 对所有逻辑判定,其结果为真、假两种情况至少要测试一次
- 对程序进行边界检查(常见的如数据越界检验)
- 检验内部数据结构的有效性
逻辑覆盖法
- 逻辑覆盖法是白盒测试中最主要的测试方法
- 逻辑覆盖分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖,其基本思想不同,产生的测试用例不同,覆盖范围也有所不同。
语句覆盖:设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
判定覆盖:使得每个判断的取真值和取假值都至少经历一次
条件覆盖:使得每个条件的取真值和取假值都至少经历一次
判定条件覆盖;
条件组合覆盖;
自动化测试
3-1 自动化测试
把手工测试转化成用及其、软件、程序来测试产品的过程
自动化测试用例是从 功能测试用例 来的。
什么样的项目适合自动化测试
- 需求变更有计划性,并且频率不高
- 项目周期长(像支付宝活动比较短就不用自动化测试),资源丰富,功能点多。
- 脚本重复利用率
- 代码规范
自动化测试应用场景分析
- 业务逻辑代码对应总端用户使用的那些功能,是实际完成工作。
- 基础性代码则确保业务逻辑代码运行在合适的环境中起支撑作用而彼此之间相对独立,并不存在业务关系
总结:两种代码都要测试。手工测试更适合测试业务逻辑,因为这部分人类学习起来要比交给自动化容易
3-2 自动化测试工具
常用的WEB自动化测试工具
主流自动化测试工具——QTP
- QTP是一个侧重于功能的回归自动化测试工具;提供了很多插件
- QTP支持的脚本语言是VBScript
- QTP的高可用性(支持录制与回放;支持lower level模式;QTP的编辑器支持两种视图:Keyword模式和Expert模式)
Selenium(WebDriver)
Selenium仅支持Web页面的测试,而QTP不仅支持Web界面的测试,而且还支持Client方面的测试
UFT(Unified Functional Testing)
QTP的升级版
- 智能识别
- 多脚本调试
- PDF文本验证点
- 支持开源CI
- 支持移动设备
RFT(IBM Rational Functional Testing)
WINRUNNER
Sikuli
Selenium
4-1 安全测试概述
从 WASC 和 OWASP 谈漏洞分类
WASC
WASC将Web应用安全威胁分为六大类:
- Authentication(验证):用来确认某用户、服务或是应用身份的攻击手段
- Authorization(授权):用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段
- Client-Side Attacks(客户侧攻击):用来扰乱或探测Web站点用户的攻击手段
- Command Execution(命令执行):在Web站点上执行远程命令的攻击手段
- Information DisClosure(信息暴露)
- logical Attacks(逻辑性攻击):用来扰乱或是探测Web应用逻辑流程的攻击手段
OWASP
Open Web Application Security Project
Web安全测试流程
测试顺序:功能测试 - 自动化测试 - 安全测试 - 性能测试(因为安全测试会涉及很多代码的修改会影响性能)
4-2 安全审计自动化工具 - APPSCAN
安全审计工具的使用的确给安全测试的开展节省了大量的时间,但同时也带来了各种各样的问题。
审核人员:这是系统上线前的安全质量关卡,任何系统上线都应该经过严格的上线测试,这也最大化的减少了上线后问题的出现,避免生产系统上线后给企业带来的巨额损失
上线后审计、监控人员:上线的系统应该定期检测,一旦出现问题更应该及时检测,越快速的定位发现问题,损失就会越小
AppScan扫描范围
4-3 性能测试简介
- 多个客户端同时访问造成很大压力(包括Web应用服务器、应用服务器、数据库、网络)
- 性能测试针对软件系统来说,包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等
- 性能测试是描述对象与性能相关的特征并对其进行评价而实施和执行的一类测试,主要通过自动化的测试工具模拟多中正常、峰值以及异常负载条件下来对系统的各项性能指标进行测试
性能测试包括以下方面内容
- 评估生产准备状态
- 评估性能判定标准
- 比较多个不同系统或同一系统不同配置之间的性能特征
- 找出导致性能问题的源头
- 帮助进行系统性能调优
- 确定吞吐量水平
性能测试的核心活动
- 确定测试环境(物理环境、生产环境、测试团队可利用的工具和资源)
- 确定性能验收标准(确定响应时间、吞吐量(TPS,每秒能够处理的任务数)、资料利用总目标和限制(CPU , GPU利用了多少))
- 计划和设计测试(确定关键场景(模拟高并发场景)、确定典型用户的可变性以及如何模拟这些变化、确定测试数据(比如模拟登录,确定多少个用户同时登录)、确定需要收集的度量值)
- 配置测试环境(随着需要测试的功能和组件的完善,逐步为每个策略准备执行所需的测试环境、工具以及资源)
- 实现测试设计(根据测试设计逐步展开性能测试)
- 执行测试(执行和监控测试)
- 分析结果、报告以及重复测试(整合并共享结果数据)
性能测试目标
- 评估软件发布准备(1.预测或者估计应用软件在实际生产方面的特性特征,并且基于这些预测来评估是否需要强调性能因素 2. 提供相关数据,反应用户可能会对系统性能特征产生哪些不满意 3. 提供数据帮助于测,由于可伸缩原因和稳定性问题,或者由于用户不满意应用软件的相应时间所导致的收入损失或者品牌可信度降低)