软件异常测试经验总结

时间:2024.4.20

软件异常测试

从业务需求方面:

特殊业务流程测试:测试软件不按照正规的流程,而是按照可能的但非正规的业务流程运行,是否会生成错误数据,或者造成原有数据的错误,甚至造成系统的瘫痪;

主要是检查系统某些关键业务在极限情况下运行的能力,测试在这种情况下系统的运行、处理数据的情况,是否会造成系统瘫痪;

业务模块的添加、删除测试:根据实际情况,增加或删除业务模块,测试系统的运行状况;

删除或修改系统的重要配置文件测试:测试情况发生时系统是否能够正确的提示,指明系统的错误。在进行相应修补后,系统是否能够正常运行;

修改系统的重要配置信息测试:在软件的配置界面进行重要信息的修改或删除,测试系统是否有相关限制提示,并测试如果修改错误,系统是否能够进行错误提示,引导用户修改,而不至于系统瘫痪;

违规操作:这类测试可以包括,对现有重要业务数据的违规操作、用户越权业务操作等,测试系统是否有相关约束。如果发生类似事件,系统是否有补救措施,而不导致系统的瘫痪。

从操作需求方面:

用户正确的操作是系统正常运行的前提。所以在测试的时候,一定要进行错误操作来测试软件系统的健壮性。在从操作需求方面设计异常测试的测试用例时,需要从用户或者操作者的每一步的操作中进行提炼,而且这些测试用例一定要可操作性强,输入、输出、操作步骤都应该明确。实际上这部分测试用例也是功能测试用例的一部分,只是他不是正常、按照用户需求说明书的操作而已。

这一类的测试案例可以包括:

单引号操作:大多数基于SQL的数据库系统在用户存储包含一个英文单引号的信息时会出现问题,所以每一个可以接受文字数字型的条目都要有包含一个或多个单引号的文本案例。当然,这类问题还应该包括英文双引号、&、<、>等特殊字符。在测试的时候应该注

意其之前的提示和错误操作之后的恢复与补救措施等;

必填项输入测试:测试每一个功能说明书上指出的屏幕上必须输入数据的字段和屏幕上每一个被说明为必须输入的字段,以保证它强制要求你在字段中输入数据。测试其如果没有输入相关数据的提示和后续操作;

特殊字段类型测试:准备每一个功能说明书或界面中规定的特殊数据输入要求(身份证、日期、电话号码、邮编等)的字段的测试案例,输入的数据包括它不应该接受的数据类型,测试软件对错误输入的提示和后续操作;

字段长度测试:准备功能说明书或者界面上要求的字段最大长度的测试案例,输入数据应该大于这个最大长度,测试软件对错误输入的提示和后续操作;

数字类型的边界测试:如果是数字类型,长度往往不能测试出问题,要准备数字类型的边界值测试案例,测试软件对越界错误输入的提示和后续操作;

日期类型测试:日期类型要测试其边界值和日期格式类型的有效性测试。对于日期类型的边界值可能根据数据库不同而不同,比如sql server的最小日期是17xx年x月x日;而对于有效性最常用的就是闰年的有效日期问题,准备这类测试用例来测试软件对于错误输入的提示和后续操作;

web会话测试:对于采用b/s结构的软件,应该注意web会话测试。比如:在空白的浏览器中输入比较敏感的页面的URL,软件是否有相应的提示、强调应该先进行登录才能访问该界面。

从标准需求方面:

在软件界中被广泛使用的质量标准是ISO/IEC 9126,而其中对于异常测试最相关的质量特性就是可靠性(reliability),它的定义是:在指定条件使用时,软件产品维持规定的性能级别的能力。他下面又有四个子特性:成熟性、容错性、易恢复性、可靠性依从性。下面我们就从这四方面来设计异常测试案例。

1.成熟性:软件产品为避免由软件中错误而导致失效的能力

2.容错性:在软件失效或者违反规定的接口的情况下,软件产品维持规定的性能级别的能力

3.易恢复性:在发生故障的情况下,软件重建规定的性能级别并恢复受直接影响的数据的能力

4.可靠性依从性:软件产品依附于同可靠性相关的标准、约定或规定的能力。

实际以上四条是我们进行异常测试的目的和依据,我们之前的测试案例都是在验证这四条特性。根据这些标准,我们可以进一步准备异常测试案例,其中包括:

数据库服务器死机测试:在测试过程中强行关闭软件的数据库服务器或者用其它方式导致数据库死机,测试被测系统的提示是否准确以及其后的相关补救提示或操作;

数据表毁坏测试:非法删除或修改数据库中的表数据或者表,测试被测系统的提示是否准确以及其后的相关补救提示或操作;

网络故障测试:在测试中中断网络或者人工增加网络流量,测试被测系统的提示是否准确以及其后的相关补救提示或操作;

软件服务器故障测试:在测试过程中,强行重启软件的web服务器或者中间件服务器,测试系统的恢复能力;

从经验需求方面:

对于测试人员,经验是十分重要的。测试是有规律可循的,对软件测试、软件相关业务与流程熟悉的测试人员,测试肯定会事半功倍。根据以往的经验,异常测试案例的设计,除了上面提及的各个案例,还有一些补充的被广泛采纳的测试案例。这些案例包括以下几类: 文件丢失测试:强行删除被测软件的一些文件,测试被测系统的提示是否准确以及其后的相关补救提示或操作;

服务器资源测试:通过人为手段,增加软件数据库服务器、web服务器或者中间件服务器等相关服务器的硬件资源,如:cpu、内存、硬盘等的负载,测试被测系统的反应和其后的补救提示或操作;

断电测试:在测试期间,对部分或者所有相关软件测试机器进行断电测试,测试软件的恢复能力。

以上关于异常测试案例的设计与相关的案例,只是一些比较概括的论述,大部分是可以被“复用的”。针对于不同类型、规模的软件,还应该进行进一步的分析,设计出不同的测试案例。这个过程和其他类型测试案例相同,也应该被不断更新与完善。


第二篇:软件测试经验总结


软件生命周期(SDLC)的六个阶段

1、问题的定义及规划

此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

2、需求分析

在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

3、软件设计

此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。

4、程序编码

此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。

5、软件测试

在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

6、运行维护

软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

2、软件生命周期模型

从概念提出的那一刻开始,软件产品就进入了软件生命周期。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。

典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型。

瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来。迭代模型比瀑布模型问题暴露的要早;快速原型法比瀑布模型直观。

3.软件测试概念

广义概念:指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认

狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致

4.软件测试目的

测试的目的就是发现软件中的各种缺陷

测试只能证明软件存在缺陷,不能证明软件不存在缺陷

测试可以使软件中缺陷降低到一定程度,而不是彻底消灭

以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量

5.软件测试原则

Good-enough: 一种权衡投入/产出比的原则

保证测试的覆盖程度,但穷举测试是不可能的

所有的测试都应追溯到用户需求

越早测试越好,测试过程与开发过程应是相结合的

测试的规模由小而大,从单元测试到系统测试

为了尽可能地发现错误,应该由独立的第三方来测试

不能为了便于测试擅自修改程序

既应该测试软件该做什么也应该测试软件不该做什么

6.软件测试的的重点

测试用例的设计

测试用例的设计是整个软件测试工作的核心

测试用例反映对被测对象的质量要求,决定对测试对象的质量评估

测试工作的管理

尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提

测试环境的建立

测试环境应该与实际测试环境一致

7.黑盒测试

什么是黑盒测试

又称功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构

黑盒测试方法

功能划分

等价类划分

边界值分析

因果图

错误推测等

8.什么是白盒测试

白盒测试也称结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行

白盒测试的主要方法

对应于程序的一些主要结构:语句、分支、逻辑路径、变量;白盒测试的主要方法是: 语句覆盖方法

分支覆盖方法

逻辑覆盖方法

什么是动态测试

动态测试需要在开发/测试环境或实际运行环境中运行软件,并使用测试用例去查找软件缺陷;动态测试包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等

10.什么是静态测试

静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估.静态测试包括代码检查、程序结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行

11.手工测试和自动测试

a.手工测试缺点在于测试工作量大,重复多,回归测试难以实现

b.自动测试利用软件测试工具自动实现全部或部分测试工作:管理、设计、执行和报告;节省大量的测试开销,并能够完成一些手工测试无法实现的测试

手工完成测试的全部过程无法保证测试的科学性与严密性:

修改的缺陷越多,回归测试越困难

没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率

反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一

测试花费的时间越长,测试的严格性也就越低

自动测试将测试人员从反复、烦杂的测试执行中解放出来,用更多的时间进行测试设计和结果分析

软件测试不可能完全自动化

不能完成所有手工测试任务

无创造性且灵活性差,不能改进测试的有效性

过程中可能会遇到许多意想不到的问题,特别是当软件不稳定时

测试脚本的维护高

12. 测试流程

单元测试

集成测试

系统测试

用户验收测试

回归测试

确认测试报告

13.单元测试

完成对最小的软件设计单元—模块的验证工作

目标是确保模块被正确地编码

使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误

通常情况下是面向白盒的

对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误

单元测试的内容

接口测试

内部数据结构

全局数据结构

边界

语句覆盖,错误路径

14.集成测试

通过测试发现与模块接口有关的问题

目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构

应当避免一次性的集成(除非软件规模很小),而采用增量集成

集成测试主要内容

API (Application Programming Interface,应用程序编程接口)

API/参数组合

15.系统测试

根据软件需求规范的要求进行系统测试,确认系统满足需求的要求

系统测试人员相当于用户代言人

在需求分析阶段要确定软件的可测性,保证有效完成系统测试工作

系统测试主要内容

所有功能需求得到满足

所有性能需求得到满足

其他需求(例如安全性、容错性、兼容性等)得到满足

16.用户验收/确认测试

Alpha测试

是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的

Beta测试

由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者

17.压力测试VS性能测试

性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。在理想的情况下,

被测软件在这个时候已经是足够稳定了

性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。

概括就是:在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;

压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的叶面3秒钟内响应;概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。

举例说明:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。

18. 主流测试工具的测试流程

========winrunner

1 启动时选择要加载的插件

2 进行一些设置(如录制模式等)

3 识别应用程序的GUI,即创建map(就是学习被测试软件的界面)

4 建立测试脚本(录制及编写)

5 对脚本除错及调试(保证能够运行完)

6 插入各种检查点(图片,文字,控件等)

7 在新版应用程序中执行测试脚本

8 分析结果,回报缺陷

=========quicktestpro========

1 准备录制

打开你要对其进行测试的应用程序,并检查QuickTest中的各项设置是否适合当前的要求。 2 进行录制

打开QuickTest的录制功能,按测试用例中的描述,操作被测试应用程序。

3 编辑测试脚本

通过加入检测点、参数化测试,以及添加分支、循环等控制语句,来增强测试脚本的功能,使将来的回归测试真正能够自动化。

4 调试脚本

调试脚本,检查脚本是否存在错误。

5 在回归测试中运行测试

在对应用程序的回归测试中,通过QuickTest回放对应用程序的操作,检验软件正确性,实现测试的自动化进行。

6 分析结果,报告问题

查看QuickTest记录的运行结果,记录问题,报告测试结果。

====TestDirect============

安装好后,先进入站点管理

1 创建域及工程

2 添加用户

3 编辑licenses及本服务器

4 编辑数据库

--TD

1 选择新建的工程进行定制(列表,用户,组,版本等)

2 在require中增加需求

3 把需求转化为plan

4 在testlab中由计划新建测试具体用例与执行

5 发现bug,在defect中提交bug

(每一部分都可以相对独立地使用)

======loadrunner

1 制定负载测试计划

(分析应用程序, 确定测试目标,计划怎样执行LoadRunner)

2 开发测试脚本

(录制基本的用户脚本,完善测试脚本)

3 创建运行场景

(选择场景类型为Manual Scenario,选择场景类型,理解各种类型,场景的类型转化) 监视场景

5 (MEMORY 相关,PROCESSOR相关,网络吞量以及带宽,磁盘相关,WEB应用程

序 ,IIS5.0,SQL SERVER,NETWORK DELAY等)

6 6 分析测试结果

7 (分析实时监视图表,分析事务的响应时间,分解页面,确定WEBSERVER的问题,其他有

用的功能)

更多相关推荐:
手机软件测试经验总结

手机软件测试总结沙晶晶一个合格的手机软件测试工程师要掌握的东西是很多很多的。在我个人理解中,一个合格的高级手机软件测试工程师应该具有最基本的两点知识:软件测试理论知识和一定的开发技能。1.软件测试理论知识这个不…

软件测试6年工作经验总结

1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱…

软件测试工程师年终工作总结

20xx年终工作总结一:20xx年工作回顾及总结回顾20xx年这一年来的工作,我在公司领导及各位同事的支持和帮助下,严格要求自己,按照公司要求,比较好地完成了本职工作。通过近一年的学习和工作,工作模式上有了新的…

软件测试半年工作汇报总结

年工作总结工作刚满三个月,在这三个月的时间内,我主要做了以下几个方面的工作:1.对软件的熟悉与理解2.跟随开发人员对软件的改进进行了跟踪测试,利用功能组合的方法,对各种工具进行了测试,提交Bug共计405个,已…

软件测试总结报告

1引言1.1编写目的编写该测试总结报告主要有以下几个目的1.通过对测试结果的分析,得到对软件质量的评价2.分析测试的过程,产品,资源,信息,为以后制定测试计划提供参考3.评估测试测试执行和测试计划是否符合4.分…

软件测试总结

1按照开发阶段划分软件测试可分为单元测试集成测试系统测试确认测试和验收测试单元测试单元测试又称模块测试是针对软件设计的最小单位程序模块进行正确性检验的测试工作其目的在于检查每个程序单元能否正确实现详细设计说明中...

软件测试学习总结

姓名:某某学号:20xx0001在大庆浦东软件平台有限公司经过一周的软件测试实训,从对软件测试没有什么经验的我初步掌握了软件测试的方法和技能,收获颇多。我在大学期间的专业是信息与计算科学,原本打算从事网络方面的…

软件测试工程师的工作总结

【摘要】软件质量越来越受到人们的关注,软件测试作为新兴行业有很多不完善的地方。很多从事软件测试工作的同行处于迷茫之中,如何提高,如何解决测试工作中的实际问题,困惑着每一个人。本文总结了一下个人经验,希望对大家有…

软件系统测试总结报告模板

{项目名称}软件测试总结报告编号:{项目名称缩写}版本:X.X变更记录1项目信息2测试结果2.1测试活动总结2.2测试用例覆盖率统计2.4质量分析及调整措施2.4.1偏差原因说明对上述工作量、进度、测试用例覆盖…

软件测试经验总结

软件生命周期(SDLC)的六个阶段1、问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析…

软件测试实习总结

实习总结20xx年x月x日。我怀着对提高并实现自我价值的心态,走进深圳走秀网络科技有限公司的大门,开始了自己大学里兼职实习工作。转眼间。6个月的实习时间就要过去了。回想起这段时间的工作过程,我深深的认识到在走…

实习报告总结(软件测试)

实习目的:通过实习提高自己的对社会的认知能力,同时理论联系实际,让自己迅速适应社会,跟上IT前进的快速步伐。通过理论与实际的结合、学校与社会的沟通,进一步提高学生的思想觉悟、业务水平,尤其是观察、分析和解决问题…

软件测试经验总结(25篇)