软件测试/测试开发|软件测试基础概念

简介: 软件测试/测试开发|软件测试基础概念

image.png

前言

在我们使用各种App访问各个网站时,偶尔会出现软件崩溃,加载缓慢,或者出现报错的情况,而这两年,我们也见过了很多大厂的App出现问题,比如美团外卖,比如阿里云和微信都出现过问题,而要避免出现上述这些大的问题,就需要我们在软件上线之前尽可能的发现软件的问题,这就是我们所说的测试,即对软件进行测试,发现问题找到原因就是我们软件测试的目的。

软件缺陷

在了解什么是软件测试之前,我们先要了解一下软件缺陷,因为软件测试的目的就是找到软件缺陷,找到原因,并协助解决。

软件缺陷:就是我们熟知的“Bug”。即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。

缺陷的表现形式:

  • 软件没有实现产品规格说明书所要求的功能模块;
  • 软件中出现了产品规格说明指明不应该出现的错误;
  • 软件实现了产品规格说明中没有提到的功能需求;
  • 软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;
  • 软件难以理解、不易使用、运行缓慢、用户体验不友好。

产生软件缺陷的原因:

  • 需求不清晰;
  • 系统结构较为复杂;
  • 对程序逻辑路径或者数据范围考虑不全面;
  • 确保设计时间的精准同步;
  • 存在系统性、可靠性的隐患问题;
  • 系统运行环境的复杂;
  • 通信端口较多时影响系统的安全性、适用性;
  • 设计技术系统兼容的问题。

软件测试

定义:软件测试是为了发现错误而执行程序或系统的过程。

软件测试应该遵循以下原则:

  • 全面性:覆盖所有可能情况和用例,包括正常和异常情况。
  • 独立性:测试应该独立于开发,由专门的测试团队或者专业测试人员进行。
  • 早期开始:测试应该从软件开发的早期阶段就开始,早发现缺陷,成本更低。
  • 缺陷集中:当发现缺陷时,应集中在问题的根源而不是表面修复,以避免同类问题再次出现。
  • 尽可能自动化:使用自动化测试工具提高效率、减少人为错误。
  • 持续改进:测试流程和策略应不断改进,以适应不断变化的软件和需求。

软件测试策略

软件测试策略是软件工程过程的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤:

软件测试包含的特征:

  • 测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中;
  • 不同的测试技术适用于不同的时间点;
  • 测试由开发人员及独立的测试组来管理的;
  • 测试和调试是不同的活动,但是调试必须能够适应任何测试策略。

软件测试的分类

软件测试有多种分类方法,我们这里介绍几种常用的分类法:

软件开发阶段划分

  1. 单元测试

指对软件中的最小可测试单元进行检查和验证,单元测试需要从软件的内部结构出发设计测试用例。多个模块可以独立地进行测试。

  1. 集成测试

组装测试/联合测试:将所有模块按照设计要求组装成子系统或者系统进行集成测试。

  1. 系统测试

将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试 和确认测试,系统测试是针对整个产品的测试。

  1. 验收测试

交付测试:确保软件准备就绪。

按测试技术划分

  1. 白盒测试:结构性测试/透明盒测试/逻辑驱动测试/基于代码的测试。
  2. 黑盒测试:功能测试:通过测试每个功能是否都能正常使用。
  3. 灰盒测试:介于白盒测试和黑盒测试之间的一种测试方法:不仅关注输出、输入的正确性,同时也关注程序内部的情况。

被测试软件是否实际运行划分

  1. 静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
  • 对于代码测试:主要测试代码是否符合相应的标准和规范;
  • 对于界面测试:主要测试软件的实际界面与需求中的说明是否相符;
  • 对于文档测试:主要测试用户和需求说明是否符合用户的实际需求。
  1. 动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等性能。

测试类型划分

  1. 功能测试,主要针对产品需求说明书对软件进行测试,验证软件功能是否符合需求,包括对原定功能的检验以及测试软件是否存在冗余功能、遗漏功能。
  2. 界面测试,主要对系统的界面进行测试,测试用户界面是否友好,软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
  3. 性能测试,主要测试系统的性能是否满足用户需求,即在特定的运行条件下验证系统的能力状态。性能测试主要是通过自动化的测试工具模拟正常、峰值、异常负载状况、对系统的各项性能指标进行测试。
  4. 强度测试,迫使系统在异常的资源配置下运行。目的是找出因资源不足或者资源争用而导致的错误。
  5. 压力测试,主要是在超负荷环境中,检验系统是否能够正常运行。
  6. 安全测试,测试系统防止非法入侵的能力。
  7. 兼容性测试,测试软件产品在不同的平台、不同的工具软件或者相同工具软件不同的版本下的兼容性。
  8. 安装测试,主要校验软件是否可以正确安装、安装文件的各项设置是否有效、安装后是否影响整个计算机系统、卸载软件时是否可以卸载干净、卸载软件之后是否影响整个计算机系统。
  9. 文档测试,主要检查内部或外部文档的清晰性和准确性。

软件测试过程模型

  1. V模型

image.png

  1. W模型

image.png

  1. H模型

image.png

  1. X模型

image.png

总结

软件测试是确保软件质量的重要环节,它不仅关乎产品的稳定性和用户体验,也直接影响到企业的声誉和利益。了解基本的软件测试原则、对象和作用,以及缺陷的种类和影响,对于我们学习软件测试非常重要。

相关文章
|
11天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
15天前
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
13天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
21天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
12天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。
|
9天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
38 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
240 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
249 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
48 5