软件测试基础知识总结
一、什么是软件测试?
1979年,myer:软件测试就是为了发现错误而执行程序或系统的过程。
1983年,IEEE:软件测试即使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 二、现代软件测试活动的内容?
制定测试计划、设计测试用例、实施测试、提交缺陷报告、测试总结 三、软件测试的目的?
GrenfordJ.Myers在《The Art of Software Testing》一书中的观点: 1、 测试是程序的执行过程,目的在于发现错误 2、 一个成功的测试用例在于发现至今未发现的错误 3、 一个成功的测试是发现了至今未发现的错误的测试
简单的说,测试的根本目的就是确保最终交给用户的产品符合用户的需求,在产品交给用户之前尽可能多的发现并改正问题。 四、测试一般要达到的目标?
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明;
确保产品满足性能和效率的要求; 确保产品是健壮的和适应用户环境的。 五、软件测试分类? 1、按测试策略分类: a静态测试与动态测试
静态测试
定义:不运行被测程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。 Ps:通过分析或检查源程序的文法、结构、过程、接口等来检验程序的正确性,找出缺陷和可疑之处,例如不匹配的参数、不适当的分支嵌套和循环嵌套、未使用过的变量、空指针的引用等;可采用人工和软件工具进行;静态测试工具的代表:telelogic公司的logiscope软件、PR公司的PRQA软件等。
静态测试特点:
不必动态地运行程序,也不必进行测试用例设计和结果判断等工作; 可由人工进行,充分发挥人得逻辑思维优势; 不需要特别的条件,容易展开。
静态测试要点:
代码审查(code inspection或code review)、代码走查(walkthrough)、桌面检查、技术评审(软件需求分析和设计评审)、静态分析(使用软件工具,包括控制流分析、数据流分析、接口分析和表达式分析)
动态测试
定义:实际运行被测程序,输入相应的测试实例,检查运行结果和预期结果的差异,判断执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
组成:构造测试实例、根据测试实例运行程序、分析程序的输出结果。 主要方法:黑盒测试和白盒测试。 动态测试特点:
实际运行被测试程序,取得程序运行的真实情况、动态情况,并进行分析; 必须生成测试数据来运行程序,测试质量依赖于测试数据;
生成测试数据、分析测试结果工作量大,使开展测试工作费时、费力、费人;
动态测试中涉及多方面工作,人员多、设备多、数据多,要求有较好的管理和工作规程。
b黑盒测试和白盒测试
黑盒测试(black-box testing)又称功能测试、数据驱动测试、基于规格说明书的测试。 定义:测试者把被测程序看成一个黑盒,不考虑程序的内部结构和特性,只需知道该程序输入和输出之间的关系和程序功能,依靠能够反映这一关系和程序功能的需求规格说明书,来确定测试用例和推断测试结果的正确性。
白盒测试(white-box testing)又称结构测试、逻辑驱动测试、基于程序本身的测试。 定义:从程序的内部逻辑结构入手,按照一定的原则设计测试用例,对软件的逻辑路径进行测试,在程序的不同点检查程序的状态,来判定其实际情况是否和预期的状态一致。
C手工测试与自动测试
手工测试 定义:由测试人员来执行测试用例,然后根据实际的结果去和预期的结果相比较并记录测试结果。手工测试时现在多数公司使用的测试形式。
自动测试
定义:引入自动测试工具。
通常以手工测试为主,自动测试为辅。 d冒烟测试(smoke test):在版本投入正式测试前,对其重要的步伐先进行大概的测试,看系统重要的功能是否正确,再进行彻底的测试。 e回归测试(regression test):一段时间以后对以前修复过的缺陷重新进行测试,看该缺陷是否会重新出现。 2、按测试阶段分类
单元测试又称模块测试
定义:针对每一个程序模块进行正确性检验,检查各个程序模块是否正确的实现了规定的功能。如一个窗口、函数、菜单、报表或一个存储过程。
依据是详细设计,应对所有重要的控制路径设计测试用例。 集成测试又称综合测试。 定义:在单元测试的基础上,将已经通过测试的单元模块按照设计要求组装成系统或子系统,再进行的测试。
系统测试 定义:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。
单元测试——集成测试——确认测试(有效性测试、软件配置审查)——系统测试——
3、其他常见测试方法
功能测试(functiong testing)又称正确性测试,软件的功能是否符合规格说明;
性能测试(performance testing),系统是否满足需求说明书中规定的性能,通常使用自动化测试工具;
压力测试(stress testing):检查系统在瞬间峰值负荷下正确执行的能力,通常用测试工具测试;
负载测试(volume testing):用于检查系统在使用大量数据时正确工作的能力; 易用性测试(usability testing):合理性、方便性; 安装测试(installation testing):对软件的全部、部分或升级安装/卸载处理过程的测试; 界面测试:包括窗口测试、下拉式菜单和鼠标操作、数据项测试; 配置测试(configuration testing):主要检查计算机系统内各个设备或各种资源之间的相互连接和功能分配中的错误。包括验证全部配置命令的可操作性,软件配置,硬件配置,利用手动或自动方式惊喜配置状态间的转换;
文档测试(documentation testing):文档的正确性、完备性、可理解性; 兼容性测试(compatibility testing):产品在不同产品之间的兼容性; 安全性测试(security testing):非法侵入的防范能力,已存在的安全性、保密性,有无漏洞;
恢复测试(recovery testing):容错能力,在指定的时间内修正错误并恢复正常,又不伤害系统。
六:软件的开发周期(软件生命周期)和模型?
瀑布模型:
计划——需求分析——设计——编码——测试——运行、维护
严格按照固定顺序,每个阶段结束,经过项目小组审查,决定是否进入下一步。
螺旋模型: 确定目标、可选方案和现在条件——指出并解决风险——评估方案——本阶段开发和测试——计划下一阶段——确定进入下一阶段的方法(该过程重复进行) 螺旋模型是瀑布模型的发展,较常用。 七、软件测试生命周期?
制定测试计划——测试设计和开发——实施软件测试——评审——版本发布 八、什么是软件的缺陷(bug)?
定义:在软件使用过程中所出现的任何问题,或者导致软件不能符合设计要求或满足消费者需求的问题。包括程序错误等等。 九、书写缺陷报告的准则?
保证重现缺陷;分析故障,使用最少步骤重现缺陷;包含所有重现缺陷的必要步骤;方便阅读(编号,分步骤);尽量简单(一个缺陷一个报告);注意语气。
识别和判断缺陷的辅助工具:软件需求说明书、用户手册、联机帮助。 十、bug的生命周期? 有效地记录BUG;
使用BUG模板;
评价BUG优先级和严重性; BUG的生命;
维护BUG数据库。 十一、bug的类型?
软件没有实现产品规格说明所要求的功能模块;
软件中出现了产品规格说明指明不应该出现的错误; 软件实现了产品规格说明没有提到的功能模块;
软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;
软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好。 功能缺陷:规格说明书、能功、测试
系统缺陷:内部接口、硬件、操作系统、软件结构、控制与顺序、资源 加工缺陷:算术、初始化、控制与次序、静态逻辑、其他 数据缺陷:类型、结构、初始值、其他 代码缺陷:程序编写、文档、其他 十二、bug中通常包含的内容????
硬件平台和操作系统 版本
Bug报告优先级 Bug状态
报告人reporter
指定处理人assigned to 概述summary
邮件抄送列表CC list
从属关系(bug “ID” depends on, bug “ID” block) 附加描述additional comments 十三、bug中的优先级的定义?
优先级表示修复缺陷的重要程度和应该何时修复: 1应立即修复的问题
2在产品发布之前必须修复的问题 3如果时间允许应该修复的问题 4可以在发布版本中存在的问题
缺陷的二八定理:一般情况下,在分析、设计、实现阶段的复查和测试工作能够发现和避免80%的缺陷,而系统测试又能找到剩余缺陷的80%,最后的4%的缺陷可能只有在用户大范围、长时间使用后才会暴露出来。 十四、什么是测试用例?
定义:指为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。换句话说,测试用例就是记下要进行什么测试,进行测试的具体步骤,以及测试执行是否正确的标准。
测试用例控制软件测试的执行过程。 十五、测试用例包含的内容?
项目名称:指明本测试用例是用例测试什么软件项目的 功能模块名:指明要测试的内容
测试目的:描述被测试功能的详细的特性及要测试的目标 预置条件:执行测试用例之前所做的操作,如启动程序等 用例编号:唯一编号
相关用例:列出必须先于本测试用例执行的测试用例 用例说明:描述实现用例的步骤
输入数据:描述测试用例所需的输入数据或条件 预期结果:输入后应该输出的结果
测试结果:此项在测试执行时填写,说明测试用例是否通过,如果不通过,就要生成缺陷报告,并注明缺陷的编号,这里的缺陷编号要与缺陷跟踪系统中的编号一致。 十六、设计测试用例的方法?
1等价类划分法
定义:测试人员要对需求规格说明书中的各项需求,尤其是功能需求进行细致分析,然后把程序的输入域划分为若干个部分,从每个部分中选取少数代表性数据作为测试用例。经过这种划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值。
等价类划分法是一种最典型的黑盒测试法。
步骤:在进行等价类划分之前,首先从程序的功能说明中找出各个输入条件,然后为每个输入条件划分两个或更多个等价类。确定了等价类划分后,给出相应的等价类表,再根据等价类表给出测试用例。
要同时考虑有效等价类和无效等价类。 2边界值方法
定义:对输入和输出的边界值进行测试的黑盒测试方法。
确定边界值:选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据,即中的测试最后一个肯定合法的数据和刚刚超过边界的非法数据。
边界值法是等价类划分方法的补充。 3因果图
定义:考虑输入条件之间的联系、相互组合。 步骤:
分析软件需求说明的描述中的原因(即输入条件或输入条件的等价类)、结果(即输出条件),并给每个原因和结果附一个标识符;
分析因果关系,画因果图???
对于不可能出现的组合情况,做出记号表明约束或限制条件; 因果图转化成判定表;
把判定表的每一列作为依据,设计测试用例。 4其他方法
通过测试和失败测试 错误猜测 随机测试
十七、测试用例中优先级的定义?
1小版本确认测试(build verification tests, BVTs):也叫“冒烟测试”,开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。
2高(highs):最常执行以保障功能性是稳定的,目标的行为和能力可以正常的工作,和重要的错误和边界被测试的测试用例的集合。
3中(mediums)是使给出的功能区域或功能变得更详细,检查功能的多数方面包括边界,错误和配置测试的测试用例。
4低(lows):通常最少被执行的测试用例。在项目的生命期间里不是常常被运行,如GUI,错误信息,可用性,压力和性能测试。
十八、什么是测试计划,测试计划中通常包含什么内容?
定义:软件测试计划指在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划,保障有效地实施软件测试。
内容:
测试计划的简介 测试项目说明
需要测试的项目清单 测试手段和策略
项目通过或失败的标准 暂停和重新启动测试的标准 测试的可交付性 测试任务 环境的需求 职责
人员和培训需求 进度表
风险及偶然事故的预测