【概要】软件测试

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972

   个人介绍: 研一|统计学|干货分享
         擅长Python、Matlab、R等主流编程软件
         累计十余项国家级比赛奖项,参与研究经费10w、40w级横向

文章目录

  • 1 软件测试概述
  • 2 软件测试对象
  • 3 软件测试的目的
  • 4 软件测试原则
  • 4 软件测试误区
  • 6 软件测试分类
    • 6.1 按开发阶段
    • 6.2 是否运行
    • 6.3 是否查看源代码
    • 6.4 其它
  • 7 软件测试基本流程

1 软件测试概述

  软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。其目的是以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正这些错误和缺陷来提高软件质量,从而避免软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

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

2 软件测试对象

   源程序/目标代码

  ② 各开发阶段的文档(需求规格说明、概要设计说明、详细设计说明及其它相关文档)

3 软件测试的目的

从用户角度看的目的:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。

从开发者角度看的目的:表明软件产品不存在错误,验证软件实现了所有用户的要求。

从测试人员角度看的目的:发现错误,预测错误,提供软件可靠性错误,对软件做出评价。

  ① 帮助开发人员、测试工程师发现问题、分析问题。

  ② 减少软件的缺陷数目或者降低软件缺陷的密度。

  ③ 提高软件的可靠性

  ④ 评估软件的性能指标。

  ⑤ 增加用户对软件的信心。

  ⑥ 测试的最终目的是尽快尽早地发现在软件中的缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

4 软件测试原则

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

  ② 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。

  ③ 由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求和设计阶段就应开始测试工作,编写相应的测试文档。

  ④ 完全测试是不可能的,测试需要终止。

  ⑤ 想要进行完全的测试,在有限的时间和资源条件下,找出所有的软件缺陷和错误 使软件趋于完美是不可能的主要有三个原因: ①输入量太大; ③输出结果太多;③路径组合太多。

  ⑥ 测试无法显示软件潜在的缺陷:进行测试是可以查找并报告发现的软件缺陷和错误,但不能保证软件缺陷和错误全部找到。

  ⑦ 充分注意集试中群集现象(二八定理):经验表明,在所测试程序段中,若发现的错误数目多,则残存的错误数目也较多。缺陷的二八定理指的是,一般情况下,80%软件缺陷出现在20%的功能区域,在测试过程中,投入主要的人力和精力重点测试这20%的功能区域。

  ⑧ 开发人员应避免检查自己的程序:基于心理因素,揭露自己程序中的问题总不是一件愉快的事,不愿否认自己的工作;由于思维定势,人们难于发现自己的错误。因此为达到测试的目的,应由客观、公正、严格的独立的测试部门或独立的第三方测试机构进行测试。

  ⑨ 尽量避免测试的随意性:应从工程的角度理解测试,它是有组织、有计划、有步骤的活动。

4 软件测试误区

  误区一:如果发布出去的软件有质量问题,都是软件测试人员的错。

  误区二:软件测试技术要求不高,至少比编程容易多了。

  误区三:有时间就多测试一些,来不及就少测试一些。

  误区四:软件测试是测试人员的事,与开发人员无关。

  误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段。

6 软件测试分类

6.1 按开发阶段

单元测试

  单元测试主要用白盒测试,先静态地检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等。

  单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。

集成测试

  集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。

系统测试

  指将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。

验收测试

  验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试。

α测试:指的是指的是由用户,测试人员、开发人员等共同参与的内部测试。

β测试:指的是内测后的公测,即完全交给最终用户测试

验收测试的重要性:验收签字,收钱。

6.2 是否运行

静态测试

  指不实际运行被测软件,而只是静态地检查程序代码、界面和文档中可能存在的错误的过程。

动态测试

  指实际运行被测程序,输入相应的测试数据,检查实际输出结果与预期结果是否相符。(动态测试方法为结构和正确性测试;动态测试工具Robot(Robot Framework是用于验收测试和验收测试驱动开发(ATDD)的通用开源测试自动化框架。它具有易于使用的表格测试数据语法,并使用关键字驱动的测试方法。它的测试功能可以通过用Python或Java实现的测试库进行扩展,用户可以使用与创建测试用例相同的语法从现有的关键字创建新的更高级别的关键字;Robot Framework框架是跨平台的,独立于操作系统和应用程序。核心框架使用Python实现,支持Python 2和Python 3,并且还可以在Jython(JVM), IronPython(.NET)和PyPy上运行。该框架有丰富的测试库生态,由各种通用测试库(包括内置库、扩展库和自定义库)和工具组成,这些库被作为单独的项目开发;Robot Framework 是一个跨平台的通用的,与应用程序和技术无关的测试框架。它有一个高度模块化的架构)、QTP(一种自动化软件测试工具,侧重于软件的功能测试和回归测试,属功能测试工具在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试,用于功能测试和回归测试。使用QTP要求测试人员在测试前考虑好应用程序测试的内容,步骤,输入数据和期望的输出数据等)等)。

6.3 是否查看源代码

黑盒测试

  指的是把被测的软件看做一个黑盒子,我们不关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出。

白盒测试

  指的是把盒子打来,去研究里面的源代码和程序结构。

  软件公司中,往往采用黑盒测试&白盒测试相结合的方式。(静态黑盒测试:看文档,看页面等;静态白盒测试:看源代码等;动态黑盒测试:使用软件等;动态白盒测试:运行源代码等)。

灰盒测试

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

6.4 其它

功能测试

  是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

  逻辑功能测试(function testing)。

  界面测试(UI testing)。

  易用性测试(usability testing)。

  安装测试(installation testing)。

  兼容性测试(compatibility testing)。

性能测试

  是软件测试的高端领域,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师。

1.常用性能指标

  响应时间(时间性能):是指系统对用户请求作出响应所需要的时间。

  吞吐量:单位时间内系统能够完成的工作量,衡量服务器的处理能力。

  并发用户数:指同一时间请求和访问的用户数量。

  TPS:指系统每秒钟能够处理的事务和交易数量。

  点击率:指用户每秒向web服务器提交的http请求数。

  资源利用率(空间性能):指软件对系统资源的使用情况,包括CPU利用率、内存利用率、磁盘利用率等。

2.性能测试内容:

  并发测试:模拟用户并发访问,测试多用户并发访问同一应用、同一模块或者数据记录是否存在死锁或者其他问题。

  配置测试:调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到各项资源的最优分配原则。

  容量测试:在一定的软硬件及网络环境条件下,软件系统所能支持的最大用户量,最大储存量等。

  可靠性测试:给系统加载一定的业务压力,使其运行一段时间,测试在这种条件下,能够稳定运行。

  负载测试:考察软件系统在既定负载下的性能表现。(1)负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现;(2)负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等。

  压力测试:考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。注意,这个极端条件并不一定是用户的性能需求,可能要远远高于用户的性能需求。可以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我们要考察的是系统处理问题的方式。比如说,我们期待一个系统在面临压力的情况下能够保持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行。

回归测试

  指对软件的新版本测试时,重复执行上一个版本测试时的用例。

冒烟测试

  是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性。

随机测试

  是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

7 软件测试基本流程

  1.需求分析阶段:阅读需求,理解需求,分析需求点,参与需求评审会议。

  2.测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围,进度安排,人力物力分配,整体测试策略的制定。

  3.编写测试用例:适当的了解设计,搭建测试用例框架,根据需求和设计编写测试用例。

  4.测试执行阶段:搭建环境准备数据,执行冒烟测试(预测试),然后进入正式测试(系统测试、回归测试、交叉测试、自由测试),bug管理直到测试结束。

  5.输出测试报告:输出测试报告,确认是否可以上线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/723072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker网络配置

目录 一.Docker网络模式 1.1bridge模式(默认模式) 1.2host模式(仅主机模式) 1.3初识网络模式 1.4查看桥接模式的特点 1.5查看仅主机模式的特点 二.Docker桥接模式 三.host模式 四.自定义网络 一.Docker网络模式 Docker在创建容器时有四种网络模式&am…

结合大象机器人六轴协作机械臂myCobot 280 ,解决特定的自动化任务和挑战!(下)

Limo Pro 小车建图导航 引言 前景提要:我们在上文介绍了使用LIMO cobot 实现一个能够执行复杂任务的复合机器人系统的应用场景的项目,从以下三个方面:概念设计、系统架构以及关键组件。 本文主要深入项目内核的主要部分,同样也主要…

四桥臂三相逆变器动态电压恢复器(DVR)MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) 简介 四桥臂三相逆变器 电路 的一般形式如图 1,为 便于分析 ,将其等效成图所示的电路 。以直流母线电压Ud的 1/2处为参考点 ,逆变器三相和零线相 输 出可等效成…

[数据结构]队列

1.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头 2…

基于 HBase Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数(可选) 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新…

mac电脑版MATLAB R2023b for Mac中文激活版

MATLAB R2023b for Mac:科学计算的终极工具 软件下载:MATLAB R2023b for Mac中文激活版下载 🔬 探索科学,无限可能 MATLAB R2023b for Mac,助您深入挖掘科学计算的奥秘。从数据分析、算法设计到可视化展示,…

基于GitBucket的Hook构建ES检索PDF等文档全栈方案

背景 之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo,预期建设方案是使用触发器类型从公共的文档源拉取最新的文件,然后调用Java将文件转Base64后入ES建索引,再提供封装接口给前端做查询之用。 由于全部内容过长&#xff…

YOLO算法改进Backbone系列之:RepViT

摘要:近年来,与轻量级卷积神经网络(cnn)相比,轻量级视觉变压器(ViTs)在资源受限的移动设备上表现出了更高的性能和更低的延迟。这种改进通常归功于多头自注意模块,它使模型能够学习全局表示。然而,轻量级vit和轻量级cn…

《操作系统真相还原》读书笔记四:安装nasm

下载链接:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/ 下载-解压-安装 tar zxvf nasm-2.13.03.tar.gz ./configure --prefix/home/truthos/nasm/toolchain/make && makeinstall执行make install export PATH/home/truthos/nasm/toolchain/bin:…

微信小程序云开发教程——墨刀原型工具入门(编辑页面)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

html标签之表格标签,资料分享

二.准备工作 与中国大部分在校生一样,从不考虑多多参加社会活动为自己铺路,直到找工作时才发现自己一无所有。 是的,一无所有。对于求职来说,如果不找对口工作,那么你的专业知识已经无用武之地。能证明你能力的实践活…

Windows上websocket客户端连接定时存储消息到文件并加载文件定时发送服务端工具实现

场景 在业务开发中,需要对接三方websocket协议数据或者连接并存储线上websocket协议数据,需要使用websocket客户端 连接线上的websocket服务端获取并存储数据,然后将数据存储成文件格式可移植,并将数据复制 到本地,…

MATLAB知识点:while循环的注意事项

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 在使用while循…

docker 安装rabbitmq并配置hyperf使用

这里我想完成的是 制作消息(多个协程制造)——》推送到rabbitmq——》订阅消息队列——》消费消息(ws协程客户端【一次消费多条】/ws前端) 利用 WebSocket 协议让客户端和服务器端保持有状态的长链接,保存链接上来的客…

阿里云2核4G服务器支持多少人同时在线?

2核4G服务器支持多少人在线?阿里云服务器网账号下的2核4G服务器支持20人同时在线访问,然而应用不同、类型不同、程序效率不同实际并发数也不同,2核4G服务器的在线访问人数取决于多个变量因素: 2核4G:2核CPU和4G内存对…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记02_大数据

1. 大数据分析 1.1. 随着“大数据军备竞赛”与定价算法的广泛应用,线上购物平台与实体商铺的界限也变得越来越模糊 1.2. 在沃尔玛疯狂扩张的时代,它给地区性商业带来的伤害不亚于一场地震 1.2.1. 当地的小型商铺往往…

浏览器工作原理与Javascript高级(异步)

总体介绍 浏览器运行是多进程的,包括主进程、渲染进行、网络进程和GPU进程等等 解析HTML时(渲染进程)用到两大引擎,一个是渲染引擎(用于渲染页面)、一个是JS引擎用于解析JS代码。又JS引擎运行是单线程的,所以渲染和 …

Dubbo基础入门一

1、什么是Dubbo3 Apache Dubbo 是一款易用、高性能的 WEB 和 RPC 框架,同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践。 “Dubbo3 已在阿里巴巴内部微服务集群全面落地,成功取代运行多年的 HSF 框架。” 2、…

5G 网络切片VLAN ID配置错误导致业务不可用

【摘要】随着电联5G共建共享工作的开展,无法及时有效观测到单逻辑站点的相关指标,导致单运营商用户业务出现异常。本案例中着重对单运营商用户无法使用网络进行相关参数排查,从KPI性能指标结合故障告警发生时间,从而分析由于网络切…

稀碎从零算法笔记Day6-LeetCode:长度最小的子数组

前言:做JD的网安笔试题,结果查找子串(单词)这个操作不会。痛定思痛,决定学习滑动数组 题型:数组、双指针、滑动窗口 链接:209. 长度最小的子数组 - 力扣(LeetCode) 来…