文章目录
- 概述
- 软件测试分类及流程
- 黑盒测试
- 等价类划分
- 边界值分析法
- 决策表法
- 正交测试法
- 极差法
- 方差法
- 白盒测试
- 单元测试
- 集成测试
- 国际化和本地化测试
- 可靠性测试
- 测试与质量分析报告
今天仍然拼命看书,因为明天就要考了。学期的成绩就全仗这两天挣,现在更感到考试无用与无聊。——季羡林
概述
- 软件危机 落后的软件生产技术难以满足增长的计算机需求,问题表现为:软件开发费用高、进度失控、软件可靠性和质量差。
- 软件测试 目的不是证明你的程序是正确的,而是为了发现错误。 测试贯穿于软件生命周期的全过程,不只是测试代码 。
- 软件缺陷 软件中缺陷永远存在。有些缺陷可能在使用中没有表现出来,不影响软件正常使用。不满足需求时,就产生了错误。软件没法完成相应的业务功能,即为故障。当软件无法修复,就是失效。
软件缺陷的状态:打开、修复、关闭、延迟。
- V&V模型 验证:我们正确的构造产品了吗?是否正确的做事,验证开发过程是否遵守一定义好的内容,验证产品满足规格设计说明书的一致性。 确认:我们构造了正确的产品吗?是否在做正确的事,验证产品所实现的功能是否满足用户的需求。
- V模型
v模型强调了整个软件项目开发中需要经历的若干个测试级别,每个级别都与一个开发阶段对应。但是V模型没有明确指出应该对需求、设计进行测试。
- 软件生存周期 计划、需求分析、设计、程序编写、测试、运行和维护。
- 测试和调试 测试与调试的对象及采用的方法很大程度上相似,但目的不同。测试:发现错误;调试:定位错误。
- 测试环境 测试环境包括设计环境、实施环境、管理环境。 测试环境得5要素是:软件、硬件、网络环境、数据准备、测试工具。
- 一个优秀的测试人员需要哪些基本素质 责任感、沟通能力、技术能力、自信心、耐心、怀疑精神、适度的好奇心、洞察力、反向思维和发散思维能力、记忆力。
- 测试工程师职业素质 技术能力、具有一定编程经验、沟通能力、要有严谨的敢于承担责任的稳重的做事风格、具有怀疑和破坏精神、善于自我总结和自我监督、团队合作。
- 软件规范化和标准化的原因不包括( D ) A. 可靠性 B. 可读性 C. 可移植型 D. 可测试性 E. 可维护性
- 标准化、规范化不包括(D)? A. 可测性 B. 可靠性 C. 一致性 D. 灵活性
- 软件质量保证和软件测试有何异同? 它们的相同点在于二者都是贯穿整个软件开发生命周期的流程;它们的不同之处在于SQA 是一项管理工作,侧重于对流程的评审和监控,而测试是一项技 术性的工作,侧重于对产品的评估和验证。
- 常用的 WEB 元素有那些? Web 元素主要包括超链接、图片、文字、HTML 语言、脚本语言、表单等。
- 简述软件测试团队的基本任务 软件测试团队的最基本任务是建立测试计划、设计测试用例、执行测试、评 估测试结果和递交测试报告等,并贯穿了各个测试阶段。除此之外,测试团队还 要完成其他一些主要任务,如阅读和审查软件功能说明书、设计文档,审查代码, 和开发人员、项目经理等进行充分交流,所有的任务都是为了履行测试团队的责任。
- 请你估计10万行代码的错误 采用植入模型,植入S个错误(均匀植入),然后在小范围找到错误,发现了s个植入的错误 ,t个非植入的错误,通过比值得到:错误数为S*t/s
软件测试分类及流程
- 测试分类 ①按测试方法 白盒测试、黑盒测试、灰盒测试 ②按测试方式 静态测试、动态测试 ③按测试过程 单元测试、集成测试、系统测试、验收测试 ④按目的 功能测试、接口测试、用户界面测试、健壮性测试、性能测试(强度测试、压力测试、负载测试)安全性测试、可靠性测试、恢复测试、安装/卸载测试、兼容性测试、文档测试。
- α测试和β测试 属于验收测试阶段。 α测试:开发者在开发环境下或模拟用户环境下进行测试,发现问题,提交修改。完成后测试软件称为β版。 β测试:用户在实际环境测试,提交测试报告。
- 负载测试和压力测试 负载测试指的是最常见的验证一般性能需求而进行的性能测试。因此负载测试主要是考察软 件系统在既定负载下的性能: ①负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。 ②负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、 并发容量、资源使用率 ■压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用 户数。注意:这个极端条件并不定是用户的性能需求,可能要远高于用户的性能需求。 ■区别:压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我们要 考察的是系 统处理问题的方式。 比如说,我们期待—个系统在面临压力的情况下能够保持稳定,处理速 度可以变慢,但不能系统溃。因此,压力测试是能让我们识别系统的弱点和在极限负载下程 序将如何运行。
- 如何测试B/S系统的容量? 即确定并发用户数,属于压力测试。 先使用ramp-up测试逐步增压,每几秒增加一些新的用户,得到最大范围;再使用flat测试一次性加压,在最大范围中一次性加载所有的用户,然后在预定时间内持续运行。 比如一次加500,到一个点之后达到峰值,得出范围,之后在已知范围内用flat一次性加载2000,发现可以则再一次性加载到3000,也可以接受则以此类推。
- 非功能测试包括哪些? 性能测试、压力测试、容量测试、安全性测试、可靠性测试、容错性测试等。
- 下列自动化测试工具中,用于功能测试的是(A)? A. Selenium B. JMeter C. LoadRunner D. QA Load 其余三者是性能测试。
- 静态测试的方法有哪些? 符号测试、代码检查法、静态结构分析法。
黑盒测试
等价类划分
例题: 某 C 语言版本规定,标识符以字母或下划线开头,后跟字母、数字或下划线 的任意组合,有效字符 16 个,标识符不能是保留字,标识符应先声明后使用, 同一声明语句中标识符必须有一个。若应用等价类测试方法,设计如下等价类表, 请填写完整。 答:
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
标识符开头 | ⑴以字母开头 ⑵以下划线开头 | ⑶以非字母非下划线开头 |
标识符组成 | ⑷由字母、数字、下划线组成 | ⑸由非字母非数字非下划线组成 ⑹是保留字 |
标识符长度 | ⑺长度1-16 | ⑻长度大于16 ⑼长度小于1 |
标识符使用方式 | ⑽先声明后使用 | ⑾先使用后声明 |
标识符个数 | ⑿至少 1 个 | ⒀小于 1 个 |
id | 输入 | 预期 | 覆盖 |
---|---|---|---|
1 | int num;num=6; | 有效 | ⑴ ⑷ ⑺ ⑽ ⑿ |
2 | int _num; | 有效 | ⑵ |
3 | int 1num; | 无效 | ⑶ |
4 | int num@; | 无效 | ⑸ |
5 | int for; | 无效 | ⑹ |
6 | num=1;int num; | 无效 | ⑾ |
7 | int ; | 无效 | ⑼ ⒀ |
8 | int aaaaaaaaaaaaaaaaa; | 无效 | ⑻ |
只要一个点覆盖了后面就不用了再写这个点了;一个测试用例尽可能多的覆盖有效等价类;一个测试用例只覆盖一个无效等价类。
边界值分析法
- 标准边界测试 只考虑有效数据范围内的边界值(min、min 、normal、max-、max),会产生4n 1个测试用例,最坏情况产生5n个(括号里五个元素的笛卡尔积)。
- 健壮边界值测试 会考虑有效和无效数据范围内的边界值(多了min-和max ),产生6n 1个测试用例,最坏情况产生7n个。
例题: 给定三角形问题的程序代码,
- 画出 DD-路径图,计算复杂度 V(G);
- 使用边界值分析测试,设计测试用例,三角形边长为 100-200 之间,分析漏洞和冗余 ;
- 假设 s 个结构性测试元素,当执行 m 个测试用例时,会经过 n 个结构性测试元素,覆盖指 标 C=n/s,冗余指标 R=m/s,纯冗余指标 NR=m/n。使用边界值分析测试,计算的 C、R 和 NR。
int a,b,c
input(a,b,c)
if (a<(b c)) and (b<(a c)) and (c<(a b))
if (a==b) and (b= = c)
outpur (“等边三角形”)
else if (a= =b) or (b= =c) or (a= = c)
output (“等腰三角形”)
else output (“一般三角形”)
else
output (“不构成三角形”)
答: (1)见下面白盒测试的路径覆盖。
(3)
方法 | M | N | S | C | R | NR |
---|---|---|---|---|---|---|
一般值 | 13 | 3 | 4 | 0.75 | 3.25 | 4.3 |
S是本来输出的结果数(等边,等腰,一般,不构成) N是测出来的(等边,等腰,一般)
决策表法
也叫判定表,注意能简化(-)就需要简化。
例题: 某保险公司提供车险服务,申请者 21 岁以下需要额外收费; 21-26 岁女性适用 A 类保险;26 岁以下已婚男性或26 岁以上男性适用 B 类保险;21 岁以下女性或 26 岁以下单身男性适用 C 类保险;其他情况适用 A 类保险,请用决策表设计测试方案。 答: 条件取值表:
条件名 | 取值 | 符号 |
---|---|---|
年龄 | 年龄21岁以下 | A1 |
年龄21-26 | A2 | |
年龄26以上 | A3 | |
性别 | 男 | Y |
女 | N | |
婚姻 | 已婚 | Y |
单身 | N |
决策表:
年龄 | A1 | A1 | A1 | A1 | A2 | A2 | A2 | A2 | A3 | A3 | A3 | A3 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
性别 | N | N | Y | Y | N | N | Y | Y | N | N | Y | Y |
婚姻 | N | Y | N | Y | N | Y | N | Y | N | Y | N | Y |
额外收费 | √ | √ | √ | √ | ||||||||
A类保险 | √ | √ | √ | √ | ||||||||
B类保险 | √ | √ | √ | √ | ||||||||
C类保险 | √ | √ | √ | √ |
合并后:
年龄 | A1 | A1 | A1 | A2 | A2 | A2 | A3 | A3 |
---|---|---|---|---|---|---|---|---|
性别 | N | Y | Y | N | Y | Y | N | Y |
婚姻 | - | N | Y | - | N | Y | - | - |
额外收费 | √ | √ | √ | |||||
A类保险 | √ | √ | ||||||
B类保险 | √ | √ | √ | |||||
C类保险 | √ | √ | √ |
正交测试法
极差法
正交表L9(34):9次试验9行、4个因素、3个水平 极差R=最大K-最小K 主次顺序:极差R从大到小排序 优水平:最小K 优组合:大于4.54考虑水平和因素的选择是否正确
(
插播反爬信息)博主CSDN地址:https://wzlodq.blog.csdn.net/
例题: 在某B/S应用系统测试中,研究系统的响应时间,采用正交试验方法设计测试用例,影响因素即水平主要包括:并发用户数(50,100,500)、网络带宽(1,10,100)MB、服务器CPU速度(2、2.6、3.0)GHz和内存大小(1、2、4)GB。采用正交表L9(34),在下表中,确定各试验的因素水平,使用极差分析法,确定各因素的主次顺序、优水平和优组合。 答:
试验号 | 并发用户数A | 网络带宽B | CPU速度C | 内存D | 响应时间(ms) |
---|---|---|---|---|---|
1 | ①50 | ①1 | ①2 | ①1 | 5 |
2 | ①50 | ②10 | ②2.6 | ②2 | 6 |
3 | ①50 | ③100 | ③3.0 | ③4 | 4 |
4 | ②100 | ①1 | ②2.6 | ③4 | 6 |
5 | ②100 | ②10 | ③3.0 | ①1 | 5 |
6 | ②100 | ③100 | ①2 | ②2 | 3 |
7 | ③500 | ①1 | ③3.0 | ②2 | 8 |
8 | ③500 | ②10 | ①2 | ③4 | 6 |
9 | ③500 | ③100 | ②2.6 | ①1 | 5 |
K1j | 15 | 19 | 14 | 15 | |
K2j | 14 | 17 | 17 | 17 | |
K3j | 19 | 12 | 17 | 16 | |
K1j/3 | 5 | 6.33 | 4.67 | 5 | |
K2j/3 | 4.67 | 5.67 | 5.67 | 5.67 | |
K3j/3 | 6.33 | 4 | 5.67 | 5.33 | |
极差R | 1.66 | 2.33 | 1 | 0.67 | |
主次顺序 | BACD | ||||
优水平 | A2 | B3 | C1 | D1 | |
优组合 | A2 B3 C1 D1 |
如K11=第一列①所在指标和=5 6 4=15,K32=第二列③指标和=4 3 5=12。 如R1=最大-最小=K3j/3-K2j/3=6.33-4.67=1.66。
方差法
- T=所有响应时间累加
- CT=T×T/处理号的数量
- SS=平方和相加/水平数-CT
- V=SS/自由度(自由度=水平数-1)
例题: 超短波跳频分组无线网络由超短波调频电台构成,采用分组的方式实现电台之间的信息传输,各电台之间可以互为中继,其测试软件界面如图。研究传输时间的影响因素,主要由电台个数、报文间隔、报文长度。采用正交表L9(34),方差法分析各因素影响。
答:
试验号 | A | B | C | 空列 | s |
---|---|---|---|---|---|
1 | ① | ① | ① | ① | 9 |
2 | ① | ② | ② | ② | 7 |
3 | ① | ③ | ③ | ③ | 4 |
4 | ② | ① | ② | ③ | 23 |
5 | ② | ② | ③ | ① | 22 |
6 | ② | ③ | ① | ② | 10 |
7 | ③ | ① | ③ | ② | 34 |
8 | ③ | ② | ① | ③ | 28 |
9 | ③ | ③ | ② | ① | 14 |
K1 | 20 | 66 | 47 | 45 | |
K2 | 55 | 57 | 44 | 51 | T=151 |
K3 | 76 | 28 | 60 | 55 | |
K12 | 400 | 4356 | 2209 | 2025 | |
K22 | 3025 | 3249 | 1936 | 2601 | |
K32 | 5776 | 784 | 3600 | 3025 |
T=45 51 55=151 CT=T*T/9=2533.4
SSA=(400 3025 5776)/3-CT=533.6 SSB=(4356 3249 784)/3-CT=262.93 SSC=(2209 1936 3600)/3-CT=48.27 SS空列(误差)=(2025 2601 3025)/3-CT=16.9 SS误差Δ=SS误差 SSC=16.9 48.27=65.17(因为SSC比SSA和SSB小太多)
Va=SSA/2=266.8 Vb=SSB/2=131.47 Vc=SSC/2=24.135 V误差=SS误差/2=8.45 V误差Δ=SS误差Δ/4=16.29
FA=Va/V误差Δ=266.8/16.29=16.38 FB=Vb/V误差Δ=131.47/16.29=8.07 FC=Vc/V误差Δ=24.135/16.29=1.48
注: F0.05(2,4)=6.94, F0.01(2,4)=18.00, F0.05(2,3)=9.55, F0.01(2,3)=30.82, F0.05(1,3)=10.15, F0.01(1,3)=34.12
白盒测试
- 语句覆盖 每条语句至少执行一遍。
- 判定覆盖 分支的真和假至少执行一次。
- 条件覆盖 每一个小条件至少有一次真和假,但不一定每个分支走到。
- 判定-条件覆盖 做到2和3。
- 条件组合覆盖 在3的基础上,让同一判断中多条件进行笛卡尔乘积。
- 路径覆盖 根据程序画出DD-路径图,计算复杂度V(G)=判定结点数 1= 边数-结点数 2=区域数
例题: 为下列代码段,设计测试用例,满足语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。注意测试用例三要素。
代码语言:javascript复制if(x>0) and (y>10)
y=y/x 3
else if(x<-10) or (y<0)
y=-(x y)
other statement
答: 语句覆盖
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | 1/11 | 1/11 | 1 2 |
2 | -11/0 | -11/11 | 3 4 |
判定覆盖
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | 1/11 | 1/11 | 1 2 |
2 | -11/0 | -11/11 | 3 4 |
条件覆盖
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | -15/-5 | -15/3 | F1 F2 T3 T4 |
2 | 1/11 | 1/-12 | T1 T2 F3 F4 |
判定条件覆盖
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | -15/-5 | -15/3 | F1 F2 T3 T4 else if |
2 | 1/11 | 1/-12 | T1 T2 F3 F4 if |
条件组合覆盖
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | -15/-5 | -15/3 | F1 F2 T3 T4 |
2 | 1/11 | 1/-12 | T1 T2 F3 F4 |
3 | -11/11 | -11/0 | F1 T2 T3 F4 |
4 | 11/-1 | 12/-11 | T1 F2 F3 T4 |
路径覆盖 对于不可测的路径直接写不可测即可。
id | 输入x/y | 预计输出x/y | 覆盖 |
---|---|---|---|
1 | 1/11 | 1/12 | 1-2-5 |
2 | -15/-5 | -15/3 | 1-3-4-5 |
3 | -1/9 | -11/0 | 1-3-5 |
单元测试
- 分析一页源码是否有错误? 查看规格说明 代码走查 设计测试用例 运行测试 提交测试报告
集成测试
- 结构化设计的核心思想 程序设计方法:自顶向下,逐层分解 控制结构:单出入口
- 自顶向下 需要构建桩程序模块,数量为总数-根节点数
- 自底向上 需要构建驱动程序模块,数量为总数-叶节点数。 例题: 以下程序调用图,采用自顶向下需要多少桩模块?采用自底向上需要多少驱动模块?
答: 自顶向下6:从单元1开始测试,需要桩模块2、3、4;在测试2的时候,需要5,6;到测试4的时候需要7,一共6个。 自底向上3:5、6集成需要2;7集成需要4;2、3、4集成需要1,一共需要3个。
国际化和本地化测试
- 软件本地化和国际化的关系? 本地化要适应国际化的规定,而国际化是本地化的基础和前提,为本地化做准备,使本地化过程不需要对代码做改动就能完成,或将代码修改到最低限度。
- UCS4 UCS(unicode character set)四字节编码,只用31位,最高位0。USC4的第一个字节划分128个Group,256个Plane和65536个point。
- 软件国际化 软件国际化(l18N)创建不同语言版本,不需要重新编写代码,解决硬编码的问题。 支持Unicode字符集;分离代码和显示内容;消除硬代码;使用头文件定义经常被调用的代码段;不包括翻译验证。
- 字符集转换
例题: 将Unicode码0X4A、0xB8转换为UTF-8码。 答: 0X前缀表示十六进制,4A处于0-7F,故UTF-8码是0X4A; B8处于0080-07FF,B8二进制为1011 1000,把它从后向前填入X(110XXXXX 10XXXXXX)剩余补0得1100001010111000,再转十六进制得UTF-8码0XC2B8。
可靠性测试
- MTTF MTTF(meantime to failure)平均故障失效时间,对于不可修复系统,失效时间即产品寿命,
例题: 设有5个不可修复产品进行寿命试验,它们发生失效的时间分别是1000h、1500h、2000h、2200h、2300h,问该产品的MTTF的观测值?若已知该产品服从指数分布,则其故障率是多少?在平均寿命内的可靠度是多少? 答: MTTF=1800h;lambda (t)=0.00056h;R(t)=e-1
- MTBF MTBF(meantime between failure)平均故障间隔时间。和MTTF一样,不过针对的是可修复系统。 例题: 设有一个电子产品累计共工作10万小时,共发生故障50次,问 该产品的MTBF的观测值?如果该批产晶服从指数分布,间其故障率 是多少? MTBF内的可靠度是多少? 答: MTBF=2000h;lambda (t)=0.0005/h;R(t)=e-1
- 串联模型 R可靠度产品各单元可靠度的积lambda故障率是产品各单元故障率的和
- 并联模型
测试与质量分析报告
基于缺陷分析的产品质量评估
- F为描述软件规模用的功能点;
- D1为在软件开发过程中发现的所有缺陷数;
- D2为软件发布后发现的缺陷数;
- D为发现的总缺陷数,D=D1 D2;
- 质量 = D2/F
- 缺陷注入率 = D/F
- 整体缺陷清除率 = D1/D
例题: 假设有200个功能点,在开发种发现了15个错误,提交后又发现了6个错误,应用基于缺陷清除率的估算方法,计算软件质量(每功能点的缺陷数),缺陷注入率,整体缺陷清除率。 答: F=200,D1=15,D2=6,D=21 质量=6/200 缺陷注入率=21/200 整体缺陷清除率=15/21
例题: 已知产品故障服从指数分布如图: 则产品在2000h时的可靠度()?
A. e-1 B. e-10 C. e-2 D. e-20 答: B(e-0.005*2000=e-10)
最后致谢ZDZ大佬