《软件测试》复习提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试复习提纲
第1章
1. 软件缺陷产生的原因和软件缺陷的定义
2. 软件测试的定义,软件测试V模型、W模型和H模型的特点及优缺点
3. 软件测试的分类
(1)按照软件测试的生命周期,可以将测试的执行过程划分为:单元测试、集成测试、确认测试、验收测试。
Alpha测试(内部的验收测试),Beta测试(用户进行的外部验收测试,但独立于验收测试)(2)按照软件测试技术可以将测试划分为白盒测试、黑盒测试、灰盒测试。
白盒测试(又称结构测试或逻辑驱动测试,主要测试程序的内部结构,设计的依据是设计文档),黑盒测试(又称作功能测试或数据驱动测试,主要测试的系统的功能,设计的依据是需求规格说明书),灰盒测试(介于白盒测试与黑盒测试之间的测试,关注输出对输入的正确性,同时也关注内部表现)
(3)其他分类形式(了解)
4. 软件测试与软件工程的关系
(1)软件测试是软件工程的一部分,不是独立于软件工程的
(2)软件测试贯穿于软件开发的全过程,软件开发过程中的所有结果都需要测试,甚至软件测试本身也需要测试
第2章
1. 白盒测试方法可分为两大类:静态测试方法和动态测试方法。
静
态测试方法不需要执行程序,而是以一些人工的模拟技术或使用测试软件对软件进行分析和测试;动态测试方法是设计一系列的测试用例,通过输入预先设定好的数据来动态运行程序,从而达到发现程序错误的目的。
2. 逻辑覆盖测试
(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定条件覆盖
(5)组合覆盖
(6)路径覆盖
知识点说明:理论上,上面6种覆盖在测试时要达到100%。
其中,最弱的覆盖是语句覆盖,最强的覆盖是组合覆盖。
若达不到100%的覆盖(如路径覆盖),则需换其他测试技术;每一个逻辑覆盖技术要理解并掌握其定义和使用方法,要分清强弱关系。
3. 路径分析测试
(1)控制流图。
对给定的程序或流程图,要会画控制流图,会计算环形复杂度(要掌握V(G)的3个计算公式,并掌握公式中符号代表的内容)。
(2)独立路径测试。
理解并掌握独立路径测试步骤和方法,会使用独立路径测试。
特别注意若一个判定中有多个条件,要把这些条件拆开后再画对应的控制流图。
(3)Z路径测试。
可以用来测试条件较多或较多循环体的程序,只考虑通过循环体0次和1次两种情况。
理解并掌握其定义和使用方法。
4. 循环测试:要掌握每一种循环的测试方法和测试步骤
(1)简单循环的测试。
十分重要,其他循环都是在简单循环测试的基础上完成的,要掌握测试方法。
(2)嵌套循环的测试。
理解并掌握嵌套循环的测试方法
(3)串接循环的测试。
理解并掌握两种串接循环的测试方法
总结:能对循环进行的测试方法和技术有独立路径测试、Z路径测试、循环测试。
5. 静态白盒测试。
人工的静态白盒测试主要有代码审查、桌面检查和代码走查。
其中,要理解并掌握桌面检查法。
6. 白盒测试设计的依据是设计文档,黑盒测试设计的依据是需求文档。
7. 静态测试的方法,尤其要掌握桌面检查法,桌面检查表的构成及表中内容填写规则
第3章
1. 等价类划分:划分标准是完备性和无冗余性
(1)标准等价类划分
(2)健壮等价类划分
说明:以上知识点要理解并掌握,标准和健壮的区别在于是否对无效数据进行测试。
2. 边界值分析
(1)标准边界值分析
(2)健壮边界值分析
说明:以上知识点要理解并掌握,标准和健壮的区别在于是否对无效数据进行测试。
3. 决策表法
(1)决策表的4个组成部分
(2)决策表的使用
说明:以上知识点要理解并掌握。
特别注意等价类划分和决策表法的联合使用(例3.7及练习和实训)
4. 因果图法
(1)因果图中用到的4个基本符号和5个强制符号
(2)因果图法测试的过程
说明:以上知识点要理解并掌握,并会使用
第4、5、6章
1.软件测试计划的重要性和包含的内容
2.测试过程实施所必备的核心文档是:测试计划、测试用例(大纲)和软件测试报告
3. 测试用例。
根据不同测试技术、测试要求编写对应的测试用例
4. 软件测试过程中,工具测试是软件测试的一个重要组成部分,工具测试可以完成手工测试很难开展或不能开展的测试。
但手工测试是最重要也是最有效的,工具测试只能作为辅助,
5. 了解常用的白盒测试工具和黑盒测试工具
6. JUnit应用于Java环境,可以完成单元测试和部分集成测试。
要掌握JUnit的配置和使用。
Junit测试框架及TestCase和TestSuite的作用;在使用Junit进行单元测试时,所有的测试类必须继承于TestCase,集成测试时测试类必须继承于Testsuite;setup主要实现测试前的初始化工作,而teardown则主要实现测试完成后的垃圾回收等工作
7.常用的压力测试工具有:LoadRunner、WinRunner、Webload等
8.结构化程序单元测试的对象是函数,面向对象单元测试的对象是类(或类中的方法)
9.面向对象的集成测试不能使用结构化的集成测试方法,如自顶向下、自底向上等,使用的是如类簇测试等集成测试方法
10.面向对象的测试模型分为:面向对象分析的测试(OOA Test)、面向对象设计的测试(OOD Test)、面向对象编程的测试(OOP Test)、面向对象的单元测试(OO Unit Test)、面向对象的集成测试(OO Integrate Test)、面向对象的系统测试(OO System Test)。
11.面向对象单元测试中,由继承引起的两个问题一定要清晰(教材P113)
(1)继承的成员函数是否都不需要测试
(2)对父类的测试能否照搬到子类
12.面向对象的集成测试、交互测试与UML中交互图(协作图和顺序图)的关系
补充知识:灰盒测试、结构化软件测试
1. 掌握简单的灰盒测试(功能图法)的过程、方法,灰盒测试的5
个步骤
2. 在功能层次图的基础上理解并掌握结构化单元测试测试,会设计桩模块和驱动模块
3. 在功能层次图的基础上理解并掌握结构化集成测试测试,三种方法:自顶向下深度优先、自顶向下广度优先、自底向上
补充知识:bugfree
1. bugfree的安装和运行环境
2. bugfree的安装和配置
3. bugfree系统管理员对应的后台管理
(1)用户管理详细内容
(2)用户组管理详细内容
(3)产品管理详细内容
特别注意:若没有给用户所在的用户组分配测试产品,则用户不能登录和使用bugfree。
同时可以为case和bug自行创建自己需要的字段。
4. bugfree中bug的7种解决方案
5. 测试人员对应的工作任务
注意case、result、bug之间的关系及先后顺序
(1)case详细内容
case的指派、抄送等
case执行的4个优先级
test case的4个状态
(2)result详细内容
result中的4个执行结果(case的执行结果)
result中的3个状态
result的指派
(3)bug详细内容
bug的指派、抄送
bug的4个严重程度
bug的4个优先级
bugfree更为详细的内容请参考编号为13的讲课的记录
软件测试学习过程中的理解误区
(下面的描述有正确有错误)
好的测试在于发现了从未发现的错误,好的测试用例在于发现了从未发现的错误的测试用例;成功的测试在于发现了错误,成功的测试用例在于发现了错误的测试用例(对,用来评价测试和测试用例好坏、成功与否的标准)
软件测试独立于软件工程(错,软件测试是软件工程的一部分), 软件测试可以保证软件质量(错,软件测试不能保证软件质量,因为软件测试的目的是找缺陷,及时充分的测试也不能找出软件中的所有缺陷)
软件测试的目的是找出软件中的缺陷bug(对)
软件测试的对象是程序(错,软件开发中的所有结果都需要测试,包括程序、数据和文档)
软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。
(错,软件测试贯穿软件开的全过程)
等价类划分可以在结构化软件和面向对象软件测试中使用(对) 灰盒测试介于黑盒测试和白盒测试之间(对)
发现错误多的模块,残留在模块中的错误也多(错,模块中的缺陷虽然是个未知数,但是是有限的,不是无限的,因此找出的缺陷越多,剩余的就越少。
另外,发现的缺陷越多,说明测试用例设计的好)。
若进行了充分的白盒测试,则不需要黑盒测试和其他测试了(错,软件测试是一个系统的工程,是多种测试方法和技术的联合使用) 功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。
(对)
软件测试只能发现错误,但不能保证测试后的软件没有错误。
(对,因为软件中的缺陷数量是个未知数)
软件就是程序。
(错,软件=程序+数据+文档)
测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。
(错)
软件测试只测试系统中的程序、不测试相关文档(错)
软件测试过程中,测试开始的越早越好(对)
黑盒测试用例设计的依据是软件(程序)结构(错,白盒测试的依据是程序结构,黑盒测试的依据是需求文档)
软件测试过程中,要避免自己测试自己的程序(对)
因果图法可以在结构化软件测试和面向对象软件测试中使用(对,测试技术不区分程序的种类)
软件测试过程中,手工测试测试是最重要的,也是最有效的(对) 软件测试是测试人员的事,与开发人员无关(错)
即使通过充分的测试,也不能找出软件(程序)中的所有缺陷(bug)(对,充分的测试可以让程序中的bug尽可能的少,但不能找出程序中的所有bug)
评价测试用例好坏的依据是能否找到从未找到的缺陷(bug)(对) 软件测试过程中,只要一种测试方法(技术)使用充分,整个软件测试过程就是完备充分的,不需要其他测试方法(技术)(错) 通过设计的测试用例没有找到程序中bug,说明被测程序没有bug (错,好的测试用例在于发现了还未曾发现的错误,成功的测试时发现了至今还没有发现的错误)
软件产品发布后,针对该软件(程序)的测试也就结束了(错,软件测试贯穿软件的生命周期)
执行测试后,若发现软件(程序)的实际输出与预期输出不一致,则说明针对该测试用例软件(程序)存在bug(对)
软件开发过程中,只有源程序编写完了才能开始软件测试(错) 软件测试就是软件调试(错)
黑盒、白盒测试方法可以在结构化软件测试中使用,也可以在面向对象软件测试中使用(对,测试技术的使用不分结构化、面向
对象程序)
灰盒测试中既有白盒测试方法又有黑盒测试方法(对,灰盒测试介于白盒测试和黑盒测试之间)
软件测试过程中,工具测试是最重要的,也是最有效的(错,手工测试是最重要也是最有效的)
Java程序和C程序的单元测试对象是相同的(错,面向对象单元测试的对象是类,结构化单元测试的对象是函数)
软件测试过程中,测试与开发应该同步进行(对)
软件测试过程中,可以自己测试自己的程序(错,应避免自己测试自己的程序,即执行测试和软件开发是不同的群体)
软件测试过程中,只要一种测试方法(技术)使用充分,整个软件测试过程就是完备充分的,不需要其他测试方法(技术)(错) 通过设计的测试用例没有找到程序中bug,说明被测程序没有bug (错,没有找到bug的测试用例不是好的测试用例,也不是好的测试,程序中的bug是未知数,测试用例找没找到bug都不能说明程序中没有bug)
软件测试也就是软件调试(错,测试是测试人员的工作,调试是开发人员的工作)
面向对象集成测试可以使用自顶向下深度优先的测试策略(错) 软件(程序)通过程序员的充分调试,就不需要测试了(错)
面向对象软件测试中,若父类已经测试过,则其子类继承过来的方法不需要再次测试了(错)
只要通过充分的测试,就能找出软件(程序)中的所有bug(错) 任何软件(程序)都可以进行穷举测试(错)
如果一个软件既要做白盒也要做黑盒,那么应该首先设计黑盒的用例(对,因为要按照软件开发流程设计测试)
一段程序中的“路径数”不会超过代码行数(错,两者不具有关联性)
尽早发现软件缺陷可降低软件开发的成本(对,因为错误具有累积和放大效应,因此测试开始的越早越好)
软件测试发现的bug都需要修复(错,有些是无效bug,有些无需或不值得修复)。