一.什么是软件测试?
使用自动或人工的手段来测量或运行软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
二.五大要素:质量,人员,技术,流程,资源
两大目标:提高测试覆盖率,提高测试效率
三.测试原则
*
遵循二八原则:用80%的时间测试20%的重点模块
*
杀虫剂悖论:测试方法和用例不定期重审,使用多种测试方法和手段,从而发现系统的更多缺陷
*
测试应该尽早进行:发现缺陷在研发初期,修复缺陷随着时间推移成本越高
*
缺陷存在群集特性:发现缺陷越多的模块应该重点关注
*
测试活动依赖测试背景:不同的软件重点测试模块不同
*
测试显示系统缺陷,但不能证明系统不存在缺陷:缺陷不能全部都被发现
*
穷尽测试是不可能的,应设立终止条件
四.按测试阶段分类
*
单元测试 原则:尽量保证每个测试用例是相互独立的;大多由开发人员实施
*
集成测试
实施方案:(1)big bang 一次性集成,将通过单元测试的模块组成较大的模块,形成系统的一部分来进行测试;
(2)自顶向下:沿主程序,controller向底层向下实施集成;
(3)自底向上:自最底层向上层组装测试,好处是比较容易定位缺陷位置;
(4)核心系统集成:先将最重要模块集成,逐步到周边模块5.高频集成:将一段时间内开发的代码集成;
*
系统测试:功能测试,性能测试,压力测试,稳定性测试等
集成测试和系统测试的区别:(1)集成主要是从技术角度去验证,系统测试是从业务角度;
(2)集成测试主要是测试接口,系统测试对计算机硬件及相关外围设备等有一定要求;
*
验收测试:交付测试,针对用户需求,业务流程的正式测试,确定系统是否满足验收标准,由用户决定是否接受系统
(1)用户验收测试:软件开发方测试;(2)运行验收测试:运维层面;
(3)alpha测试:开发方提供测试环境等由用户执行测试;
(4)Beta测试:脱离开发方,完全由用户测试
五.按照测试手段分类
*
黑盒测试:不考虑程序内部结构,通过对外暴露的接口进行测试,黑盒测试主要是着重于程序是否按照设计需求能正常使用,能正常输入数据并正确输出数据,一般是对外部界面和可见功能进行测试,通过输出结果判断
(1)优点:容易实施;更贴近用户角度;
(2)缺点:测试覆盖率低,一般只能覆盖到不到代码量的40%;针对黑盒的自动化测试复用率低
(3)着重点:是否有不正确或是遗漏的功能;在接口上,输入是否正确接受,输出结果是否正确;是否有数据结构或是外部信息访问错误;性能上是否 满足要求
(4)方法:
*
白盒测试:针对程序内部逻辑结构设计程序用例,用逻辑的覆盖率来衡量程序的完整性
(1)优点:测试人员更了解软件的实现原理;可以检测代码中的每个分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底
(2)缺点:成本高;不能检验需求的正确;
(3)主要逻辑单位:语句(指测试用例出来执行以后,每条语句都会至少执行一次);分支(每个判断分支至少会执行一次 );
条件(每个条件表达式至少会执行一次);条件组合;路径(程序中每个可能的路径至少会执行一次)
(4)方法:
*
静态测试:不执行代码,通过审评代码或是自动化检测来发现纠正
*
动态测试:运行被测程序,检查运行结果和预期结果的差异,黑盒测试中用到的方法属于动态测试
*
手工测试:从用户角度来验证软件是否满足设计要求的行为,更适用针对深度的测试和强调主观判断的测试 例如:众包测试,探索式测试
*
自动化测试:利用测试工具控制测试的自动化执行以及对预期和结果进行自动检查
六.按照测试模型分类
瀑布型:按部就班,文档规范,项目计划清晰
V模型:明确的界定测试过程存在不同的阶段,明确了每个测试阶段与开发过程的对应阶段,缺点是对于需求设计的测试在后期验收测试才能发现
W模型:开发与测试并行,不利于迭代
*
X模型:探索式测试是指没进行事先计划,可以在测试计划之外发现更多的错误
H模型:测试独立,可与其他流程交错进行
敏捷测试:注重程序迭代的新功能,不强调测试阶段;预防缺陷大于发现缺陷;
尽早进行测试,测试参与开发的全过程;强调从用户角度出发;强调持续反馈
*
基于脚本测试(ST):Scripted Testing 先做测试设计再执行测试 Scripted 指测试脚本(自动化)或测试用例,是一种传统测试
*
探索是测试(ET):Exploratory Testing 带着问题去测试,测试设计与测试同步进行,与ST搭配进行,并且ET是一种测试风格,不是技术
1.局部探索是测试:五大要素
(1)输入:主要任务--接受输入;产生输出;存储数据;进行计算
(2)状态:临时有效,例如运行时有效,阶段有效;永久性有效,例如数据库保存
(3)用户数据:模拟真实数据
(4)执行环境:软件运行的硬件,交互系统的影响等
(5)代码路径:对代码的覆盖
2.全局探索式测试:漫游测试法
商业区:用户主要使用功能 旅馆区:程序后台运行功能 历史区:版本迭代遗留问题等
旅游区:新用户注册等功能 娱乐区:辅助功能 破旧区:不对用户展示功能
*
基于风险的测试(RBT)Risk-based Testing
风险:质量风险(数据转换,功能缺失等);管理风险(人员不足,测试环境不具备,无法进行联调等);
风险级别=风险可能性*风险严重度
*
基于模型的测试(Mode-based Testing) :建模工具
七:按照测试类型分类
*
功能测试
(1)关注问题:功能错误或遗漏;界面问题;性能错误;数据及访问错误;初始化及终止错误
(2)工具:QTP(商业);selenium(开源)
*
性能测试
(1)负载测试;压力测试;稳定性测试
(2)性能指标:并发用户数(用户同时访问同一功能);每秒事务数(业务处理时间);系统响应时间(请求响应时间);设备性能(电脑CPU)
(3)工具:LoadRunner
(4)静态性能评估:Web应用开发 测试工具:YSlow,pageSpeed(浏览器插件)
(5)应用性能管理(APM):听云网站
*
安全测试(防御)
(1)渗透测试(攻破):模拟对软件的恶意攻击,对系统安全性进行评估
(2)OWASP:TOP 10 十大安全漏洞;Testing Guide 测试指南
(3)工具:APPSCAN 针对web应用的漏洞扫描;Nessus 针对服务器;Nmap 针对主机开放端口
*
兼容性测试:版本迭代,不同运行平台,运行设配的兼容
(1)浏览器内核:web应用 测试工具:BrowserShots
*
文档测试;可靠性测试(软硬件可靠性);易用性测试(ui页面测试);
*
本地化测试(中英文版测试);部署测试(安装测试);无障碍测试(为身体有障碍的人士提供)
*
回归测试:保证软件在迭代后没有新的错误或缺陷,重点在关键模块和重点功能
*
MonKey测试:保证系统的稳定性和健壮性
*
冒烟测试:类似回归测试,但重点在整个业务流程
*
AB测试:(互联网行业)提供2个版本并记录用户相关数据,来确定更优化设计的测试方案
共同学习,写下你的评论
评论加载中...
作者其他优质文章