1、软件测试概念、分类
软件测试就是为了发现错误而执行程序的过程,使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别;
软件测试分类:
1)按测试方式分类:静态测试(不运行,对代码、数据流、控制流)、动态测试(运行,模拟输入);
2)按测试方法分类:白盒测试(基于代码和设计,对测试人员要求比较高,一般只进行重点部分测试)、黑盒测试(对照规格说明书,测试人员知道设计思路)、灰盒测试(基于对程序内部细节有限认知)
3)按测试过程分类:单元测试(单项功能,多用白盒)、集成测试(模块之间,多用黑盒)、系统测试(整体、实际运作环境下)、验收测试(产品常规条件下使用情况,多用黑盒)
4)按测试目的分类:功能、健壮性(容错能力)、性能(正常、峰值、异常负载)、【强度(异常资源配置下)、压力(超负荷)】(都是性能测试)、用户界面、安全、可靠性(满足要求、指标)、安装/反安装、文档、恢复、兼容性、负载
2、软件测试的V、W模型以及特点
V型: 反映了测试活动与分析设计活动的关系,左开发过程、右测试过程。
局限性:仅仅把测试作为编码之后的一个阶段,忽视测试活动对需求分析、系统设计等活动的验证和确认的功能;
W型: 增加软件开发各个阶段中应同步进行验证(用数据证明是否正确制造产品,强调过程正确)和确认(强调结果正确)活动,尽早全面发现问题。
局限性:需求、设计、编码等被认为是串行的,只能等待上一个阶段结束才能开始下一个阶段,无法支持迭代开发,对于开发工作多变情况,不能解除测试管理面临的困惑。
3、软件测试的人员基本素养
1)技能要求:知识范围更广,业务(行业)知识是一个前提条件;计算机专业知识(软件编程知识,网络、操作系统、数据库、中间件等知识、测试环境);测试专业知识(测试技术、黑白盒等);用户知识。
2)素质要求:具有较强的责任心、自信心及工作要专心、细心、耐心;具有很强的沟通和交流能力;团队合作精神。
4、测试用例的概念、分类,不同测试阶段采用哪些类型的测试用例
一个文档,测试执行的最小实体,是为特定的目的而设计的一组测试输入、执行条件和预期结果;
1)白盒测试用例:主要有逻辑覆盖法和基本路径测试法设计的测试用例,基本思路是使用程序设计的控制结构导出测试用例;
2)软件各项功能的测试用例:一般有等价类划分法、边界值分析法、错误推测法、因果图法等黑盒测试方法;
3)用户界面测试用例
4)软件的各项非功能性测试用例:性能、强度、兼容性、可靠性等
5)对软件缺陷修正所确定的测试用例:特定阶段和不同测试用例关系
测试阶段 -> 测试类型
单元测试:模块功能测试(接口、覆盖、路径)
集成测试:接口、路径、部分功能测试
系统测试:功能、兼容性、性能、用户界面、安全性、强度、可靠性、安装/反安装
验收测试:文档、相关文档技术
5、增量式集成测试中的测试方法
自顶向下、自底向上:注意驱动器(d)和模拟子模块(S)位置;应用宽度优先算法、深度优先算法思想
6、测试的组织与人员管理原则
从组织结构、通信方式、激励机制、培训风险管理作答;
7、根据IEEE829-1998标准,软件测试常用文档
测试计划文档、测试设计规格说明文档、测试用例文档、测试规程规格说明文档、测试日志文档、测试缺陷报告、测试总结报告。
8、根据IEEE829-1998标准,测试计划文档的相关内容
测试计划标识符;介绍;需要测试的功能;方法(策略);不需要测试的功能;测试项通过/失败的标准;测试中断和恢复的规定;测试完成所提交的材料;测试任务;环境需求;职责;人员安排和培训需求;进度表;潜在的问题和风险;审批。
9、软件缺陷概念,复杂软件缺陷的生命周期
软件缺陷:存在于软件(文档、数据、程序)之中的那些不希望,或不可接受的偏差,而导致软件产生质量问题。
满足五个条件之一:1)未达到规格说明书中的功能;2)超出规格说明书说明的范围;3)未达到规格说明书目标;4)运行出现错误;5)测试人员认为难以理解、不易使用、运行速度慢,用户认为使用效果不好;
10、测试方法
1)逻辑覆盖:
a)语句覆盖(每个语句覆盖一次);
b)判定覆盖(每个判断分支至少执行一遍);
c)条件覆盖(每个条件判断的每个可能取值至少执行一次);
d)判定/条件覆盖(每个条件所有可能取值至少执行一次,每个判断可能结果至少执行一次);
e)条件组合覆盖(每个判断的所有可能条件取值组合至少执行一次)
2)基本路径测试:
画出程序控制流程图,计算程序环路复杂性,确定独立路径集合,准备测试用例;
3)等价类划分:
a)区间;
b)数值;
c)数值集合;
d)限制条件
... ...
4)边界值分析
5)因果分析:
输入条件联系、相互组合(恒等、非、或、与);约束符号(E互斥、I包含、O唯一、R要求、M强制)
6)场景法