文档库 最新最全的文档下载
当前位置:文档库 › 软件测试与质量保证

软件测试与质量保证

软件测试与质量保证
软件测试与质量保证

软件测试与质量保证

一、软件测试的定义

定义:软件测试是为了发现错误而执行程序的过程。或者说软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。二、测试的目的:

?基于不同的立场,存在着两种完全不同的测试目的。

?从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。

?从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

Grenford Myers软件测试目的

(1) 测试是程序的执行过程,目的在于发现错误;

(2) 一个好的测试用例在于能发现至今未发现的错误;

(3) 一个成功的测试是发现了至今未发现的错误的测试

?换言之,测试的目的是

–系统地找出软件中潜在的各种错误和缺陷。

–能够证明软件的功能和性能与需求说明相符合。

–测试不能表明软件中不存在错误,它只能说明软件中存在错误。

三、软件测试的原则

1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。

2. 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。

3. 程序员应避免检查自己的程序。

4. 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

5. 充分注意测试中的群集现象。

经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。

6.严格执行测试计划,排除测试的随意性。

7. 应当对每一个测试结果做全面检查。

8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。

四、软件测试的对象

?软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。

?需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。

五、确认和验证:

?为把握软件开发各个环节的正确性,需要进行各种确认和验证工作。

?确认(Validation),是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。

–需求规格说明的确认

–程序的确认

?验证(Verification),试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。

七、测试信息流

测试信息流

?软件配置:软件需求规格说明、软件设计规格说明、源代码等;

?测试配置:测试计划、测试用例、测试程序等;

?测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。

?测试结果分析:比较实测结果与预期结果,评价错误是否发生。

?排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。

?修正后的文档再测试:直到通过测试为止。

?通过收集和分析测试结果数据,对软件建立可靠性模型

?利用可靠性分析,评价软件质量:

—软件的质量和可靠性达到可以接受的程度;

—所做的测试不足以发现严重的错误;

?如果测试发现不了错误,可以肯定,测试配置考虑得不够细致充分,错误仍然潜伏在软件中。

八、测试与软件开发各阶段的关系

?软件开发过程是一个自顶向下,逐步细化的过程

?软件计划阶段定义软件作用域

?软件需求分析建立软件信息域、功能和性能需求、约束等

?软件设计把设计用某种程序设计语言转换成程序代码

?测试过程是依相反顺序安排的自底向上,逐步集成的过程。

九、软件测试用例设计

?两种常用的测试方法

–黑盒测试

–白盒测试

(一)黑盒测试

?这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

?黑盒测试又叫做功能测试或数据驱动测试。

?黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:

–是否有不正确或遗漏了的功能?

–在接口上,输入能否正确地接受? 能否输出正确的结果?

–是否有数据结构错误或外部信息(例如数据文件)访问错误?

–性能上是否能够满足要求?

–是否有初始化或终止性错误?

?用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。

?但这是不可能的。

?假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:

?可能采用的

测试数据组:

232×232

=264

?如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年

(二)白盒测试

?此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

?软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:

–对程序模块的所有独立的执行路径至少测试一次;

–对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;

–在循环的边界和运行界限内执行循环体;

–测试内部数据结构的有效性,等。

?对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。

?

包含的不同执行路径数达5^20条,对每一条路径进行测试需要1毫秒,假定一年工作365 × 24小时,要想把所有路径测试完,需3170年

白盒测试的测试用例设计

十、白盒测试的测试用例设计 (一)逻辑覆盖

逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。

– 语句覆盖 – 判定覆盖 – 条件覆盖

– 判定-条件覆盖 – 条件组合覆盖 – 路径覆盖。

举例:所有路径为:L1(a->c->e) ,L2(a->b->d), L3(a->b->e), L4(a->c->d)

e)c L1(a →→

()(){}()(){}1A X 2A 0B 1A >==>=or and and ()()()()()()1A X 0B 1A 2A 0B 1A >=>==>=and and or

and and

()()()()()1A X 0B 1A 0B 2A >=>===and and or

and

d)b (a L2→→

()(){}()(){}1X 2A 0B 1A =>==>or and and ()(){}()(){}

1X 2A 0B 1A >==>=and and or

()()()()()()1X 2A 0B

1X 2A 1A =>==>=>and and or

and and

()()()()()1X 2A 0B

1X 1A ≤≠≠≤≤=and and or and

c)b (a L3→→

()(){}()(){}1X 2A 0B 1A >==>=or and and ()(){}

()(){}1X 2A 0B 1A >==>=or and or

()()()()()()1X and 0B or 2A and 0B

or

1X and 1A >===>>=

()()()()()()1X 0B 2A 0B 1X 1A >≠=≠>≤=and or and or

and

d)c (a L4→→

()(){}()(){}1A X 2A 0B 1A >==>=or and and ()()()()1A X 2A 0B 1A ≤≠=>

=and and and

依据以上推导出来的结果就可以设计满足要求的测试用例。

?语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

?在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。

?测试用例的设计格式如下

【输入的(A, B, X),输出的(A, B, X)】

?为图例设计满足语句覆盖的测试用例是:

【(2, 0, 4),(2, 0, 3)】覆盖ace【L1】

(三)判定覆盖

?判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

?判定覆盖又称为分支覆盖。

?对于图例,如果选择路径L1和L2,就可得满足要求的测试用例

?【(2, 0, 4),(2, 0, 3)】覆盖ace【L1】

【(1, 1, 1),(1, 1, 1)】覆盖abd【L2】

如果选择路径L3和L4,还可得另一组可用的测试用例:

【(2, 1, 1),(2, 1, 2)】覆盖abe【L3】

【(3, 0, 3),(3, 1, 1)】覆盖acd【L4】

? 条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执

行一次。

? 在图例中,我们事先可对所有条件的取值加以标记。例如, ? 对于第一个判断:

– 条件 A >1 取真为 ,取假为

条件 B =0 取真为 ,取假为

? 对于第二个判断:

– 条件A =2 取真为 3T ,取假为3T

条件X >1 取真为 4T ,取假为4T

测试用例 覆盖分支 条件取值 【(2, 0, 4),(2, 0, 3)】 L1(c, e) 4321T T T T 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 4321T T T T 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 4321T T T T 或

测 试 用 例 覆盖分支 条件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) 4321T T T T

【(2, 1, 1),(2, 1, 2)】 L3(b, e) 4321T T T T (五)判定-条件覆盖

? 判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每

个判断中的每个条件的可能取值至少执行一次。

测 试 用例 覆盖分支 条件取值 【(2, 0, 4),(2, 0, 3)】 L1(c, e) 4321T T T T

(六)条件组合覆盖

? 条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少

执行一次。

记 ① A >1, B =0 作 21T T ② A >1, B ≠0 作 21T T

③ A ≯1, B =0 作

21T T ④ A ≯1, B ≠0 作 21T T

⑤ A =2, X >1 作 43T T

⑥ A =2, X ≯1 作 43T T ⑦ A ≠2, X >1 作 43T T ⑧ A ≠2, X ≯1 作 43T T

1T 1T 2T 2

T

测 试 用 例 覆盖条件 覆盖组合 【(2, 0, 4), (2, 0, 3)】(L1) 4321T T T T ①, ⑤ 【(2, 1, 1), (2, 1, 2)】(L3) 4321T T T T ②, ⑥ 【(1, 0, 3), (1, 0, 4)】(L3) 4321T T T T ③, ⑦

【(1, 1, 1), (1, 1, 1)】(L2) 4321T T T T ④, ⑧ (七)路径测试

? 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。 测 试 用 例 通过路径 覆盖条件

【(2, 0, 4), (2, 0, 3)】 ace (L1) 4321T T T T 【(1, 1, 1), (1, 1, 1)】 abd (L2) 4321T T T T

【(1, 1, 2), (1, 1, 3)】 abe (L3) 4321T T T T 【(3, 0, 3), (3, 0, 1)】 acd (L3) 4321T T T T

(八)基本路径集测试

? 覆盖关键路径。

/

? 计算环路复杂性的方法:

-V(G)=简单判定节点数+ 1

– V(G) = E-N+2 (E 是边数,N 是定点数) – V(G)=封闭区域数+ 1

? V(G)=4

根据环路复杂性产生基本路径集 Path 1: 1-2-3-8

Path 2: 1-2-3-8-1-2-3 Path 3: 1-2-4-5-7-8 Path 4: 1-2-4-6-7-8

准备测试用例覆盖所有基本路径

Sequence

If

While

十一。黑盒测试的测试用例设计

–等价类划分

–边界值分析

–错误推测法

–因果图

(一)等价类划分

?等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。

?等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。

?使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。

?划分等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。

?等价类的划分有两种不同的情况:

①有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。

②无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。

?在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。

?划分等价类的原则。

(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。

?例如,在程序的规格说明中,对输入条件有一句话:“…… 项数可以从1到999 ……” 则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:

(2) 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。

?例如,在Pascal语言中对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。

(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。

(4) 如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。

?例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。

(5) 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

?例如,Pascal语言规定“一个语句必须以分号‘;’结束”。这时,可以确定一个有效等价类“以‘;’结束”,若干个无效等价类“以‘:’结束”、“以‘,’结束”、“以‘ ’结束”、“以LF结束”等。

?确立测试用例

在确立了等价类之后,建立等价类表,列出所有划分出的等价类。

?再从划分出的等价类中按以下原则选择测试用例:

(1) 为每一个等价类规定一个唯一编号;

(2) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的

有效等价类都被覆盖为止;

(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

?用等价类划分法设计测试用例的实例

在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”

并且规定:“标识符必须先说明,再使用。” “在同一说明语句中,标识符至少必须有一个。”

用等价类划分的方法,建立输入等价类表:

?下面选取了9个测试用例,它们覆盖了所有的等价类。

①V AR x,T1234567:REAL;

BEGIN x := 3.414;

T1234567 := 2.732;

...…

(1), (2), (4), (8), (9), (12), (14)

②V AR :REAL;(3)

③V AR x,:REAL; (5)

④V AR T12345678:REAL;(6)

⑤V AR T12345......:REAL;(7)

多于80个字符

⑥V AR T$:CHAR;(10)

⑦V AR GOTO:INTEGER;(11)

⑧V AR 2T:REAL;(13)

⑨V AR PAR:REAL;(15)

BEGIN ......

PAP := SIN (3.14 * 0.8) / 6;

(二)边界值分析

?边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。

?人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

?比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。

?这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。

?使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

(三)错误推测法

?人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。

这就是错误推测法。

?错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

十二。软件测试的策略

?测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。

?开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能

?组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。

?确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。

?系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。

(一)单元测试(Unit Testing)

?单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。

?单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

1. 单元测试的内容

?在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。

(1) 模块接口测试

?在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:

–调用本模块的输入参数是否正确;

–本模块调用子模块时输入给子模块的参数是否正确;

–全局量的定义在各模块中是否一致

?在做内外存交换时要考虑:

–文件属性是否正确;

–OPEN与CLOSE语句是否正确;

–缓冲区容量与记录长度是否匹配;

–在进行读写操作之前是否打开了文件;

–在结束文件处理时是否关闭了文件;

–正文书写/输入错误,

–I/O错误是否检查并做了处理。

(2) 局部数据结构测试

?不正确或不一致的数据类型说明

?使用尚未赋值或尚未初始化的变量

?错误的初始值或错误的缺省值

?变量名拼写错或书写错

?不一致的数据类型

?全局数据对模块的影响

(3) 路径测试

?选择适当的测试用例,对模块中重要的执行路径进行测试。

?应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。

?对基本执行路径和循环进行测试可以发现大量的路径错误。

(4) 错误处理测试

?出错的描述是否难以理解

?出错的描述是否能够对错误定位

?显示的错误与实际的错误是否相符

?对错误条件的处理正确与否

?在对错误进行处理之前,错误条件是否已经引起系统的干预等

(5) 边界测试

?注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。

?如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。

2. 单元测试的步骤

?模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。

–驱动模块(driver)

–桩模块(stub) ──存根模块

驱动模块(driver)──相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。

桩模块(stub)──存根模块。用以代替所测模块调用的子模块。

?如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。

?对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。

(二)组装测试(Integrated Testing)

?组装测试(集成测试、联合测试)

?通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:–在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;

–一个模块的功能是否会对另一个模块的功能产生不利的影响;

–各个子功能组合起来,能否达到预期要求的父功能;

–全局数据结构是否有问题;

–单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。

在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。

?子系统的组装测试特别称为部件测试,它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致。

?通常,把模块组装成为系统的方式有两种

–一次性组装方式

–增殖式组装方式

1. 一次性组装方式(big bang)

它是一种非增殖式组装方式。也叫做整体拼装。

使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。

2. 增殖式组装方式

?这种组装方式又称渐增式组装

?首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统

?在组装的过程中边连接边测试,以发现连接过程中产生的问题

?通过增殖逐步组装成为要求的软件系统。

(1) 自顶向下的增殖方式

?这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。

?自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。

?选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。

(2) 自底向上的增殖方式

?这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。

?因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。

?自顶向下增殖的方式和自底向上增殖的方式各有优缺点。

?一般来讲,一种方式的优点是另一种方式的缺点。

(3) 混合增殖式测试

衍变的自顶向下的增殖测试

–首先对输入/输出模块和引入新算法模块进行测试;

–再自底向上组装成为功能相当完整且相对独立的子系统;

–然后由主模块开始自顶向下进行增殖测试。

自底向上 自顶向下的增殖测试

–首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;

–然后对含写操作的子系统做自顶向下的组装与测试。

回归测试

–这种方式采取自顶向下的方式测试被修改的模块及其子模块;

–然后将这一部分视为子系统,再自底向上测试。

关键模块问题

在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。

关键模块的特征:

①满足某些软件需求;

②在程序的模块结构中位于较高的层次(高层控制模块);

③较复杂、较易发生错误;

④有明确定义的性能要求

(三)确认测试(Validation Testing)

确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。

对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

1. 进行有效性测试(黑盒测试)

?有效性测试是在模拟的环境(可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。

?首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。

?通过实施预定的测试计划和测试步骤,确定

–软件的特性是否与需求相符;

–所有的文档都是正确且便于使用;

–同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试

?在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:

–测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。

–测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。

2. 软件配置复查

?软件配置复查的目的是保证

?软件配置的所有成分都齐全;

?各方面的质量都符合要求;

?具有维护阶段所必需的细节;

?而且已经编排好分类的目录。

?应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。

3.α测试和β测试

?在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测的。

?α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。

?α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。

?α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。

?β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。

?测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。

?在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。

?β测试主要衡量产品的FLURPS。着重于产品的支持性,包括文档、客户培训和支持产品生产能力。

?只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。

4.验收测试(Acceptance Testing)

在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。

验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。

由用户参加设计测试用例,使用生产中的实际数据进行测试。

在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。

确认测试应交付的文档有:

?确认测试分析报告

?最终的用户手册和操作手册

?项目开发总结报告。

(四)系统测试(System Testing)

?系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。

?系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。

十三、测试种类

?软件测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。

1、功能测试

功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。

2、可靠性测试

如果系统需求说明书中有对可靠性的要求,则需进行可靠性测试。

①平均失效间隔时间MTBF (Mean Time Between Failures) 是否超过规定时限?

②因故障而停机的时间MTTR (Mean Time To Repairs) 在一年中应不超过多少时间。

3、强度测试

强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。

例如:

–把输入数据速率提高一个数量级,确定输入功能将如何响应。

–设计需要占用最大存储量或其它资源的测试用例进行测试。

–设计出在虚拟存储管理机制中引起“颠簸”的测试用例进行测试。

–设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。

?强度测试的一个变种就是敏感性测试。在程序有效数据界限内一个小范围内的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下降的情况发生。此测试用以发现可能引起这种不稳定性或不正常处理的某些数据组合

4、性能测试

性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。

性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。

?通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。

恢复测试

恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。

?为此,可采用各种人工干预的手段,模拟硬件故障,故意造成软件出错。并由此检查:

–错误探测功能──系统能否发现硬件失效与故障;

–能否切换或启动备用的硬件;

–在故障发生时能否保护正在运行的作业和系统状态;

–在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。

–掉电测试:其目的是测试软件系统在发生电源中断时能否保护当时的状态且不毁坏数据,然后在电源恢复时从保留的断点处重新进行操作。

5、启动/停止测试

这类测试的目的是验证在机器启动及关机阶段,软件系统正确处理的能力。

这类测试包括

–反复启动软件系统(例如,操作系统自举、网络的启动、应用程序的调用等)

–在尽可能多的情况下关机。

6 、配置测试

这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。

它主要包括以下几种:

–配置命令测试:验证全部配置命令的可操作性(有效性);特别对最大配置和最小配置要进行测试。软件配置和硬件配置都要测试。

–循环配置测试:证明对每个设备物理与逻辑的,逻辑与功能的每次循环置换配置都能正常工作。

–修复测试:检查每种配置状态及哪个设备是坏的。并用自动的或手工的方式进行配置状态间的转换。

7 、安全性测试

安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。

力图破坏系统的保护机构以进入系统的主要方法有以下几种:

–正面攻击或从侧面、背面攻击系统中易受损坏的那些部分;

–以系统输入为突破口,利用输入的容错性进行正面攻击;

–申请和占用过多的资源压垮系统,以破坏安全措施,从而进入系统;

–故意使系统出错,利用系统恢复的过程,窃取用户口令及其它有用的信息;

–通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令,安全码,译码关键字等信息;

–浏览全局数据,期望从中找到进入系统的关键字;

–浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。

8 、可使用性测试

?可使用性测试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。

?要保证在足够详细的程度下,用户界面便于使用;对输入量可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能够引导用户去解决问题;软件文档全面、正规、确切。

9 、可支持性测试

这类测试是要验证系统的支持策略对于公司与用户方面是否切实可行。

?它所采用的方法是

–试运行支持过程(如对有错部分打补丁的过程,热线界面等);

–对其结果进行质量分析;

–评审诊断工具;

–维护过程、内部维护文档;

–修复一个错误所需平均最少时间

10 、安装测试

安装测试的目的不是找软件错误,而是找安装错误。

?在安装软件系统时,会有多种选择。

–要分配和装入文件与程序库

–布置适用的硬件配置

–进行程序的联结。

?而安装测试就是要找出在这些安装过程中出现的错误。

?安装测试是在系统安装之后进行测试。它要检验:

–用户选择的一套任选方案是否相容;

–系统的每一部分是否都齐全;

–所有文件是否都已产生并确有所需要的内容;

–硬件的配置是否合理,等等。

11 、过程测试

?在一些大型的系统中,部分工作由软件自动完成,其它工作则需由各种人员,包括操作员,数据库管理员,终端用户等,按一定规程同计算机配合,靠人工来完成。

?指定由人工完成的过程也需经过仔细的检查,这就是所谓的过程测试。

12 、互连测试

?互连测试是要验证两个或多个不同的系统之间的互连性。

13、兼容性测试

?这类测试主要想验证软件产品在不同版本之间的兼容性。有两类基本的兼容性测试:

–向下兼容

–交错兼容

14、容量测试

?容量测试是要检验系统的能力最高能达到什么程度。例如,

–对于编译程序,让它处理特别长的源程序;

–对于操作系统,让它的作业队列“满员”;

–对于信息检索系统,让它使用频率达到最大。

在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。

15/、文档测试

这种测试是检查用户文档(如用户手册)的清晰性和精确性。

?用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。

十四、调试(Debug)

?软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。

?调试活动由两部分组成:

–确定程序中可疑错误的确切性质和位置。

–对程序(设计,编码)进行修改,排除这个错误。

?调试工作是一个具有很强技巧性的工作。

?软件运行失效或出现问题,往往只是潜在错误的外部表现,而外部表现与内在原因之间常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不是一件易事。

?可以说,调试是通过现象,找出原因的一个思维分析的过程。

(一)调试的步骤

(1) 从错误的外部表现形式入手,确定程序中出错位置;

(2) 研究有关部分的程序,找出错误的内在原因;

(3) 修改设计和代码,以排除这个错误;

(4) 重复进行暴露了这个错误的原始测试或某些有关测试。

?从技术角度来看,查找错误的难度在于:

–现象与原因所处的位置可能相距甚远。

–当其它错误得到纠正时,这一错误所表现出的现象可能会暂时消失,但并未实际排除。

–现象实际上是由一些非错误原因(例如,舍入不精确)引起的。

–现象可能是由于一些不容易发现的人为错误引起的。

–错误是由于时序问题引起的,与处理过程无关。

–现象是由于难于精确再现的输入状态(例如,实时应用中输入顺序不确定)引起。

–现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇到。

(二)几种主要的调试方法

调试的关键在于推断程序内部的错误位置及原因。可以采用以下方法:

1、强行排错

这种调试方法目前使用较多,效率较低。它不需要过多的思考,比较省脑筋。例如:

–通过内存全部打印来调试,在这大量的数据中寻找出错的位置。

–在程序特定部位设置打印语句,把打印语句插在出错的源程序的各个关键变量改变部位、重要分支部位、子程序调用部位,跟踪程序的执行,监视重要变量的变化。

–自动调试工具。利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。

应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的分析,得出对出错位置及错误性质的推测,再使用一种适当的调试方法来检验推测的正确性。

2、回溯法调试

这是在小程序中常用的一种有效的调试方法。

一旦发现了错误,人们先分析错误征兆,确定最先发现“症状”的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。

?例如,程序中发现错误处是某个打印语句。通过输出值可推断程序在这一点上变量的值。再从这一点出发,回溯程序的执行过程,反复考虑:“如果程序在这一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样...”,直到找到错误的位置。

3、归纳法调试

?归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。

–收集有关的数据列出所有已知的测试用例和程序执行结果。看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误。

–组织数据

由于归纳法是从特殊到一般的推断过程,所以需要组织整理数据,以发现规律。

常以3W1H形式组织可用的数据:

“What”列出一般现象;

“Where”说明发现现象的地点;

“When”列出现象发生时所有已知情况;

“How”说明现象的范围和量级;

“Yes”描述出现错误的3W1H;

“No”作为比较,描述了没有错误的3W1H。通过分析找出矛盾来。

–提出假设

分析线索之间的关系,利用在线索结构中观察到的矛盾现象,设计一个或多个关于出错原因的假设。如果一个假设也提不出来,归纳过程就需要收集更多的数据。此时,应当再设计与执行一些

测试用例,以获得更多的数据。

–证明假设

把假设与原始线索或数据进行比较,若它能完全解释一切现象,则假设得到证明;否则,就认为假设不合理,或不完全,或是存在多个错误,以致只能消除部分错误。

4、演绎法调试

演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。演绎法排错是测试人员首先根据已有的测试用例,设想及枚举出所有可能出错的原因做为假设;然后再用原始测试数据或新的测试,从中逐个排除不可能正确的假设;最后,再用测试数据验证余下的假设确是出错的原因。

–列举所有可能出错原因的假设

把所有可能的错误原因列成表。通过它们,可以组织、分析现有数据。

–利用已有的测试数据,排除不正确的假设

仔细分析已有的数据,寻找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,

则需要补充一些数据(测试用例),以建立新的假设。

–改进余下的假设

利用已知的线索,进一步改进余下的假设,使之更具体化,以便可以精确地确定出错位置。

–证明余下的假设

(三)调试原则

?在调试方面,许多原则本质上是心理学方面的问题。调试由两部分组成,调试原则也分成两组。

?确定错误的性质和位置的原则

–用头脑去分析思考与错误征兆有关的信息。

–避开死胡同。

–只把调试工具当做辅助手段来使用。利用调试工具,可以帮助思考,但不能代替思考。

–避免用试探法,最多只能把它当做最后手段。

?修改错误的原则

–在出现错误的地方,很可能还有别的错误。

–修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误的本身。

–当心修正一个错误的同时有可能会引入新的错误。

–修改错误的过程将迫使人们暂时回到程序设计阶段。

–修改源代码程序,不要改变目标代码。

一、1、三种观点:

~IEEE在1983年定义为“使用人工或自动手段运行或者测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”,该定义明确提出了软件测试以检验是否满足需求为目标

~Myers认为“软件测试时为了发现错误而执行程序的过程”,明确提出了“寻找错误”是测试目的;

~从软件质量保证的角度看,软件测试时一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。

软件测试是在软件投入运行前,对软件需求分析,设计规格说明和编码的最终复审,是软件质量保证的关键步骤。

第一题

1 main ()

2 {

3 int num1=0, num2=0, score=100;

4 int i;

5 char str;

6 scanf (“%d, %c\n”, &i, &str);

7 while (i<5)

8 {

9 if (str=’T’)

10 num1++;

11 else if (str=’F’)

12 {

13 score=score-10;

14 num2 ++;

15 }

16 i++;

17 }

18 printf (“num1=%d, num2=%d, score=%d\n”, num1, num2, score);

19 }

(1)根据程序画出控制流图;

(2)根据控制流图计算圈复杂度;

(3)确定基本路径集合

答:(1)

(2)

根据环形复杂度的计算公式,求程序路径集合中的独立路径数目。

法1:V(G)=10-8+2,其中10是控制流图G中边的数量,8是控制流图中节点的数目。

法2:V(G)=3+1,其中3是控制流图G中判断节点的数目。

法3:V(G)=4,其中4是控制流图G中区域的数目。

因此,控制流图G的环形复杂度是4。就是说至少需要4条独立路径组成基本路径集合,并由此得到能够覆盖所有程序语句的测试用例。

……………………………………………………………精品资料推荐…………………………………………………

(3)一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。

根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径:

path1:7->18

path2:7->9->10->16->7->18

path3:7->9->11->15->16->7->18

path4:7->9->11->13->14->15->16->7->18

测试用例:

第二题:

?某数据库应用软件“增加数据库用户”功能为例,设计一个测试用例。

?输入:用户名称(新增用户使用默认口令)、权限(单选框选择);

?输出:添加结果。

?处理:当输入的用户名称在1-30 位之间时,给出添加成功提示;用户名称为空或大于30 个字符时提示出错。(这里仅以“针对用户名称的测试用例”为例。)

要求:用等价类和边界值方法设计测试用例

答:

等价类:

有一个有效等价类和两个无效等价类,如表1。

可以用3 个测试用例测试这3 个等价类:

测试用例1:输入用户名称“dbtest”,给出添加成功提示//(1);

测试用例2:输入用户名称“”,提示输入的用户名不合法//(2);

测试用例3:输入用户名称大于30 位,如“thisisalonglongstringanditistoolong”,提示输入的用户名不合法// 边界值

中有两个边界值1 和30,根据界值分析法可以设计四个边界测试用例:

测试用例1:用户名称长度取1,输入“a”,给出添加成功提示;

测试用例2:用户名称长度取0,输入“”,提示输入用户名不合法;

测试用例3:用户名称长度取30,输入“111112222233333444445555566666”,给出添加成功提示;

测试用例4:用户名称长度取31,输入“1111122222333334444455555666667”,提示输入的用户名不合法。

由于边界值分析方法是对等价类划分方法的补充,这里选了和等价类划分方法法中同样功能的例子,在实际工作中软件“增加数据库用户”功能的测试应将两个方法的用例合并起来,即在等价类用例的基础上补充上边界值,扣除重复的部分,这里共设计6个测试用例

第三题

?某软件规格说明书包含“订货单处理程序”的处理逻辑描述为:如果订货金额不足500 元且未过期,则向顾客发出批准单和提货单,已过期的什么通知也不发;如果订货金额超过500 但不足1000 ,则发出批准单和提货单,对已经过期的发过期通知单;如果订货金额超过1000 ,不论是否过期,都要发出批准单和提货单。

要求:画出因果图,并生成判定表和设计测试用例

(完整版)软件质量测试与保证参考答案最后整理

选择题6 填空题10 (名词解释 4 简答7 综合题1)涉及标准内容的不考括号内为以下内容 第1章 2.简述软件危机的表现形式和诱发原因,并谈谈软件危机和软件错误的区别。 答:软件危机是指计算机软件开发与维护过程中所遇到的一系列严重问题。其表现形式为:软件价格高、软件工作量难于估计、软件质量低、软件修改与维护困难、软件的供需差在不断扩大、软件的开发与维护过程往往失去控制。 诱发软件错误的原因:需求定义的不完善、客户与开发者间不良沟通、对软件需求的故意偏离、逻辑设计的错误、编码错误、不符合文档编制和编码规定、测试过程的不完善、规程的错误、文档编制错误。 3. 影响软件质量的因素有哪些? 答:正确性、健壮性、效率、完整性、风险、可用性、可移植性、可再用性、互运行性、可理解性、可维修性、灵活性、可测试性。 第2章 3. 软件质量保证标准分为哪几类以及它的分类准则是什么? 答:软件质量保证标准分为质量管理标准和项目过程标准。 软件质量保证标的分类是从关注单位、关注重点、标准的目的和标准的目标这几个方面着手的。 第3章 1. 为什么软件质量会有成本呢? 答:软件产品的质量成本,或更准确地说,软件质量的投资,根源于确保开发产品符合早已确认的需求。而软件产品投资的性质和规模由多种不同因素决定,其中包括:项目预算、开发产品的类型、使用的技术、消费者提出的需求及该合同能否提供具有在标准和规章限定框架内的特别内容的政府合同、内部开发环境、开发团队所拥有的领域知识、可重复过程和测量与开发者日常工作结合的程度。 2. 软件质量成本分析的输入的数据需求是通过什么途径获得的? 答:在执行质量成本度量的任务时,必须保证相关数据可观察或可测量。这些数据可以是通过以下几个方面得到:直接观测得到的;通过分析得到的;由顾客提供的;从其他任务的执行情况中收集的;其他项目的输出结果;由项目本身的物理特性要求的。 第4章 1. 审查过程的辅助目标有哪些? 答:(1)提供从需求到设计的可跟踪性。(2)为下一阶段的开发提供正确的技术基础。(3)提高编程的质量。(4)提高交付产品的质量。(5)获得较低的生命周期花费。(6)增加测试过程的有效性。(7)提供程序可维护性的一个重要保证。(8)鼓励采用带有进入、退出准则的软件管理方法。 第5章 (空) 第6章 1. 瀑布模型将软件生命周期的各项活动规定唯一古代顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品,其有什么优缺点? 答:优点:(1)强调开发的阶段性。(2)强调早期计划及需求调查。(3)强调产品测试。 缺点:(1)依赖于早期进行的惟一一次需求调查,不能适应需求的变化。 (2)由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程。 (3)风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。 2. 螺旋模型有什么优缺点? 答:优点:(1)强调严格的全过程风险管理。(2)强调各开发阶段的质量。(3)提供机会检讨项目是否有价值继续下去。 缺点:引入非常严格的风险识别,风险分析,和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员,资金,和时间的投入。 3. 开发原型化系统一般由几个阶段? 答:(1)确定用户需求(2)开发原始模型。(3)征求用户对初始原型的改进意见。(4)修改原型。

软件测试 填空题

1、软件质量工程包括软件质量保证、软件质量规划和软件质量控制三大方面。 2、McCall模型产品修改纬度的质量因素有可维护性、可测试性、灵活性。 3、面向对象模型不同于其他模型的主要特征是组件的密集重用。 4、有两种同行评审方法学:审查和走查。 5、RMA可以划分成三组类别内部风险管理措施,分包风险管理措施,顾客风险管理措施 6、支持性质量手段有模板和检查表。 7、依据软件系统的生命周期和其他阶段,软件质量度量划分为软件过程度量和软件产品度量。 8、软件配置发布的版本有基线版本、中间版本、修订版本。 9、SQA标准被划分成软件质量管理标准和软件项目过程标准两类。 10、软件缺陷的固有特征有软件缺陷的固有性、软件缺陷的敏感性、软件缺陷的感染性。 11、McCall模型划分了软件运行、软件转移、软件修改三个纬度的11个软件质量因素。 12、螺旋模型任何一次迭代都可划分为制定计划、风险分析和化解、工程和顾客评估四个项限。 13、依据合同评审的目标对合同评审主题进行分类为建议草案评审主题和合同草案评审主题两种类型。

14、典型的版本方针包括严格-单一活动版本方针、多版本方针。 15、软件对属于各种质量因素的需求的符合性是由软件质量度量来测量的。 16、CAPA过程的成功运行包含如下活动:信息收集、信息分析、解决方案和改进方法的建立、改进方法的执行、跟踪。 17、常见的软件配置演化模型有线性演化模型和树演化模型。 18、软件更改的质量保证工作需要每个更改的SCI的质量保证和整个新软件系统版本的质量保证两个级别的活动。 19、从内容和重点上我们可以把质量管理标准划分成认证标准和评估标准两种类型。 20、测试人员、SQA单位是SQA专职人员。 21、CMM内容包含初始级、可重复级、已定义级、已管理级和可优化级五个等级。 22、软件质量保证的目标包括面向产品的软件开发和面向过程的软件维护两大方面。 23、开发生命周期阶段SQA部件可以划分成三类:评审、专家观点、软件测试、软件维护SQA部件和由第三方/分包商使用的SQA部件。 24、版本方针和更改方针是维护方针的主要组成。 25、外部参与方可被分类为分包商、COTS软件和重用软件模块的供

一套比较完整的软件测试人员面试题

人力资源问题 你为什么选择软件测试行业 因为之前有了解软件测试这个行业,觉得他的发展前景很好。也对 根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么 要有架构师、开发经理、测试经理、程序员、测试员 我在里面主要是负责所分到的模块执行测试用例。 结合你以前的学习和工作经验,你认为如何做好测试。 根据我以前的工作经验,我认为做好工作首先要有一个好的沟通,只有沟通无障碍了,才会有好的协作,才会有跟好的效率,再一个就是技术一定要过关,做测试要有足够的耐心,和一个良好的工作习惯,不懂的就问,实时与同事沟通这样的话才能做好测试工作。 你觉得测试最重要的是什么 尽可能的找出软件的错误 怎样看待加班问题 加班的话我没有太多的意见,但是我还是觉得如果能够合理的安排时间的话,不会有太多时候会加班的。如果一个很有个性的程序员认为自己的BUG不是BUG,怎么解决? 首先我要确定我所提的在我认为是不是bug,如果我认为是的话我会在他面前重现这个bug和他讲这是个bug,和他沟通,或者我会找到我的直系领导让他解决。 为什么在团队中要有测试 因为软件有错误,如果没有专业的测试人员很难发现软件的一些错误。 在测试时代学习自己最大的收获是什么? 在测试时代我除了学习了测试的知识外,还看到了老师们对待测试的一种态度,明白了做任何工作都要有沟通,做测试的也要有很好的沟通才可以做好。知道自己在项目组中的位置,和开发的关系。 你对未来的规划 我想在工作中慢慢的积累经验,使自己强大起来,能够担任更重要的职务。 自己优势及缺点 我的优点是有足够的耐心对待每一件事情,善于观察事物,承受压力的能力很强。缺点可能就是我不是很爱说话,习惯做不习惯说,但是和人沟通还是没有问题的。 你为什么选择测试时代不选择51testing 因为相对比来看测试时代价钱相对公道,师资也不错,还有一个原因就是在网上查了一下测试时代的口碑不错,也是网放心过来的原因。 13.请谈谈您对测试工作的理解 我认为测试工作是找出软件产品的错误, 14.你认为测试人员需要具备哪些素质? 我认为做测试的应该要有一定的协调能力,因为测试人员要经常与开发接触处理一些问题,如果处理不好的话会引起一些冲突这样的话工作上就会做不好。还有测试人员要有一定的耐心,有的时候做的测试很枯燥乏味的。除了要有耐心之外还要细心,不放过每一个可能的错误。 15.你为什么能够做测试这一行。 虽然说我的测试技术还不是很纯熟,但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测试不仅是要求技术好,还要有一定的沟通能力,耐心、细心等外在的因素。综合起来看我认为我是胜任这个工作的。 1测试的目的是什么? 测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。

软件测试保证软件质量

软件测试可以决定软件质量 测试达人一句话我印象很深:“软件质量保证关乎我们的生活质量,而软件测试是打开软件质量保证大门的金钥匙。”既然将软件测试形容是金钥匙,那么软件测试对于软件质量的影响,乃至于对我们生活的重要性和必要性不言而喻。 好的软件测试可以保证软件的良好运行,从而给人们的生活带来巨大的帮助。同时,不好的软件测试对于人们的生活来说,有时候是灾难性的。实例最具有说服力,首都机场由于软件缺陷影响到通信传输,造成航班无法起飞,大批旅客滞留,对于公司信誉和经济都带来了极大损失;北京奥运会的购票系统对于实际用户数量估计不足,性能问题使网站瘫痪,成为开发中没有做好良好测试的生动例子;经济上,迪士尼对于系统兼容性的缺乏考虑,Intel 芯片的测试缺陷都带来了上亿美元的经济损失……诸如此类的事情不胜枚举,每一次较大的软件灾难的发生,软件测试的不足都是其中的重要原因,更不用说哪些性命攸关的项目,武器、国防软件的测试更是一点都马虎不得,没有充分的进行测试,加大了重大事故和增加牺牲的惨痛结果,因此,软件测试的重要性和必要性成为越来越多的软件开发者所必须要考虑的重点。 软件测试的目的其实就是保证软件质量,然而,越来越多的实际经验和教训告诉我们,软件测试可以决定软件质量。现在人们普遍认为软件测试贯穿整个软件生命周期,从需求评审、设计评审开始,测试就介入到软件产品的开发活动或者软件项目实施中。V模型中,需求验证对应验收测试,客户需求的确认测试;系统架构设计的验证对应系统非功能测试;产品详细设计的验证对应功能测试;代码的验证对应单元测试和集成测试。目前比较流行的敏捷方法(Scrum方法和极限编程等)中的方法“测试驱动开发(TDD)”就把测试放到了最前面的位置,就是考虑到了测试对于整个软件开发质量的重大影响。 就实际的个人开发经验来言,从最初的不在意软件测试,从而吃了严重软件质量缺陷的亏,到事先设计好足够的测试用例,从开发的每个阶段都进行测试的这样的一个转变,也可以体会到测试对我们开发习惯的影响。没有考虑太多测试重要性的开发过程基本都是随意的开发,重点完成功能的需求,不在意某些地方的小漏洞,但久而久之就会发现,自己的设计和编码有很多bug,而且改动起来非常麻烦,有时候必须要完全改动才能满足要求。然后开始慢慢接触软件测试,力求在开发初期就把所有开发的不足解决,因为前期的一个小小的无论是需求的缺陷还是设计的缺陷,改动起来是费时费力的。但是效果也很明显,往往充分的测试能得到比较高的软件质量,使用起来也很少崩溃或者不满足需求。因此,可以说,是软件测试创造了软件的高质量,决定了软件带给我们的生活质量的改善。

软件测试与质量保证

软件测试与质量保证 一、软件测试的定义 定义:软件测试是为了发现错误而执行程序的过程。或者说软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。二、测试的目的: ?基于不同的立场,存在着两种完全不同的测试目的。 ?从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。 ?从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。 Grenford Myers软件测试目的 (1) 测试是程序的执行过程,目的在于发现错误; (2) 一个好的测试用例在于能发现至今未发现的错误; (3) 一个成功的测试是发现了至今未发现的错误的测试 ?换言之,测试的目的是 –系统地找出软件中潜在的各种错误和缺陷。 –能够证明软件的功能和性能与需求说明相符合。 –测试不能表明软件中不存在错误,它只能说明软件中存在错误。 三、软件测试的原则 1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 2. 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。 3. 程序员应避免检查自己的程序。 4. 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 5. 充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。 6.严格执行测试计划,排除测试的随意性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。 四、软件测试的对象 ?软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。 ?需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。 五、确认和验证: ?为把握软件开发各个环节的正确性,需要进行各种确认和验证工作。 ?确认(Validation),是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。 –需求规格说明的确认 –程序的确认 ?验证(Verification),试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。

手机测试策略call)

C D M A手机测试经验总结手机测试前要先注意手机上市的三个里程碑: 1.信息产业部 TA测试 由信息产业部进行的为获取NAL(Network Access License)而进行的测试。与软件测试相关的主要是CTTL的一部分测试用例和UG交叉检查。UG提到的功能都要求已经实现。一般来说,检查的都是比较基本的功能。网络运营商PA测试 由运营商进行的产品接受性测试。与软件测试相关的主要是增值业务测试。这里要求有关增值业务的软件,都能符合运营商的要求(有终端规范和测试规范)。另外,要求手机软件成熟、稳定。3. 手机上市 主要的测试策略 ?Release Test:每个软件版本都要进行的测试,主要涉及每个Feature最基本的功能。 ?Error Verification:集中在这个版本相对上个版本修改的Error、增强的功能以及新加的功能的测试。 ?Full Feature Test: Feature功能的全面的测试。考虑到人力,资源以及有效性,只在比较重要的软件版本上测。(要求测试的软件版本具有一定稳定性和成熟度) ?CTTL Related Test&UG Cross Check: 主要是针对TA做的准备测试。 ?Error Regression Test:在最后相对稳定的软件版本上,把已经修改好的Error重新验证一遍,以确保没有重新出现。 ?Pre-PA Test:按照运营商的测试规范进行的增值业务相关的测试。

?Free Test:有效地弥补测试用例的缺陷。发现深层次错误的重要途径。 测试重点:Before TA ?每个软件版本都要进行Release Test和Error Verification。 ?手机的所有Feature都Configuration好之后,就可以进行一次全面的Full Feature Test。 ?尽早进行CTTL Related Test&UG Cross Check,给研发人员充分的时间去修改Error。 ?如果只有一部分的Feature提前做好Configuration,就可以对这些Feature进行单独的Full Feature Test。 测试重点:Before PA?在这段时期主要针对增值业务的测试以及对于先前发现的Error的跟踪测试。 ?对于支持运营商的增值业务的手机,要对相关Feature进行Full Feature Test和准备PA测试。 ?由于前一阶段时间有限,为了弥补对一些没有覆盖的功能以及一些深层次的测试,需要对各个Feature进行有方向的大量的Free Test。 ?在要送往运营商做PA测试的软件版本上,进行所有Feature的Full Feature Test,以及准备PA测试,确保能够通过测试。 测试重点:Before Launch ?这段时期软件相对比较成熟,主要应该考虑一些以前测试比较薄弱的地方、或者Error比较集中的地方。 如何做好手机UI测试项目的管理 ?角色分工清晰

软件测试与软件质量关系的概述

软件测试与软件质量关系 的概述 Prepared on 24 November 2020

软件测试与软件质量关系的概述 摘要:软件测试和软件质量的概念是分不开的。测试是手段,质量是目的。软件测试能够提高软件质量,但是软件测试和软件质量保证二者之间既存在包含又存有交叉的关系。软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。本文是通过软件质量和软件测试的相关概念来讨论软件测试和软件质量之间的关系。 关键字:软件测试;质量度量;质量模型;白盒测试;黑盒测试 An overview of the relationship between software testing and the software quality Abstract:The concept of software testing and software quality are inseparable. Testing is a means, quality is the goal. Software testing can improve the quality of software, but software testing and software quality assurance exists between include and exists a relationship of cross. Software testing to identify software defects, to ensure that the software products meet the demand. But the test is not quality assurance. Test can find errors and modified, so as to improve the quality of software products. Software quality assurance is to avoid mistakes in order to high quality, and other aspects of measures to ensure the quality problem. This article is through the related concepts of software quality and software testing to discuss the relationship between the quality of software testing and software. Key words:Software testing; Quality measures; The quality of the model; White box testing; Black box testing

软件测试人才发展现状

软件测试人才发展展望 软件测试属新兴职业,但目前国内软件产业规模越来越大,国内软件行业突破了传统的作坊式生产,从单打独斗的开发模式升级为工业化、流水线式的生产模式,导致专业的软件测试人才需求缺口巨大。据悉,中国IT人才缺口超过100万名,其中30万名以上为软件测试人才。作为工业化产品质量的“把门”者,软件测试工程师也就成为软件开发企业必不可少的技术人才。据悉,目前国内软件测试和开发人员比例大约在1:4—1:5,而国外测试和开发人员比例为1:1,可见,国内软件测试人才需求和职业发展潜力巨大。据分析,中国软件测试职业具有以下特征: 就业竞争小。据前程无忧数据显示,目前国内120万软件从业人员中,真正能担当软件测试职位的不超过5万人,人才缺口达到20万并有逐年扩大的趋势。人才的极度匮乏令许多IT企业不得不延缓甚至停止项目,为企业发展带来消极影响,但对人才就业却有积极意义。人才供不应求让软件测试人员的就业竞争压力明显小于同类其它职业,有利于从业者的身心健康。另外,由于软件测试在我国起步较晚,独立设置测试部门、对测试人员有强烈需求的多为独具慧眼的大中型IT企业。软件测试人才不需要在小企业积累经验就能获得知名企业的入门通行证,工作起点高于同类其它职业。 高薪没商量。为了吸引更多的人才,企业纷纷采取高薪策略,刚入行的软件测试人员,起步月薪就在3000-6000元左右,远高于同龄人1000-2000元的薪资水平,工作2-3年后的薪资更是翻番。 多元化发展。与其他IT职位相比,软件测试人员最大的优势就是发展方向的多元化。由于工作的特殊性,测试人员不但需要对软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后的等领域都要涉及。在这过程中,测试人员不仅提升了专业的软件测试技能,还能接触到各行各业,项目管理、沟通协调、市场需求分析等能力都能得到很好的锻炼,从而为自己的多元化发展奠定了基础。经过软件测试岗位洗礼的人才往往是行业中的多面手,比其它IT人才具有更强的可塑性,在技术、管理、市场甚至其它非IT领域都能得到良好的发展。 无性别歧视。如果把软件开发领域比作男子单打,那么软件测试领域就是混合双打。由于工作的特殊,软件测试人员往往更偏好认真、耐心、细致、敏感、等个性元素,而这在一定程度上与女性的个性气质相吻合。据了解,目前很多IT企业中软件测试人员的比例更趋向平衡,甚至出现女性员工成主流的情况。 测试职业的这些特征吸引了很多软件人才的注目,山东省软件评测中心根据多年人才培养的经验,展望2011年,软件测试人才将呈现以下发展趋势: 1、中高级软件测试人才需求量进一步加大

软件质量保证测试试题与答案

软件质量保证测试试题与答案

选择题 1.软件测试的目的是( B )。 A)试验性运行软件 B)发现软件错误 C)证明软件正确 D)找出软件中全部错误 2.软件测试中白盒法是通过分析程序的( B )来设计测试用例的。 A)应用范围 B)内部逻辑C)功能 D)输入数据 3.黑盒法是根据程序的( C )来设计测试用例的。A)应用范围 B)内部逻辑C)功能 D)输入数据 4.为了提高软件测试的效率,应该( D )。 A)随机地选取测试数据 B)取一切可能的输入数据作为测试数据 C)在完成编码以后制定软件的测试计划 D)选择发现错误可能性最大的数据作为测试用例 5.与设计测试用例无关的文档是( A )。 A)项目开发计划 B)需求规格说明书 C)设计说明书 D)源程序 6.测试的关键问题是( B )。 A)如何组织软件评审 B)如何选择测试用例 C)如何验证程序的正确性 D)如何采用综合策略 7.软件测试用例主要由输入数据和( C )两部分组成。A)测试计划 B)测试

规则 C)预期输出结果 D)以往测试记录分析 8.成功的测试是指运行测试用例后( B )。 A)未发现程序错误 B)发现了程序错误 C)证明程序正确性 D)改正了程序错误 9.下列几种逻辑覆盖标准中,查错能力最强的是( D )。A)语句覆盖 B)判定覆盖C)条件覆盖 D)条件组合覆盖 10.在黑盒测试中,着重检查输入条件组合的方法是( D )。 A)等价类划分法 B)边界值分析法 C)错误推测法 D)因果图法 11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( A )。A)系统功能 B)局部数据结构 C)重要的执行路径 D)错误处理 12.软件测试过程中的集成测试主要是为了发现( B )阶段的错误。 A)需求分析 B)概要设计 C)详细设计 D)编码13.不属于白盒测试的技术是( D )。 A)路径覆盖 B)判定覆盖C)循环覆盖 D)边界值分析 14.集成测试时,能较早发现

软件测试策略模板

目录 目录 (1) 系统总体测试策略 (2) 1概述......................................................................................... 错误!未定义书签。2产品研发状况分析.. (3) 3测试综述 (3) 3.1测试项目分析 (3) 3.2项目继承部分的测试策略 (4) 3.3自动化测试策略 (4) 4测试设计策略 (4) 4.1特性方案设计策略 (4) 5SIT策略.................................................................................... 错误!未定义书签。 5.1测试重点 (5) 5.2测试环境及工具 (5) 5.3入口准则 (6) 5.4出口准则 (6) 6SVT策略 (6) 6.1测试重点 (6) 6.2测试环境及工具 (6) 6.3入口准则 (6) 6.4出口准则 (6) 7认证和标竿测试策略 (6) 7.1测试重点 (6) 7.2测试环境及工具 (6) 7.3入口准则 (7) 7.4出口准则 (7) 8UAT测试策略 (7) 8.1测试重点 (7) 8.2测试环境及工具 (7) 8.3入口准则 (7) 8.4出口准则 (7) 9其它特殊测试的策略 (7)

错误!未找到引用源。关键词: 摘要: 缩略语清单:

1 概述 描述本策略覆盖的范围(包括和不包括的内容),可明确所覆盖的IPD阶段以及产品测试活动。 2 产品研发状况分析 产品的研发状况对该产品的测试策略具有决定性的影响,不同的产品研发状况将可能导致完全不同的测试策略,测试组应根据产品的研发状况确定正确的测试策略以达到最优的测试效果。 参考Build计划,对产品的Build划分以及各个Build包含的主要特性、功能进行简要介绍,作为策略制定的重要基础和依据。 3 测试综述 3.1 测试项目分析 总体上简要介绍产品测试过程中要开展的主要活动,策略,各活动各自的测试关注点。下表中的测试项目仅代表示例,并不是产品内部测试的全部,它仅反映了该测试阶段的部分特点,在实际描述时,可依产品具体情况确定。

软件测试与软件质量关系的概述

软件测试与软件质量关系的概述 摘要:软件测试和软件质量的概念是分不开的。测试是手段,质量是目的。软件测试能够提高软件质量,但是软件测试和软件质量保证二者之间既存在包含又存有交叉的关系。软件测试能够找出软件缺陷,确保软件产品满足需求。但是测试不是质量保证。测试可以查找错误并进行修改,从而提高软件产品的质量。软件质量保证则是避免错误以求高质量,并且还有其他方面的措施以保证质量问题。本文是通过软件质量和软件测试的相关概念来讨论软件测试和软件质量之间的关系。 关键字:软件测试;质量度量;质量模型;白盒测试;黑盒测试 An overview of the relationship between software testing and the software quality Abstract:The concept of software testing and software quality are inseparable. Testing is a means, quality is the goal. Software testing can improve the quality of software, but software testing and software quality assurance exists between include and exists a relationship of cross. Software testing to identify software defects, to ensure that the software products meet the demand. But the test is not quality assurance. Test can find errors and modified, so as to improve the quality of software products. Software quality assurance is to avoid mistakes in order to high quality, and other aspects of measures to ensure the quality problem. This article is through the related concepts of

软件测试人员应具备的能力

按照本章所说的的软件测试人员应具备的能力,分析一下自己的优势和劣势,提交一份不少于1000字的报告。 在本门的《搭建Windows 测试环境》课程中,提到了两个关键的额名称:软件测试和环境测试。通过本章的讲解:能够让我们了解到了软件测试和测试环境的知识,搭建测试环境的应该具备的知识,了解到软件的层次、分类、授权等的基本内容,了解到对软件操作的常用术语和一些简单的硬件知识。 在学习本章的软件测试环境中,测试环境就是运行软件必须具备的各种软件和硬件的集合,软件测试主要目的就是发现软件中的错误和缺陷。然而软件测试只能发现存在的错误,并不能保证软件的质量,并不是发现的错误越多,软件的质量越好;实际上正好相反,软件测试人员在软件当中的错误越多,往往证明软件的质量越差,隐藏的错误越多。 而作为一个测试人员,在搭建测试环境中,所需要做的工作: ◆搭建测试平台。 ◆学习软件使用,了解用户的需求。 ◆测试软件,发现问题。 ◆提交问题报告。 对于上面所列出的事项,就应该知道我们做为一个测试人员,最起码应该具备的技术知识,具体的可分成3大类:1、软件知识,2、硬件知识,3、网络知识。 软件知识,就是在软件知识当中,测试人员需要能够快速的学习软件的使用,了解常用的软件术语。最重要的是能够安装和使用常用软件和操作系统:作为初级测试人员,可以不具备软件开发的能力,但是如果想做好测试工作,软件开发的知识也是必须具备的,而且不仅是软件开发的知识,在测试相应软件时,还需要相应的软件方面的知识。 软件在计算机当中是一系列的指令,他不能够脱离硬件的存在,他也需要一定的载体才能够进行传播。 对软件的使用,很多用户发现在使用计算机的时候非常困难,往往找不到自己需要的功能,最后得出结论这个软件不支持这个功能。从这里让我知道软件的设计本身不符合用户的习惯;了解到该软件的功能没有很好的分类。 所以我们作为一个软件测试人员,必须先了解用户的需求,了解用户的习惯方式,最后总结出Windows 的资源管理的界面的5个名词: 1、标题栏 2、菜单栏 3、工具栏 4、状态栏 5、对话框 在学习软件的使用,帮助分类主要看清楚每个帮助的用途,同时还要有一个学习步骤让自己能够快速使用软件的主要功能。至此分有8类: 1.README 2.使用向导(Tutorials) 3.用户指南(User’s Guide) 4.参考手册(Reference Manual) 5.联机帮助 6.索引(Index) 7.收索(Search) 8.新闻组 对于硬件知识,测试人员必须能够对常见的硬件设备有一个了解和认识,所以常见的硬件有如下几点: CPU,内存,硬盘,网卡,显卡,主板,光驱,鼠标和键盘,显示器等。 硬件被安装到计算机中时比不能立刻使用,还需要安装软件进行驱动,才能够发挥硬件的最大特性。所以配置不同的驱动程序,硬件的效率也是不相同的

软件质量保证与测试复习题

软件质量保证与测试复习题类型: 一、单项选择题(共20小题,20%) 二、判断题(共20小题,20%) 三、简答题(共5小题,30%) 四、综合题(共2题,30%) 复习题: 一、单项选择题 1、软件测试的目的() A. 避免软件开发中出现的错误 B. 发现软件开发中出现的错误 C.尽可能发现并排除软件中潜藏的错误,提高软件的可靠性 D. 修改软件中出现的错误 2、软件测试是采用()执行软件的活动 A.测试用例B.输入数据C.测试环境D.输入条件 3、导致软件缺陷的最大原因是() A.软件需求说明书B.设计方案C.编码D.维护 4、在下列描述中,关于一个软件缺陷状态完整变化的错误描述是() A.打开——修复——关闭B.打开——关闭 C.打开——保留D.激活——修复——重新打开 5、在下列描述中,关于测试与调试的说法错误的是() A.测试是显示错误的行为;而调试是推理的过程 B.测试显示开发人员的错误。调试是开发人员为自己辩护 C.测试能预期和可控。调试需要想象、经验和思考 D.测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试不可能进行6、某次程序调试没有出现预计的结果,下列()不可能是导致出错的原因 A.变量没有初始化B.编写的语句书写格式不规范

C.循环控制出错D.代码输入有误 7、软件缺陷修复的代价最高的阶段为() A.发布阶段B.需求阶段C.设计阶段D.编码阶段 8、不属于逻辑覆盖方法的是() A.组合覆盖B.判定覆盖C.条件覆盖D.接口覆盖 9、()是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次A.条件覆盖B.组合覆盖C.判定覆盖D.语句覆盖 10、()是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次 A.判定-条件覆盖B..组合覆盖C.判定覆盖D.条件覆盖 11、软件缺陷修复的代价最高的阶段为() A.发布阶段B.需求阶段C.设计阶段D.编码阶段 12、下列()是关于软件缺陷的描述。 A.导致软件包含故障的人的行为B.产品的异常情况 C.引起一个功能部件不能完成所要求的功能的一种意外情况 D.功能部件执行其规定功能的能力丧失 13、软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?() A.功能测试B.单元测试C.结构测试D.验收测试 14、单元测试的主要任务不包括() A.出错处理B.全局数据结构C.独立路径D.模块接口 15、如下图所示的N-S图,至少需要()个测试用例完成逻辑覆盖。(逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖) A.12 B.48 C.27 D.18 16、单元测试中用来模拟实现被测模块需调用的其他功能模块的是() A.驱动模块B.桩模块C.主控模块D.真实的被调用模块 17、集成测试计划应该在()阶段末提交 A.需求分析B.概要设计C.详细设计D.单元测试完成 18、下列关于程序效率的描述错误的是() A.提高程序的执行速度可以提高程序的效率

(推荐)测试人员 应该具备的素质和工作职责

测试人员应具备的素质 一.计算机专业技能 计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件,所以计算机专业技能是必不可少的。 计算机专业技能主要包含三个方面: 1.测试专业技能。要想成为一名优秀的测试工程师,首先应该具有扎实 的专业基础。因此,测试工程师应该努力学习测试专业知识,告别简 单的“点击”之类的测试工作,让测试工作以自己的专业知识为依托。 2.软件编程技能。测试人员编写的程序应着眼于运行正确,同时兼顾高 效率,尤其体现在与性能测试相关的测试代码编写上。因此测试人员 要具备一定的算法设计能力。测试工程师至少应该掌握Java、C#、C++ 之类的一门语言以及相应的开发工具。 3.网络方面知识,测试人员应该掌握基本的网络协议以及网络工作原理, 尤其要掌握一些网络环境的配置。 4.操作系统方面,应该掌握基本的使用以及安装、配置等。掌握Unix、 linux的基本的操作命令以及相关的工具软件。 5.数据库知识则是更应该掌握技能,不但要掌握基本的安装、配置,还 要掌握SQL。Mysql、MS Sqlserver、Oracle等常见数据库的使用。 6.测试工具,系统学习软件测试的各类工具,包括自动测试工具Quick Test Professional、压力测试工具LoadRunner、测试管理工具Test Director等。 二.行业知识 行业主要指测试人员所在企业涉及的行业领域,行业知识即业务知识,是 测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。 很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。

软件测试和软件质量保证练习答案

第一章软件质量保证 练习答案 1、软件质量的定义? 软件质量是软件产品满足使用要求的程度。对于软件质量的衡量,就是高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。“正常地运行”意味着该软件必须尽可能没有缺陷( bug)。 2、软件质量保证的定义? 软件质量保证是一系列系统性的活动,它提供开发出满足使用要求产品的软件过程的能力证据。 3、质量控制中的测试技术有哪些?想一想各自的适用情况。 审查( Inspection ):软件的一种基本测试方法,它以一系列典型问题为依据进行检测。 走查( Walkthrough ):一对一的审查,比审查更加仔细。 回顾(Review):以发现软件中存在的错误和缺陷为目的的一种软件测试方法,它是在软件证实执行之前完成。 4、SDLC各阶段的文档有哪些,各自的质量目标是什么? 请参照学生用书3-5 页,对于各阶段的目标,抓住主要的要点。 5、质量计划的手段和技巧分别有哪些? A、效益成本分析 B、基本水平标准 C流程图,包括因果图、系统程序流程图等 D试验设计 6、质量控制的手段和技巧分别有哪些? 有以下控制的手段和技巧:检验、控制表、排列图、抽样调查统计、流程图和趋势分析等。 作业答案 1、判断是非:好的测试员不懈追求完美。 错。好的测试员知道何时完美无法企及,何时达到“够好”。 2、有没有质量很高但是可靠性很差的产品?请举例说明。 有可能,但是它取决于客户对质量的期望。不少人购买高性能跑车,认为提速、时速、式样、舒适度和装饰好就是高质量。此类汽车一般可靠性差,经常抛锚,修理费用昂贵,而车主不把可靠性差当作质量问题。3、请思考,可能完全测试程序吗?除了极短小的简单程序,完全测试需要太多的输入、输出和分支组合。此 外,软件说明书 也许不客观,可以用多种方式解释。 4、在学习完本章后,判断下列哪种方法会减少成本: a、让客户去找缺陷

《软件测试与质量保证》教学大纲(2014版)

软件测试与质量保证 Software Testing and Quality Assurance 一、课程编号:883064 二、课程类别:专业领域课 三、课程性质:必修课 四、学时:40(讲课学时:28 实验学时:上机学时:12 课外学时:) 五、学分:2.5 六、先修课程要求:面向对象程序设计、数据库技术、软件工程等 七、适用专业:软件工程 八、适用年级、学期:三年级第2学期 九、课程目的及任务: 《软件测试与质量保证》是软件工程专业的一门专业必修课。该课程定位在软件测试基本原理和测试技术的学习,课程的重点是使学生掌握如何保证软件质量,如何避免或减少软件测试风险。通过对该课程的学习,学生可以了解软件测试在软件生命周期和软件工程中的地位、作用,学习软件测试的基本理论和基本原理、技术方法、设计文档、实施步骤和常用的软件测试工具,掌握软件开发中的测试过程管理、测试用例设计、软件系统测试等解决实际问题的基本能力,同时培养学生良好的软件开发素质,为后续的专业综合实验和毕业设计等课程奠定良好的软件测试理论、技术。 十、课程内容及基本要求(重点、难点、知识掌握程度及考核要求): 第一部分:软件测试基础 1)掌握软件测试中常用术语及概念 2)掌握软件测试方法的不同分类及方法(黑盒、白盒、静态、动态、单元、 模块、集成、回归等等),能够根据情况选择合适的测试方法 3)掌握搭建简单测试环境的方法 4)掌握测试用例的设计方法及格式 5)了解企业中测试流程及测试部门的职能 6)掌握黑盒测试技术(等价类、边界值、因果图、综合运用),能够独立 应用此方法于具体案例 7)了解缺陷管理方法(常用缺陷管理工具) 第二部分:黑盒测试工具

软件质量标准与测试依据和规范

1. 软件质量标准(ISO) 1.1 软件质量保证(ISO) ISO (International Standardization Organization,国际标准化组织) TC/176技术委员会制定的所有国际标准 ?质量保证标准(ISO9001/2/3) ?质量管理标准(ISO9004) TC176即ISO中第176个技术委员会,成立于1980年,全称是“质量保证技术委员会”,1987年又更名为“质量管理和质量保证技术委员会”。TC176专门负责制定质量管理和质量保证技术的标准 1.2 ISO 软件质量标准思想 ?控制思想,即对产品形成的全过程进行控制。任何事物都是由一个或多个过程活动的结果,只要对产品形成的全过程进行控制并达到过程质量要求,最终产品的质量就有了保证 ?预防的思想。通过对产品形成的全过程进行控制以及建立并有效运行自我完善机制达到预防不合格,从根本上减少或消除不合格品 1.3 ISO 软件质量标准结构 ISO9000系列标准的主体部分分为两组: ?“需方对供方要求质量保证”的标准ISO9001-9003 ?“供方建立质量保证体系”的标准ISO9004

ISO9001:设计/开发、生产、安装和服务中质量保证模式; ISO9002:生产和安装中的质量保证模式; ISO9003:最终检验和测试中的质量保证模式; ISO9004:质量管理和质量体系要素导则。 1.3.1 ISO9000与GB/T19000的关系 1.3.2 ISO9000-3 是什么 ISO9000-3其实是ISO质量管理和质量保证标准在软件开发、供应和维护中的使用指南,

并不作为质量体系注册/认证时的评估准则,主要考虑软件行业的特殊性制定。参照ISO9001《质量体系设计、开发、生产、安装和服务的质量保证模式》,并引用ISO 8402《质量管理和质量保证术语》,使得ISO9000系列标准应用范围得以拓展 . 1.3.3 ISO9000-3标准 软件开发、供应、维护中应用ISO9001的指南 是指南,不是标准 依然困惑:依然强调的是供应商和顾客的关系,不是工程师该如何做 1.3.4 ISO 9000-3 体系结构 ?合同评审 ?需方需求规格说明 ?开发计划 ?质量计划 ?设计和实现 ?测试和确认 ?验收 ?复制、交付和安装 ?维护 2.软件测试规范 2.1 概念 软件测试规范就是对软件测试的流程过程化并对每一个过程元素进行明确的界定,形成完整的规范体系。

软件质量保证测试试题与答案

选择题 1.软件测试的目的是(B)。 A)试验性运行软件 B)发现软件错误 C)证明软件正确 D)找出软件中全部错误 2.软件测试中白盒法是通过分析程序的( B )来设计测试用例的。 A)应用范围B)内部逻辑 C)功能 D)输入数据 3.黑盒法是根据程序的( C )来设计测试用例的。 A)应用范围 B)内部逻辑 C)功能 D)输入数据 4.为了提高软件测试的效率,应该(D)。 A)随机地选取测试数据 B)取一切可能的输入数据作为测试数据 C)在完成编码以后制定软件的测试计划 D)选择发现错误可能性最大的数据作为测试用例 5.与设计测试用例无关的文档是(A )。 A)项目开发计划 B)需求规格说明书 C)设计说明书 D)源程序 6.测试的关键问题是( B )。 A)如何组织软件评审 B)如何选择测试用例 C)如何验证程序的正确性 D)如何采用综合策略 7.软件测试用例主要由输入数据和( C)两部分组成。 A)测试计划 B)测试规则 C)预期输出结果 D)以往测试记录分析8.成功的测试是指运行测试用例后( B)。 A)未发现程序错误 B)发现了程序错误 C)证明程序正确性 D)改正了程序错误 9.下列几种逻辑覆盖标准中,查错能力最强的是(D )。 A)语句覆盖 B)判定覆盖 C)条件覆盖 D)条件组合覆盖 10.在黑盒测试中,着重检查输入条件组合的方法是( D )。 A)等价类划分法 B)边界值分析法 C)错误推测法D)因果图法 11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( A )。 A)系统功能 B)局部数据结构 C)重要的执行路径 D)错误处理 12.软件测试过程中的集成测试主要是为了发现( B)阶段的错误。 A)需求分析 B)概要设计 C)详细设计 D)编码 13.不属于白盒测试的技术是( D)。 A)路径覆盖 B)判定覆盖 C)循环覆盖D)边界值分析 14.集成测试时,能较早发现高层模块接口错误的测试方法为( A)。 A)自顶向下渐增式测试 B)自底向上渐增式测试 C)非渐增式测试 D)系统测试 15.使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准。

相关文档
相关文档 最新文档