软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)

简介: 软件测试项目式学习二(认识软件测试及软件测试分类与案例分析)

前言

本文分为以下内容:

  1. 认识软件缺陷及定义
  2. 软件缺陷的发现与处理
  3. 软件测试定义及常用类型
  4. 软件测试的分类
  5. 软件测试经典测试案例题——纸杯测试

一、认识软件缺陷及定义

bug与Debug:

”bug”术语的发明,因为格蕾丝·霍波(Grace Murray Hopper,是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。)她公布过早期电子计算机的一个故障原因,通常错误地归功于她。这个版本的故事源自下面这段话:“在1946年,当霍波退役后后,她加入哈佛大学的计算机实验室,继续研究马克II型和马克III型计算机的工作。操作员在追踪马克II型的错误时发现继电器中有一只飞蛾,遂有bug术语。这个bug被仔细移除,并被贴在日志本上。这带来的第一个bug,就是我们今日所说的错误(error)或程序中的故障(glitch)。”——百度百科

”Debug“意为程序除错,就是解决程序错误,也叫做调试。

软件缺陷的定义:

软件缺陷通常被称为bug,即计算机软件或程序中存在的运行错误、功能缺陷等。

软件缺陷分为:代码缺陷和功能(界面)缺陷。

IEEE对软件缺陷的定义(IEEE729(1983)):从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;

从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

很多的bug都是在使用过程中才被发下,说明软件缺陷具有隐藏性,但是随着产品开发工作的进行,缺陷会扩散成大缺陷。

二、软件缺陷的发现与处理

如何找缺陷呢?

软件测试营运而出,即输入输出数据,根据具体的测试用例进行测试,预期结果与实际结果进行比较,从而来寻找软件缺陷。

缺陷状态:

1、经典状态:打开(缺陷处于打开状态)——指定(缺陷报告验证后,将缺陷指派给相关的开发人员负责修复缺陷)——解决(开发人员修复缺陷,并在缺陷报告上简要说明解决的措施和步骤)——关闭(测试人员对已返回的缺陷报告进行检查,重新执行相关用例,确认缺陷已经修复)——重新打开(缺陷可能因为未考虑到的情况而再次出现)

2、常见状态:激活(缺陷打开与指定)——解决——关闭

软件缺陷的分类

软件缺陷有很多,根据不同的情况与角度,可以讲缺陷分为不同的种类。

软件缺陷严重程度:

严重(系统无法使用的bug)——很高(系统级错误的bug)——高(功能性错误的bug)——中(严重界面错误,但是不影响主功能,影响小)——低(界面、提示信息等其他文字类错误)

软件缺陷的优先级:

立即解决——高优先级——正常排队——低优先级

软件缺陷的测试种类:

界面类、功能类、性能类、安全性类、兼容性类。

软件缺陷的不同阶段:

需求分析阶段缺陷——架构阶段缺陷——设计阶段缺陷——编程阶段缺陷——测试阶段缺陷

软件缺陷不同标准划分一览图:

软件缺陷处理方式:

1、已修复:开发人员对修改了相关缺陷并在缺陷报告中说明了修复步骤,等待测试人员的验证,确保缺陷修复

2、暂缓:缺陷确定存在,因技术或时间原因暂时延缓修复

3、外部原因:因外部技术原因,开发人员无法修复缺陷

4、不修复:缺陷被用户发现的概率可以忽略不记,不值得耗费资源(时间、人力等)来修复。

5、重复缺陷:其他测试人员已提交的缺陷。

6、不可重现:根据缺陷报告无法触发该缺陷,也没有其他证据来证实该缺陷的存在。

7、符合设计:程序运行的情况是设计要求的预期情况。

软件缺陷处理流程图:

缺陷报告文档(以Excel表的形式提交)

下面以图书馆管理系统缺陷报告为例:

三、软件测试定义及常用类型

软件测试的定义

软件测试是由一个程序的行为在有限测试用例集合上,针对期望的行为的动态验证组成,测试用例是从通常的无限执行域中适当选取的。

常用的软件测试类型 

编写缺陷时需要注意:

  1. 每个缺陷有且只有一个编号,时缺陷的唯一标识
  2. 缺陷需要有步骤重现。
  3. 一个缺陷生成一份报告,报告要完整。

四、软件测试的分类

按照不同的测试角度有不同的测试方法、技术与名称。下面笔者将一一分类说明。

1、按照测试阶段分类

单元测试——冒烟测试——集成测试——系统测试——验收测试——回归测试——Alpha测试——Beta测试

具体说明如下图:

2、按照测试技术分类

黑盒测试

对应功能测试或数据驱动测试:适用于系统测试,基于需求和功能性的测试,在已知产品所应具有的功能的基础上进行检测每个功能是否能正常使用。

白盒测试

对应结构测试或逻辑驱动测试,适用于单元测试,基于覆盖全部代码、分支、路径、条件的测试。

灰盒测试

介于白盒和黑盒之间的测试,关注输入输出的正确性,同时也关注内部的表现

功能测试

测试软件的功能是否满足客户的需求,包括准确性、易用性、适合性、互操作性等

性能测试

关注对软件的时间资源、空间资源的占用要求上,也是最原始的性能需求。包括执行效率、资源占用、稳定性、可靠性、安全性,兼容性、可扩展性等。

3、按照被测软件的角度划分

静态测试:不利于计算机运行待测程序而应用其他手段实现测试目的,如代码审核,主要是通过人工查找的方法进行。

动态测试:通过运行被测试软件来达到目的,借助开发软件帮助提示软件存在的问题。

4、按照测试方式划分

人工测试:通过测试人员人为的设计开发测试数据,并逐步带入软件中完成测试工作。

自动化测试:利用专门的测试软件或者借助脚本等模拟操作过程,完成测试任务。

5、按照测试类型分类

界面类测试:验证软件界面是否符合客户需求,包括界面布局是否美观、按钮是否齐全等。

安全性测试:测试软件在没有授权的内部或外部用户的攻击或恶意破坏时如何进行处理,是否能保证软件与数据的安全。

文档测试:以需求分析、软件设计、用户手册、安装手册为主,主要验证文档说明与实际软件之间是否存在差异。

五、软件测试经典测试案例题——纸杯测试

“纸杯测试”是微软公司给软件测试者面试的经典测试案例,用于考察面试者对软件测试的理解与掌握程度。

测试项目:纸杯。

需求测试:查看纸杯说明书是否完整。

界面测试:观察纸杯外观,测试表面是否光滑、手感是否舒适。

功能测试:用纸杯装水,观察是否漏水。安全测试:纸杯是否有毒或细菌。

可靠性测试:从不同高度摔下来,观察纸杯的损坏程度。

易用性测试:用纸杯盛放开水是否烫手,纸杯是否易滑、是否方便饮用。

兼容性测试:用纸杯分别盛放水、酒精、饮料、汽油等,观察是否有渗漏现象。

可移植性测试:将纸杯放在温度、湿度等不同的环境中,查看纸杯是否还能正常使用。

可维护性:将纸杯揉捏变形,看其是否能恢复。

压力测试:用一根针扎在纸杯上不断增加力量,记录多大压强时针能穿透纸杯。

疲劳测试:用纸杯分别盛放水、汽油放置24小时,观察其渗漏情况(时间和程度)。

跌落测试:纸杯(加包装)从高处落下,查看可造成破损的高度。

震动测试:纸杯(加包装)六面震动,评估它是否能应对恶劣的公路/铁路/航空运输等。

测试数据:编写具体测试数据,其中可能会用到场景法、等价类划分法、边界值分析法等测试方法。

期望输出:期望输出需要查阅国际标准及用户的使用需求。

用户文档:使用手册是否对纸杯的用法、使用条件、限制条件等有详细描述。

说明书测试:查看纸杯说明书的正确性、准确性及完整性。

总结

软件测试,是软件生命周期的重要一环,软件缺陷尽早发现,可以使损失尽量降低。纸杯测试案例,使我们对软件测试有了整体的感知以及对测试流程有了大概的了解。下一篇会对软件测试原则与基本流程进行了解并介绍常见的软件测试模型以及黑盒测试的具体测试用例。

目录
相关文章
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
672 11
|
机器学习/深度学习 人工智能 自然语言处理
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
MarS 是微软亚洲研究院推出的金融市场模拟预测引擎,基于生成型基础模型 LMM,支持无风险环境下的交易策略测试、风险管理和市场分析。
861 8
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
339 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
372 10
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1739 23
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
2413 24
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
1345 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1154 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡