软件测试题库

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件测试的概念:软件测试是使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验被测软件系统是否满足规定需要,或是弄清楚被测系统的预期结果与实际结果之间的差别。1.软件测试的根本目的是确保软件满足用户需求2.软件测试的目的是要衡量软件产品是否符合预期3.软件测试是一个持续进行的过程4.测试需要动态执行也需要静态检查5.测试不仅需要手动执行也需要自动执行软件的特点:1.软件必须依靠人的智力劳动才能创造出来,软件有较大的随意性。2.软件必须依托于具体的硬件设备才能运行。3.软件不会如硬件一般产生磨损,但会随着其依托的硬件设备的变化,以及用户需求的不断变化而需要进行升级,且到了某个时候,当需求和硬件的变化使得软件不得不改变其具体构架的时候,该软件就必须被淘汰而焕之以全新的软件。因此,应测试升级后的软件对旧版本的兼容性。测试过程1.计划测试2.设计测试3.实施测试4.执行测试测试用例:测试用例是一组测试输入,执行条件和预期结果,目的是要满足一个特定目标,如执行一条特定的程序路径或检验是否符合一个特定的需求的用例。可表示为:测试用例=输入+输出+测试环境输入是测试数据和操作步骤,输出是系统的预期结果。测试环境是系统环境设置,即进行软件测试所必须的工作平台和前提条件测试用例由输入数据、操作步骤、预期执行结果及测试环境所构成。自动化测试通过测试工具、测试脚本等手段,按照测试工程师的预定计划对软件产品进行自动测试,从而验证软件是否满足用户的需求。自动化测试具有良好的可重复性、可操作性和高效率等特点,是提高测试覆盖率和可靠性的重要手段。测试环境包括硬件环境软件环境网络环境历史数据1.硬件环境指进行测试所必须的服务器、客户端、网络连接设备,以及打印机扫描仪等辅助硬件设备所构成的环境,它是软件运行及提供部分功能的必要条件2.软件环境指被测软件运行时的操作系统、数据库、以及其他应用软件构成的环境,它是应用软件运行的基础3.网络环境主要指针对C/SB/S架构的软件4.历史数据指测试用例执行所需初始化的各项数据黑盒测试的方法包括等价类测试、边界值测试、基于决策表的测试方法等可从如下方面来评价某种测试方法的质量1.测试用例对被测对象的覆盖率2.测试用例的冗余3.测试用例的数量4.测试用例对缺陷的定位能力5.测试用例射击的复杂度边界值测试的基本原理:在被测对象的边界及边界附近设计测试用例对于某个输入条件而言,边界的确定可以参照一下原则1.若输入条件规定了取值范围,则以该范围作为边界2.若输入条件规定了值的个数,则以值的个数为边界3.若输入域是有序集合(如有序表、顺序文件等),则选取集合中特定次序的数据作为边界,如第一个或者最后一个数据等针对某个输入条件确定边界点时,可基于如下思路1.首先在需求描述中寻找最大极限边界2.接着在需求描述中寻找其他较为明显的边界3.最后还需要关注在软件内部的边界点正交表的性质:1.每一列中每个输入条件的各个测试数据出现的次数相同。2.任意两列所构成的各有序数对出现的次数相同。输入条件测试初级用例IDABCD123正交表特点:1.无需穷举所有组合情况,只需要使用少量的抽样组合数据构成测试用例,可明显提高效率;2.用正交表抽样出的组合数据分布均用,对组合情况具有最佳的覆盖性;3.能减少手动对组合数据抽样导致的大量测试遗漏。测试用例的设计1.测试数据的选择1.穷举法:在每个边界点的邻域范围内取所有数据构成测试数据的集合优点:所有数值可以测试到缺点:条件为连续数值时没法穷举,邻域测试数据多导致测试负担重2.典型值法:选择边界邻域内的典型值作为测试数据优点:测试数据包含了边界点本身以及最远离该变节点的邻域数据,具有典型性,数据量大大降低2.边界组合方式的选择1.强边界法2.弱边界法3.全边界法3.测试方案等价类划分是最典型、最常用的黑盒测试方法。采用此方法的原因是:由于穷举测试的办法数量太大,以至于无法实际完成,自然促使我们在大量的可能数据中选取其中的一部分作为测试用例。等价类划分就是分步骤地把无限多的测试用例减少到同样有效的小范围的过程。这些子集满足:1.每个子集内所有数据等价,即被测系统对该子集中每个数据的处理方式相同(保证覆盖)2.各个子集之间互不相交,即输入域中的某个数据或某项唯一隶属属于某个子集(保证无冗余)3.所有子集的并集是整个输入域(保证完备)单元测试是指对软件中的最小可测试单元或基本组成单元进行检查和验证建议单元选取原则如下1.对于C语言这类面向过程的开发语言来说,单元常指一个函数或者子过程。在特殊情况下,若有几个函数之间既有强耦合性,导致函数关系非常密切,则应将这几个函数共同作为一个单元来测试2.对于C++、java、C#这类面向对象的开发语言来说,单元一般指一个类。然而,某些基础类可能非常庞大,涉及大量属性和方法,甚至需要几个开发人员来编码完成,若将该类作为一个单元来测试并不合适,此时的测试将上升到集成测试的层面,并分为类内测试和类间测试3.图形化软件中,单元常指一个窗口或一个菜单对被测单元的功能测试属于黑盒测试,对模块代码所做的测试属于白盒测试单元测试的内容1.静态检查尤其是静态代码分析的结果适用于所有可能性的运行情况,而动态测试总是针对特殊取值的测试,仅能测试到程序的特定属性,即保证被测组件在其测试平台上对于特定输入是有效的2.动态测试可以覆盖到程序的各种前置条件和后置条件组合情况,能真实反映程序在特定运行期的运转状况,并能说明执行的常用路径,大大超过同期静态分析所能达到的范围驱动模块是模拟被测单元的上级模块,用于接收测试数据、启动被测模块和输出结果桩模块是模拟被测单元所调用的模块。有时需要使用子模块的接口,才能做少量数据操作,并验证和打印入口处的信息,然后返回。桩模块不包含原模块的所有细节驱动模块的功能要求1.利用已有的测试用例,接收测试的输入数据。实现方式是通过外部调用的方式从数据文件或外部数据源中依次读入数据(包括测试用例的输入和对应的预期输出)2.将测试数据传递给被测单元,从而启动被测单元。实现方式是调用被测单元,同时利用参数将输入数据传给被测单元3.打印和输出测试用例的相关结果,判断测试是通过还是失败。即利用结果的比较加以判断,在允许的误差条件下,一致的结果表明测试通过,否则视为测试失败。执行结果可以直接输出到屏幕,也可以保存到指定的外部文件中。4.通过测试日志文件记录测试过程,便于后续数据保存和分析。日志文件中应能区分被测对象、测试用例的基本信息、测试执行结果是否通过、失败用例的具体错误信息、测试用例通过率等内容桩模块的功能要求1.在特定条件下完成原单元的基本功能。即针对特定的输入可以输出正确的结果。注意:这里所谓的完成功能其实并非真正在模块内部去执行某些复杂的逻辑判断或者计算过程,而是简单的批量“打印”而已,只针对测试用例的一组输入直接返回预期输出2.能够被正确调用。即符合正确的输入条件,在个数、参数类型、参数顺序等方面与被模拟单元完全一致3.有返回值。若有返回值,则应针对特定输入返回与被模拟单元完全一致的结果4.不包含原单元的所有细节。原单元的输入情况可能是无限多的,所谓模拟意味着仅挑选其中典型的输入(如边界),给出已知的输出结果单元测试的过程1.计划阶段:完成单元测试计划,制定单元测试策略2.设计阶段:根据单元测试计划,提取测试需求,完成测试设计3.实施阶段:根据测试用例开发测试数据或者测试脚本,并建立单元测试环境,准备正式开始测试执行4.执行阶段:以手动方式或者利用测试脚本自动执行单元测试用例,记录测试结果5.评估阶段:利用测试用例和缺陷计算相关指标,评估阶段性测试过程和结果,做出决策日构建是自动、完整的构建整个代码库的代码,在构建的同时完成单元测试执行的软件研发工作模式回归测试是贯穿在整个测试各个阶段的一个测试活动,主要是对修改过的软件重新进行测试,以保证验证修改的正确性以及其影响目的在于1.确保缺陷真正得到了修复2.防止在缺陷修复或功能变化过程中造成对软件原有正常部分代码的损坏3.防止由于开发人员自身因素或其他因素导致的版本倒流现象4.防止由于其他因素造成的原正常功能的失效集成测试就是在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装为子系统或系统,并进行测试的过程,目的是确保各个单元模块组合在一起后够按既定意图协作运行并确保增量的行为正确集成测试的评价1.测试用例的规模测试用例规模越小越好2.驱动模块的设计驱动模块的数量越少越好3.桩模块的设计桩模块的数量越少越好4.陷阱的定位单个集成测试涉及接口数量(即模块数量)越少越好单个集成测试用例的设计中,可以每次测试一对模块的接口,也可以一次测试多对模块之间的接口,由此产生主要的3中测试方法成对集成邻居集成基于独立路径的集成成对集成的基本思想是将每个集成测试用例限定在一对调用单元上,每个集成测试用例都是最小的集成单元,仅涉及一对调用的接口。邻居集成的基本思想是将每个集成测试用例限定在某个节点的邻居上,针对某个模块的集成测试用例同时包含该模块及其邻居。邻居的构成有两种方式1.处于中间层的模块2.根节点直接调用叶子节点基于独立路径的集成基本思想是将函数调用图看做程序的控制流图或程序图,每个从根节点到叶子节点的调用形成了路径,每条独立路径即可构成一个集成测试用例集成测试遍历顺序的设计1.大爆炸集成:是将所有经过单元测试的模块一次性组装到被测系统中进行测试,完全不考虑模块之间的依赖性和可能的风险2.自顶向下的集成:是从主控模块(主程序,根节点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。集成中采用宽度优先或深度优先的策略向下推进,对根节点进行集成测试,所有被根节点直接调用的模块均用桩模块来代替。3.自底向上:是从底层模块?(即叶子节点)开始,按照调用图的结构,从下而上,逐层将各模块组装起来。对叶子节点进行集成测试,所有被叶子节点直接调用的模块均用驱动模块来代替4.三明治集成:是将自顶向下和自底向上集成方法集合起来的集成策略系统测试包括1.功能测试(用黑盒):主要针对系统的功能需求展开测试,以确认被测系统是否满足用户的功能使用要求2.性能测试:就是对软件的运行性能指标进行测试,判断系统集成之后在实际的使用环境下能否稳定、可靠的运行3.安全性测试:用于检验系统对非法侵入的防范能力4.兼容性测试:检验被测软件与其他软、硬件相互是否能够正确交互和实现信息共享5.用户界面测试6.可安装性测试:指广义的安装测试,包括安装和卸载语句覆盖:设计测试用例时应保证程序的每一条可执行语句至少执行一次判定覆盖:设计测试用例应保证程序中每个判定节点的取真和取假分支至少执行一次。条件覆盖:设计测试用例时应保证程序中每个复合判定表达式中,每个简单判定条件的取真和取假情况至少执行一次。判定/条件覆盖:测试用例的设计应满足判定节点的取真和取假分支至少执行一次,且每个简单判定条件的取真和取假情况也应至少执行一次,即判定覆盖+条件覆盖。条件组合覆盖:测试用例的设计应满足每个判定节点中,所有简单判定条件的所有可能的取值组合情况应至少执行一次。(通过真值表的方式来得到完全覆盖)修正的判定/条件覆盖:在满足判定/条件覆盖的基础上,每个简单判定条件都应独立的影响到整个判定表达式的取值。该指标的实质是利用简单判定条件的独立影响性来消除测试用例的冗余。1.画出软件测试过程的V模型,并简要说明不同测试阶段与开发过程阶段的对应关系。对应关系:单元测试——编码和详细设计;集成测试——概要设计;系统测试——需求分析;验收测试——用户需求。2.简述单元测试的主要任务。单元测试的主要任务包括:接口测试、局部数据结构测试、独立执行路径测试、错误处理测试、边界条件测试。3.简述采用因果图法设计测试用例的步骤。分析软件规格说明的描述中哪些是因,哪些是果分析软件规格说明描述中的语义,画出因果图在因果图上使用若干标准的符号标明约束条件把因果图转换成判定表为判定表中的每一列设计测试用例4.可以采用哪些方式组织测试用例?按照程序功能块组织按照测试用例的类型组织按照

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功