软件测试及其分类

本文介绍了软件的概念,软件测试的目的和工程师的工作内容,包括单元测试、集成测试、系统测试和验收测试的阶段。同时,探讨了常见的软件生命周期模型,如大爆炸模型、边做边改模型、瀑布模型和螺旋模型。文章还涵盖了软件bug的定义和软件测试的多种分类,如黑盒测试、白盒测试、自动化测试等,并讨论了安全测试、性能测试和兼容性测试等专项测试领域。
摘要由CSDN通过智能技术生成

一、什么是软件?

软件是计算机系统中的程序和相关文件或文档的总称。

二、什么是软件测试?

使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

三、软件测试工程师的工作内容

1.寻找软件中的bug,并且越早发现越好

2.确认bug的可重复性以及bug产生的步骤

3.确认bug是否被解决

4.测试方法,测试计划,测试平台,测试代码,测试用例,测试文档,测试报告的确定、编写和执行。

四、常见的软件生命周期模型

1.大爆炸模型:优点:简单,不用学习就会。缺点:产品质量无法保障,尽量避免使用

2.边做边改模型:优点:快速得到可运行的版本。缺点:计划有些缺乏,导致版本前后变化较大

3.瀑布模型:优点:计划周密,专业,按部就班实现。缺点:相对难于做到快速开发,以抢占市场,可选择的模型之一

4.螺旋模型:优点:计划变化同时考虑。

五、软件开发的几个阶段

1.项目启动阶段:了解客户需求、配置相关资源

2.项目设计阶段:明确客户需求,确立软件开发、测试的方法

3.项目执行阶段:开发与测试阶段

4.项目竣工阶段:软件的上市、后期维护与技术支持

六、软件bug的五个要素

1.软件没有实现说明书中所列出的功能

2.软件出现了说明书中提到不应该出现的事情

3.软件没有实现说明书中没有提到但应该实现的事情

4.软件非常难于学习、使用,运转速度很慢,用户认为无法达到预期结果。

七、软件测试的分类

1、按开发阶段:单元测试、集成测试、系统测试、验收测试 2、按测试实施组织:α、β、第三方 3、按测试执行方式:静态测试、动态测试 4、按是否查看代码:黑盒测试、白盒测试、灰盒测试 5、按是否手工执行划分:手工测试、自动化测试 6、按测试对象划分:性能测试、安全测试、兼容性测试、文档测试、易用性测试(用户体验测试)、业务测试、界面测试、安装测试 7、按测试地域划分:本地化测试、国际化测试

一、按开发阶段分类:

单元测试

单元测试是对软件组成进行的测试。其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试。 测试阶段:编码后或者编码前 测试对象:最小模块 测试人员:白盒测试工程师或开发人员 测试依据:代码和注释+设计详细文档 测试方法:白盒测试 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

集成测试

集成测试(也成联合测试,联调)、组装测试,将程序模块采用适当的集成策略组装起来, 测试阶段:一般的单元测试之后进行 测试对象:模块间的接口 测试人员:白盒测试工程师或开发工程师 测试依据:单元测试模块+概要设计文档 测试方法:黑盒测试和白盒测试相互结合 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能的正确性、全局数据结构、单模块缺陷对系统的影响。

系统测试

将软件系统看成一个系统测试。包括对功能、性能以及软件所运行的硬软件环境进行测试。时间大部分在系统测试执行阶段,包括了回归测试和冒烟测试 测试阶段:集成测试之后 测试对象:整个系统(软、硬件) 测试人员:黑盒测试工程师 测试依据:需求规格说明文档 测试方法:黑盒测试 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全等

ps:

回归测试(Regression Tesing):回归测试指的就是你修改了旧的代码之后。重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,自动回归测试将大幅降低系统测试、维护升级等阶段的成本。在整个软件的过程中占有很大的工作量比重,软件开发的各个阶段都会运行多次回归测试。

冒烟测试(Regression Tesing):对一个硬件或硬件组件进行更改或修复后,直接给设备加电,如果没有冒烟就认为该组件通过了测试,冒烟测试的对象都是每一个新编译的需要正式测试的软件版本,目的是确认软件的基本功能正常,可以进行后续的测试工作,冒烟测试的执行者是版本编译人员。冒烟测试一般是开发人员开发完毕之后送给测试人员进行测试时,测试人员要先进行冒烟,用以保证基本功能是正确的,不会阻碍后续的测试。

验收测试

验收测试是部署软件之前的最后一个测试操作,它是技术测试室的最后一个阶段,也叫做交付测试,验收测试的目的是保证软件的准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件的购买者展示该软件的原始的需求。

二、按测试实施组织分类

α测试

主要是由一个用户在开发环境进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。 主要的目的是:评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持);

β测试

β测试:由软件的最终的用户们在一个或者多个客户场所进行的测试。

α测试和β测试的区别:

测试的场所是不同的:α测试是把用户请到开发方的场所进行的测试,β测试值的是就是在一个用户或者多个用户场所所进行的测试。 α测试的测试环境是由开发方进行控制的,用户的数量是相对比较少的,时间也是相对比较集中的。β测试的测试场所也不是由开发方进行控制的,相对来说用户的数量是相对比较多的,但是时间也不是很集中的。 α测试是先与β测试的,通用的软件产品时需要大规模的β测试,猜测是的周期是相对是比较长的。

第三方测试

介于开发方和用户之间的组织测试。

三、按是否运行进行划分

静态测试:

静态测试值的是不运行程序本身,仅通过分析和检查源程序的语法、结构、过程、接口来检查程序的正确性。对需求规格说明书、软件设计说明书、流程图分析、符号执行来进行找错。 检查项:代码的风格和规则审核;程序设计和结构审核;业务逻辑的审核、走查、审查与技术复审手册 静态质量:软件的质量主要有以下六个方面来衡量:功能性、可靠性、可移植性、可用性、有效性、可维护性。 代码静态分析和文档测试都是属于静态测试

动态测试

动态测试指的就是运行被测的程序。检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性的等性能,这种方法主要是由三部分进行组成的:测试用例、执行程序、分析程序运行输出的结果。 大多数的软件测试就是属于动态测试的

四、按是否进行手工

手工测试:

是由人一个一个的输入测试用例,然后观察结果、和机器测试相对应,属于比较原始,大事需要一个一个步骤进行测试。

  • 优点:自动化无法替代探索性测试、发散思维类无既定结果的测试。

  • 缺点:执行的效率比较慢。量大易错。

自动化测试

在预设条件下运行系统或应用程序,评估运行结果、预先条件应该包括正常的条件和异常条件。简单的说自动化测试是把人为驱动的测试行为转化为机器执行的一种过程。 自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化 通常我们所说的自动化测试就是指的是功能自动化测试 自动化测试按照测试的对象来分:分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高。

自动化测试的步骤:

1、完成功能测试,版本基本稳定 2、根据项目特性、选择合适的项目自动化工具,并搭建环境 3、提取手工测试的测试用例转化为自动化测试的用例 4、通过工具,代码实现自动化的构造输入,自动检测输出结果是否符合预期 5、生成自动化的构造输入,自动的检测世界古是否符合预期 6、生成自动测试报告 7、持续改进、脚本优化

五、按是否查看代码

黑盒测试(Black-box-Testing)

黑盒测试也称为功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,指关心软件的输入数据和输出数据。

白盒测试(White-box-Testing)

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒值的是打开的盒子,去研究里面的源代码和程序结果。 接口测试也是一种白盒测试。

灰盒测试(White-box-Testing)

灰盒测试:是介于白盒测试与黑盒测试之间的一种测试,主要用于集成测试阶段。不仅观念朱输入输出的正确性。同时也关注程序内部的情况。

六、按照地域进行划分

国际化测试(White-box-Testing)

软件的国际化和软件的本地化是开发面向全球不同地区用户使用的软件系统的两个过程。而本地化测试和国际化测试则是这类软件产品进行测试。由于软件的全球普及。还有软外包行业的兴起,软件的本地化和软件的国际化俨然称为了一种软件测试的专门领域。 本地化和国际化的软件测试的一些测试要点。 1、本地化后的软件在外观上与原来版本存在着一些差异,外观是否整齐、不定样。 2、是否对界面元素进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示、日志等)。 3、在不同分辨率界面下是否显示的是正常的。 4、是否存在不同的字体的大小,字体设置的是否恰当。 5、日期、数字格式、货币等是否能够适应不同的国家的文化习俗。例如年、月、日,而英文是月日年。 6、排序的方式是否考虑到了不同语言的特点。 7、在不同个的国家采用的是不同的度量单位,软件是否能够自适应和转换。 8、软件是否能够在不同类型的硬件上正常运行。正文翻译是否正确,恰当是否有语法的错误。 9、软件是否能够适应不同的操作系统的平台。 10、联机帮助和文档是否已经进行翻译,翻译后链接是否正常。正文翻译是否正确,恰当是否有语法的错误。

本地化测试

之前所有我们将的都是基于本地化进行测试的。

七、按测试对象划分

业务测试

是测试人员将系统的各个模块串接起来运行、模拟真是用户实际的工作流程,满足永续需求定义的功能进行测试的过程。

界面测试

界面测试也成为UI测试。测试用户界面的功能模块的布局是否合理,整体风格是否一致、各个控件的放置位置是否符合客户的使用习惯,还要测试操作界面操作便捷性、导航简单易懂性、页面元素的可用性,页面元素的可用性、界面中文字是否正确,命名是否统一,页面是否美观、文字、图片组合是否完美。

容错性测试

容错性测试:检查软件在异常条件下自身是否具有防护性的措施或密谋中灾难性恢复的手段 划分为容错性测试和非容错性的测试。

文档测试

文档测试的关注点 文档的术语 文档的正确性 文档的完整性 文档的一致性 文档的易用性

兼容性测试

兼容线性主要指的就是软件之间很好的运作,会不会有影响、软件和硬件之间是否能够发挥很好的效率工作,会不会影响导致系统的奔溃

平台测试
浏览器测试
易用性测试

易用性指的即使我们对于平时所使用的东西是否放在了合适的位置在我们是用的时候能够进行很好的找到。满足人体天生的人体工程学的范畴。

安装测试

测试程序的安装、卸载 典型的就是测试APP的测试的安装和卸载

安全测试

安全测试是一个相当于来说独立的领域,需更多的专业知识,例如Web的安全测试、需要熟悉各种网络协议,Tcp/Http,防火墙、CDN、熟悉各种操作系统的漏洞。 熟悉路由器等。从软件来说熟悉各种的攻击手段,例如sql注入、Xss等。

性能测试

检查系统是否满足需求规格说明书中规定的性能 通常表现在以下的几个方面

  • 对资源的利用(如内存、处理机周期等)进行精确地度量。

  • 对执行间隔、日志文件(如中断、报错)

  • 响应时间

  • 吞吐量(TPS)

  • 辅助存储区(例如缓冲区、工作区的大小) -处理精度等进行检测

    内存泄漏测试

造成内存泄漏的原因

内存分配完了忘记进行了回收 程序写法有问题 某些API函数的使用不正确,造成内存泄漏 没有及时的进行释放

什么是自动化测试?

自动化测试是软件测试活动中一个重要的分支和组成部分,即利用工具或脚本达到测试目的,没有人工或者极少人工参与的软件测试活动称为自动化测试.

自动化测试的分类:

(1)从软件开发周期的角度分类: 单元自动化测试:自动化的完成对代码中的类和方法进行测试,主要关注代码实现细节及业务逻辑等方面。 接口自动化测试:测试系统组件间接口的请求和返回,接口测试稳定性高,更适合开展自动化。 UI自动化测试:对图形化界面进行流程和功能等方面进行测试。 (2)从测试目的的角度分类: 连接和其他比较稳定而不经常发生变化的元素 性能自动化测试:依托自动化平台自动的执行性能测试、收集测试结果,并分析测试结果的一种接近无人值守的性能测试,具有以下特性: 1、对脚本创建和提供类库和其他模块支撑

2、可以设定自动化任务(比如每天根据特定的场景执行一轮性能测试)

3、自动收集测试结果并存储

4、事中监控(比如场景执行过程中的异常错误自动预警邮件功能)

5、成熟的平台可以进行自动分析功能(比如哪些事物有问题、哪些资源消耗异常等)

6、安全自动化测试

自动测试工具分类

UI自动化

Selenium Appium Robot Framework Airtest Cypress ...

接口自动化

Jemeter Postman python+Requests SoapUI HttpClient

单元测试工具

JUnit TestNG unittest pytest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值