《软件测试技术培训教材》由会员分享,可在线阅读,更多相关《软件测试技术培训教材(11页珍藏版)》请在金锄头文库上搜索。
1、软件测试技术软件测试的目的软件测试是以发现软件的缺陷为目的,使软件运行,将软件不运行所产生的危险性降低到允 许的范围,是一个为发现错误而执行程序的过程。 软件的缺陷是对软件产品预期属性的偏离现象。包括对产品规格说明书(在我们部门多看到 和听到的字眼是仕样书)的偏离;对客户/ 用户的期望的偏离,客户/ 用户的要求没有纳入软件产 品中(可能是仕样书说明时的遗漏, 也可能是软件实现的问题) 。 定义软件缺陷的规则有以下5 个: 1.软件未达到仕样书标明的功能 2.软件出现了仕样书指明不会出现的错误 3.软件功能超出了仕样书指明的范围 4.软件未达到仕样书虽未指出但应达到的目标 5.软件测试人员认为软
2、件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好软件测试人员的要求软件测试人员应具备的素质: 探索精神。软件测试人员不会害怕进入陌生环境,他们喜欢拿到新软件,安装在自己机器上, 观看结果。 故障排除能手。软件测试人员善于发现问题的症结,他们喜欢猜谜。 不懈努力。软件测试人员总是不停尝试,他们可能会碰到转瞬即逝或者难以重现的软件缺陷, 他们不会心存侥幸,而是尽一切可能去寻找。 创造性。测试显而易见的事实,那不是软件测试人员的工作,他们的工作是想出富有创意甚 至超常的手段来寻找软件缺陷。 追求完美。他们力求完美,但是知道某些无法企及时,不去苛求,而是尽力接近目标。 判断准确。软件测试人员要
3、决定测试内容、测试时间,以及看到的问题是否算作真正的缺陷 老练稳重。软件测试人员不害怕坏消息。他们必须告诉程序员,你的孩子(程序)很丑。优 秀的测试人员知道怎样老练地处理这些问题,和不够冷静的程序员怎样合作。 说服力。软件测试人员找出的软件缺陷有时被认为不重要,不用修复。测试人员要善于表达 观点,表明软件缺陷为何必须修复,并通过实际演示力陈观点。软件测试人员的一个基本素质是打破砂锅问到底。他们喜欢找出那些深藏不露的系统冲突。他们 乐于处理最复杂的问题。他们热衷于来回奔忙,追求尽善尽美,为征服系统而额手称庆。这就是 麻烦堆里地快乐。软件测试的一些概念单体测试,集成测试,系统测试,回归测试,验收测
4、试,差分测试和安装测试。 单体测试,是指对单个模块或者是一个函数等更小单位的测试,有时也被称为单元测试和模块测 试。集成测试,是指都多个模块组合起来,或者一个子系统的所有模块都结合起来后进行的测试,有 时也被成为结合测试。 系统测试, 是指整个系统的所有子系统都结合起来,即当前系统提交了所有功能以后进行的测试, 也有的时候被成为功能测试。 回归测试,是指修复或调整好软件环境之后进行测试,即BUG 修改后的确认测试。 验收测试,是指系统全部完成后,由客户确认系统或程序是否达到用户的需求的测试。 差分测试,是指当测试时间较短时(不足以进行一遍系统测试时),而只对整个系统中新变更或者 新追加功能的相
5、关部分的测试。 安装测试,确认用户系统的可安装性和可操作性。 (安装测试,一般用于需要制作安装程序的项目) 。手动测试和自动化测试 手动测试,是指测试人员,根据仕样书、编写的测试大纲或者其他测试文档,直接运行程序而完 成的测试。 自动化测试,是指测试人员,使用自动测试工具、或者编写测试脚本,让程序自动运行而进行的 测试。白盒测试和黑盒测试 白盒测试,是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测试方法。 黑盒测试,是一种从软件需求出发, 根据软件需求规格说明设计测试用例, 并按照测试用例的的要 求运行被测程序的测试方法。CodingReview 是指对原代码的检查。主要依靠有经验
6、的程序设计人员根据软件设计文档,通过阅读程序来发现 软件错误和缺陷。软件测试阶段与测试方法下图说明了整个软件产品周期,测试活动所处的位臵和介入的阶段。单体测试阶段单体测试阶段有两个活动单体测试设计和单体测试。单体测试设计,以详细设计的第一个设计完 成为切入点,根据详细设计进行单体测试设计,直到单体测试开始前完成。单体测试是以第一段 可以测试的函数或者代码完成为切入点,根据单体测试设计的设计文档进行测试。单体测试,主编码与调试测试 策略单体测试设 计系统测试设计集成测试设计文档编写 & 代码修改概要设计详细设计需求分析需求文档单体测试集成测试系统测试验收测试软件产品.回归测试回归测试.回归测试.
7、要有 3 种方法:白盒测试、黑盒测试和Coding Review。白盒测试白盒测试是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测试方法。主要包括 命令覆盖度,即对程序中的条件句的所有命令至少被执行一次的选择测试方案的方法;分支覆盖 度,即选择的 TESTCASE 应是在判断命令中的所有可能结果至少执行一次;路径覆盖度,即覆盖了 从程序的入口到出口的全路径的方法。 以下将通过举例介绍几种单体测试中制作测试用例和选择测试数据的方法。(1c-e 路径对两个命令执行语句进行执行测试 2. 分支覆盖:程序中每个判定的True 分支和 False 分支至少执行一次。 使用(A,B,X) =
8、(2,0,3) 和 (A,B,X) = (1,0,1)分别覆盖分支 a-c-e 和 a-b-d ,完成对分 支 a、b、c、d 和 e 的覆盖 或者使用 (A,B,X) = (3,0,3) 和 (A,B,X) = (2,1,1)分别覆盖分支 a-c-d 和 a-b-e ,完成 对分支 a、b、c、d 和 e 的覆盖 3. 条件覆盖:使程序的每个条件语句的True 和 False 取值至少满足一次 条件 1 (1=A) 条件 2 (0=B)T2(0=B) F2(0!=B) 条件 3 (2=A) T3(2=A) F3(2!=A) 条件 4 (1=X) 使用(A,B,X) = (2,0,3),覆盖条
9、件 (T1、T2、T3 和 T4) 使用(A,B,X) = (1,0,1),覆盖条件 (F1、T2、F3 和 F4) 使用(A,B,X) = (2,1,1),覆盖条件 (T1、F2、T3 和 F4) 对 T1T4 和 F1F4 进行覆盖 或者 使用(A,B,X) = (1,0,2),覆盖条件 (F1、T2、F3 和 T4) 使用(A,B,X) = (2,1,1),覆盖条件 (T1、F2、T3 和 F4) 对 T1T4 和 F1F4 进行覆盖4. 路径覆盖,设计足够的测试用例,要求覆盖程序中所有的路径。 根据这段程序我们很容易能够分析到,该程序有4 个路径 : Route1: a-c-e 选择测
10、试用例 (2,0,3) Route2:a-b-d 选择测试用例 (1,0,1) Route3:a-b-e 选择测试用例 (2,1,1) Route4:a-c-d 选择测试用例 (3,0,3) 这样我们根据以上4 个方面的分析,可以选择出 (2,0,3)、 (1,0,1)、 (3,0,3)、 (2,1,1) 和(1,0,2) 共五组测试数据覆盖上面提出的所有测试用例。这里要注意的是进行白盒测试时,我们不能使用 穷举法对所有的条件和分支进行排列组合,比如对那4 个条件进行排列组合,如果使用穷举法的 话应该有42种情况。我们只要分析出程序的主要分支和条件,并对每个分支和条件使用尽可能少 的测试用例进
11、行覆盖就可以了。我们在上面举出的例子只是包含了的条件判断,如果涉及到循环,要想清晰的分析出全部路径就 比较困难了。 下面介绍一种针对有循环语句的流程图,进行路径测试的方法, 这种方法又被称为基本路径测试。 首先要把流程图改成流图。以下就是一个含有循环语句的流程图,假设流程图的菱形决定框中不包含复合条件111023465879 10将上面的流程图映射到一个对应的流图,见下图。图中的每一个圆,称为流图的节点,代表一个 或多个语句。一个处理矩形框序列或者一个菱形决定框可被映射为一个节点。流图中的箭头,称 为边或者连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个节点,即使该节点并不代表任何
12、语句。由边和节点限定的范围称为区域。计算区域时应包括图外部的范围。112,367894,5010R3R1R2R4区域节点边下面在引入一个概念 “独立路径”,独立路径是指程序中至少引进一个新的处理语句集合或者一个 新条件的任一路径。即独立路径必须至少包含一条在定义该路径之前不曾用到的新边。而所有这 些度量路径的集合,就是我们要进行路径覆盖测试所采用的测试用例集。那么这个流图的一个独立路径集合为( 由于每个人选择路径的方式可能不同,因此我这里只是为大 家找到一个独立路径的集合) : 路径 1:1-11 路径 2:1-2-3-4-5-10-1-11 路径 3:1-2-3-6-8-9-10-1-11
13、路径 4:1-2-3-6-7-9-10-1-11 注意, 这里的每一条新的路径都包含了一条新边。 而路径 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11,对于上面 4 条来说不是独立路 径,因为它只是已有路径的简单合并,并未包含任何新边。这样我们就得到了使用路径覆盖法, 测试这段程序的所需的独立路径的集合,在选择符合这个集合的数据,就组成了测试用例集。黑盒测试黑盒测试,是一种从软件需求出发, 根据软件需求规格说明设计测试用例, 并按照测试用例的的要 求运行被测程序的测试方法。主要根据等价类划分和边界值分析的方法建立测试用例。 等价类划分是将程序的输入域划分成有效和无效的数据类
14、( 又称作有效等价类和无效等价类) 。接 着做两件事情 : 1设计一个测试用例,使其尽可能多的覆盖有效等价类。重复这一步,最终使得所有的有效等价类均被覆盖 2设计一个测试用例,使其只覆盖一个无效等价类。重复这一步,最终使所有的无效等价类均被 覆盖 划分等价类时采用的方法 (1) 输入条件代表一个范围或者需要一个特定的值,则可以定义一个有效等价类和两个无效等价 类; 例:范围“ 数据项的个数的范围可以从1 到 9999” 有效等价类:19999 特定的值“ 学生选课允许选择2 门至 4 门” 有效等价类:选课 2 门至 4 门 无效等价类:只选 1 门课或者未选课 选课超过 4 门(2) 输入条
15、件代表集合的某个元素或者是该输入条件是布尔式的,则可以定义一个有效等价类和 一个无效等价类; 例:代表集合“ 统计中国各省、市、自治区人口” 有效等价类:中国各省、市、自治区 无效等价类:外国的省、市等 布尔式“ 该标识符必须以字母开头, ”有效等价类:以字母开头的字符串 无效等价类:以非字母开头的字符串(3) 如果确认已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划 小。边界值分析 (Boundary Value Analysis) 是一种补充等价划分的测试用例设计技术,它不是简单的 选择等价类的任意元素,而是选择等价类边界的测试用例,它不仅注重输入条件,而且也从输出
16、 结果中到处测试用例。 边界值分析的方法 (1)输入条件代表以和为边界的范围时,测试用例应当包含、以及略大于和略小于 的值 (2)输入条件代表一组值,测试用例应当执行其中的最大值和最小值,还应当执行略大于最小值 和略小于最大值的值 (3)如果程序数据结构有预定义的边界(比如要求数组有100项) ,要测试其边界的数据项 (4)对于方法 1 和 2,也要考虑输出条件,测试用例应当包括能够产生最大和最小的输出值的数 据Coding Review Coding Reivew,是指对原代码的检查。主要依靠有经验的程序设计人员根据软件设计文档,通过 阅读程序来发现软件错误和缺陷。代码审查的内容包括:检查代码和设计的一致性;检查代码的 标准性,可读性;检查代码逻辑表达的正确性和完整性;检查代码结构的合理性。 代码审查不需要测试工具和设备,且具有一旦发现错误就能定位错误和一次发现一批错误等优