软件测试学习
一、软件测试方法:白盒测试、黑盒测试、灰盒测试
二、软件测试阶段:
执行人 测试阶段 测试方法
开发人员—>1.单元测试(白盒测试)
测试人员—>2.集成测试(黑盒+白盒测试)
测试人员—>3.系统测试(黑盒多)
第三方 —>4.验收测试(黑盒多)
验收测试包括:正式验收测试、alpha测试、beta测试三种。
系统测试包括:功能测试、性能测试、界面测试、安全测试、配置测试、兼容测试、回归测试等。
三、软件各种测试的定义:
白盒测试:程序内部的结构测试,也叫结构测试或逻辑驱动测试,对程序所有逻辑路径进行测试。
? 白盒测试的主要方法:逻辑驱动测试和基本路径测试。
? 白盒测试主要对程序模块进行如下检查:
1. 对程序模块所有独立的执行路径至少测试一遍。
2. 多所有逻辑判定,取“真”与取“假”,的两种情况都至少测试一遍。
3. 在循环的边界和运行的边界内执行循环体。
4. 测试内部数据结构的有效性,等等。
黑盒测试:也叫数据驱动测试,主要是基于需求分析对系统的功能进行测试。
? 黑盒测试的主要方法:等价类划分、边界值分析、因果图、场景法、错误推测法
※(测试用例设计所采用的方法就是黑盒测试的主要方法)
? 黑盒测试为了发现几类错误:
1. 在接口上,输入是否正确接收,输出结果是否正确(集成测试)
2. 功能是否有遗漏,是否正确(系统测试-功能)
3. 性能是否能满足要求(系统测试-性能)
4. 是否有数据结构错误或外部信息(例如数据文件)访问错误(系统测试-兼容)
5. 是否有初始化或终止性错误(系统测试-安全)
单元测试:对代码的运行测试(也叫白盒测试),用于判定某个特定条件(或场景)下某个特定函数的行为。 集成测试:(也叫组装测试,联合测试),是单元测试的逻辑扩展。模块与模块之间接口的测试。
? 集成测试的策略:
1. 模块与模块连接时,穿越模块接口的数据是否丢失。
2. 各个子模块组合起来,是否达到预期要求的父功能。
3. 一个模块的功能是否对另一个模块的功能产生不利影响。
4. 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
5. 全局数据结构是否有问题。
系统测试:是将测试的子系统装配成一个完整的系统来测试
? 系统测试的目的:对最终软件系统进行全面的测试,确保最终软件系统满足产品的需求并遵循系
统设计。
验收测试:alpha测试、beta测试、第三方验收测试
回归测试:对系统的新版本执行上一版本的测试用例检验是否通过。也可以说对于修改后新代码进行测试。
? 回归测试:作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,
软件开发的各个阶段都会进行多次回归测试
功能测试:也叫黑盒测试,利用黑盒测试法进行动态测试,根据需求分析看系统是否能达到预期结果。 性能测试:也叫压力测试,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
界面测试:测试界面是否美观,是否能让用户满意,操作功能是否合理。
安全测试:检查系统对非法侵入的防范能力(破译密码、保护机制)。
配置测试:搭环境时,进行的参数配置是否合理。
兼容测试:与其他软件或浏览器是否发生冲突。
四、测试活动的生命周期是什么(也可说成测试流程是什么)?
是指从测试项目计划建立到Bug提交的整个过程。
包括五个阶段:1、测试项目计划
2、测试需求分析
3、测试用例编写
4、测试用例执行
5、Bug提交
(总结:测试的集成测试阶段和系统测试阶段,两个阶段会运用“测试活动生命周期”来完成)
例如:集成测试→上面的五个阶段(测试项目计划除外)
系统测试→上面的五个阶段(测试项目计划除外)
? 软件测试项目计划的目的、内容:(对应阶段1)
软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试
周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。 测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法
和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试策略和测试方法(最
好是能先评审)
? 软件测试项目计划从什么时候开始的,为什么?(对应阶段1) 测试过程测试过程
软件测试应该在需求分析阶段就介入,
因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺
陷发现的越晚,修复它所花费的成本就越大.
? 测试用例编写的内容:(也可以说成是缺陷测试报告的组成:)(对应阶段3)
简单说分三部分,测试步骤、数据输入、预期结果
缺陷测试报告的组成:缺陷的标题,缺陷的基本信息,复现缺陷的操作步骤,缺陷实际结果的描述,期望正确结果 的描述,注释文字和截取的缺陷图像
? 缺陷的生命周期(也可以说成是Bug的管理流程)(对应阶段5)
最简单的缺陷生命周期:
发现—打开:发现缺陷提交给开发人员
打开—修复:开发人员在现,修复缺陷,然后提交测试人员去验证
修复—关闭:测试人员验证修复的软件,关闭已不存在的缺陷。
复杂的缺陷生命周期:
测试人员提交Bug入库(QC),错误状态为new
高级测试人员验证错误
验证错误 QC状态 验证open状态下错误 QC状态
高级测试人员 是 open 开发人员 是并修复 fixed
高级测试人员 不是 declind 不是 declind
是不能修复 留下文字说明保存保存Bug为open 对于不能解决和延期解决的bug,不能让开发人员自己决定,一般要报告给测试经理。
五、测试结束的标准是什么:(对应测试活动生命周期记忆)
基于“项目计划”的原则(对应阶段1)
基于“测试阶段”的原则(对应阶段2)
基于“测试用例”的原则(对应阶段3)
基于“覆盖率”的原则 (对应阶段4)
基于“缺陷收敛趋势”的原则(对应阶段5)
基于“缺陷修复率”的原则(对应阶段5)
基于“缺陷度量”的原则(对应阶段5)
基于“验收测试”的原则
基于“质量成本”的原则
基于“测试行业经验”的原则
六、测试工具:
测试Bug的管理工具:TD、QC、BugFree
功能测试管理工具:QTP
性能测试管理工具:LoadRunner
[TestDirector]:企业级测试管理工具,也是业界第一个基于Web的测试管理系统。
[Quality Center]:基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷。
[QuickTest Professional]:用于创建功能和回归测试。
[LoadRunner]:预测系统行为和性能的负载测试工具
七、软件测试的相关概念:
软件测试的对象:需求规格说明书、概要设计规格说明书、详细设计规格说明书、源代码程序
软件测试:检测系统预期结果与实际结果之间的差别,发现系统中的Bug。
软件测试与QA的区别:
QA:是以第三方的姿态,孤立于项目组以外的身份,对整个开发进行评审,QA负责对每个阶段的软件文档审
核。
软件测试的目的:
1. 发现代码错误(单元测试)
2. 一个成功的测试用例,在于发现至今未发现的错误
3. 一个成功的测试用例,在于发现至今未发现错误的测试
4. 依据需求分析确保产品的所有功能,并且用户访问的所有功能附有书面说明书。(系统测试-功能)
5. 满足性能和效率的要求(系统测试-性能)
6. 适应用户的环境(系统测试-兼容)
软件测试的原则:
1. 应尽早执行,并贯穿于整个软件生命周期。(软件的生命周期)
2. 严格执行测试计划(软件的生命周期-测试项目计划)
3. 应追溯需求(软件的生命周期-测试需求分析)
4. 穷举例是不能的,要遵循good-enough原则(软件的生命周期-测试用例编写)
5. 关注缺陷的修复(软件的生命周期-Bug提交)
6. 检查程序是否做了不该做的(单元测试)
7. 必须确定预期结果(系统测试-功能)
8. 应由第三方来构造(验收测试)
八、 v模型:
V模型:揭示了软件测试活动分层和分阶段的本质特性。
如:集成测试对应概要设计
集成测试计划和集成测试说明文档的编写:可以在概要设计阶段就可以开始编写,只要在集成测试实施前完 成即可。
V模型还有一点意义:1)在需求分析阶段 : 编写测试用例,可以发现需求文档本身的缺陷,这样就能尽早把需
求的缺陷消除,避免使缺陷残留到下一个阶段中。
2)在概要设计阶段:编写集成测试用例也会间接地地图软件设计质量。
总结:开发人员软件开发阶段:用户需求、需求分析与系统设计、概要设计、详细设计、编码
(集成、实施、交付)
测试人员软件测试阶段:验收测试准备、系统测试准备、集成测试准备、单元测试准备、单元测试
(集成测试、系统测试、验收测试)
(测试阶段准备反过来,与开发阶段对应上)
九、典型的软件测试过程模型是:V模型、W模型、H模型、前置测试模型。
第二篇:软件测试专业都是学习什么
软件测试专业都是学习什么
软件测试就是利用一定的测试工具,按照测试方案对软件进行功能和性能测试,看客户需要的功能是否实现以及在使用过程中是否存在偏差或漏洞,影响用户体验,从而造成对软件产品的不信任。
软件测试人员往往关注的是软件产品的缺陷,他们拿着大号的放大镜在软件里面找问题,很像治病救人的医生。软件测试工作对软件项目的重要性,从今天诸如微软这样的软件帝国在人员架构上就可见一斑。如今,在微软内部,软件测试人员与软件开发人员的比率一般为1.5~2.5左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量。
软件测试人员就想一个“聚宝盆”,需要汇聚各种知识,如软件开发知识、测试技术、质量管理、数据库、网络知识等。软件开发的语言和工具也很多,比如C++、C#、JAVA等;数据库有MS SQL Server和Oracle、MySQL;计算机网络的TCP/IP协议和LAN组建也是必须的。
软件测试人员最大的优势就是发展方向多,由于工作的特殊性,测试人员不但需要对软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后的等领域都要涉及。可以向上发展为测试部经
理、质量经理,也可以横向发展为项目经理。刚入行的软件测试人员,起步月薪大多在3000-5000元左右,工作2-3年月薪大约在
8000-13000元之间,甚至超出很多相同服务年限的软件开发人员的薪资水平。
软件测试工程师的岗位已经成为当前最炙手可热的职业,先人一步,抢占先机,机会要我们自己来把握。
(ps:本文章由北大青鸟广安门校区搜集自互联网)