当前位置: 首页 > news >正文

什么是软件测试?5分钟带你快速了解!

经常有人问我,你的公司是做什么的?我回答“软件测试”,看着对方一脸的迷茫。何为软件测试?软件测试究竟测试什么?

一、软件测试的定义和意义

软件测试是伴随着软件工程的重要组成部分,是软件质量保证的重要前提。软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期,对软件产品进行验证和确认的活动过程。在开发大型系统的过程中,面对复杂的现实情况,软件生存周期的各个阶段都有可能产生差错。

在这里插入图片描述

(一)软件测试的目标和原则

1.软件测试目标

以最少的时间和人力,尽可能多的发现程序中的错误和缺陷。测试还要证明,软件的功能和性能与需求说明相符合。

2.软件测试原则

测试既不要不充分,也不要过分。在通常情况下,在分析,设计、实验阶段的复审和测试工作能够发现和避免80%的bug,而系统的软件测试能找到其余bug的80%,最后约4%的bug只有在用户大范围、长时间的使用后才会暴露出来。应该把“尽早和不断地进行测试”作为开发者的座右铭,问题发现的越早,解决问题的代价就越小。彻底的测试是不可能的,但充分覆盖程序逻辑,并确保软件的所有条件是有可能的。所有的测试都应该追溯到用户需求。测试应从“小规模”开始,逐步转向“大规模”,应针对每个测试结果做全面检查。

二、软件测试的方法

软件测试的方法和技术是多种多样的,从大的分类上来说,分为白盒测试和黑盒测试。

图片

对于不同的项目和不同的阶段来说,往往需要用到不同的测试手段。

(一) 白盒测试

白盒测试是把软件看成一个白盒子,在完全知道软件结果的情况下,通过分析程序内部的逻辑与执行路径来设计测试用户,并对用例进行测试的方法,所以也称结构测试或者数据驱动测试。白盒测试主要用于单元测试,方法有逻辑覆盖和路径测试。其中逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、点覆盖、边覆盖等。白盒测试的缺点是投入人力资源的难度很大,执行白盒测试的测试人员要有不亚于开发人员的技术背景和对代码的熟悉程度。

(二)黑盒测试

黑盒测试是把软件开成一个黑盒子,不考虑程序的内部结构与执行路径如何,根据输入/输出数据条件来设计测试用例,查看程序的功能是否正确或满足用户要求,因此也称作功能驱动或数据驱动测试方法。黑盒测试主要用于软件确认测试,方法有等价类划分、边界值分析、错误推测法、因果图法等。黑盒测试对和数要求不高,如何在对系统结构不了解的情况下,设计测试过程才是黑盒测试最核心的部分。

(三)自动测试

在业务量很大的情况下,需要测试数据或者测试输入时,自动测试就是一个最佳的选择。自动测试是可重复性的测试并目有着很高的速度与效率,但是自动测试也有一些缺点。前期要花费购买工具,并且测试脚本的开发需要投入很多时间和人力。

(四)压力测试

压力测试指为了某个单一的目的,大强度地重复性的使用软件的某一功能,以发现该功能在压力条件下的性能指标。软件上市前对不够自信的功能进行专项的,不顾逻辑的,无所不用其极的对待待测软件。或者是软件上市后对客户反馈的模糊信息进行集中的测试以精确定位问题。

(五) 功能测试

功能测试是指测试软件各个功能模块是否正确,逻辑是否正确。对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受,外理和检索是否正确以及业务规则的实施是否恰当。此类测试基于黑盒技术,该技术通过图形用户(GUI)与应用程序进行交互,并对交互的输出或结果进行分析,以此来核实应用程序及其内部进程。

(六)性能测试

性能测试主要测试软件的性能指标是否达到预期要求。包括负载测试,强度测试,数据库容量测试,以及基准测试。

(七)用户界面测试(UI测试)

UI测试是对用户界面的风格、图片、背景、文字的测试。用户界面测试用于合适用户与软件之间的交互。一般有这样一些指标,第一是界面的有效性,第二是界面的连贯性,第三是界面传统型。主要包括用户界面的友好性,人性化,易操作性等方面的测试。

(八)文档测试

文档测试是对伴随软件同事提供给用户的各种使用手册,说明书,须知等进行的测试。文档测试是为了避免文档描述和软件系统实际不一致的情况发生。

三、软件测试过程

软件测试分为:单元测试、集成测试、确认测试、系统测试

(一)单元测试

单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。目的是检查出模块内部的错误,修改这些错误使得程序正确运行。

图片

(二) 集成测试

集成测试也称组装测试,就是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。集成测试的策略主要有两种方式,分为一次性组装方式和增值式组装方式。

(三)确认测试

确认测试也称为有效性测试,目的是验证软件的功能和性能是否满足客户的要求,确认测试是用户参加的测试讨程,采用的测试方法是黑盒测试,为了尽可能多的发现你只有用户在使用系统过程中才能发现的问题。

图片

(四)系统测试

系统测试是经过了前面的测试过程之后,软件系统已经基本符合要求,进行系统测试的目的是测试软件安装之后,能否与系统的其余部分协调工作,以及对系统运行可能出现的各种情况的处理能力。系统测试主要是有恢复测试,安全测试,强度测试,性能测试等。

四、如何避免在测试过程中出现的影响测试质量的因素发生

测试的计划阶段,是测试项目管理中最为重要的阶段。在此阶段中,测试组的建立,测试范围的选择,测试组的培训,测试平台的选择和配置,测试技术和工具的选择,测试执行的日程和进度,测试用例的设计,维护和更新,测试环境的设计和搭建,测试文档的格式和提交时间,测试入口/出口的checklist,测试组成员的管理和激励机制,测试过程的流程和定义,测试过程的质量监控都是保证测试过程顺利进行的必要条件。

五、软件测试工具的重要性

软件测试是一项重要而且复杂的工作,并且要求测试人员细致谨慎。

随着软件规模和复杂性的日益增加,对软件测试讨程也有着越来越高的要求,这更需要软件测试人员积累丰富的经验,选择正确的软件测试工具和测试方法进行测试工作。如何在软件开发项目中有序地管理和分析各种问题对质量控制和过程改进也将越来越重要。

ETest,嵌入式系统半实物仿真测试集成开发环境,是凯云科技积多年嵌入式软件测试经验自主研发,拥有自主知识产权的一套针对嵌入式设备的可以快速构建测控系统的集成开发环境。

图片

ETest对嵌入式测试提供了全过程支持,功能覆盖了测试环境管理、测试用例编写与管理、复用库管理、测试自动执行、测试手动执行、测试结果分析、测试结果汇总以及测试报告的生成。

该系统以解决装备和设备嵌入式软件测试环境的快速开发问题为主要目标,采用标准化的硬件模块和分层结构化的软件平台,实现了被测系统的交联环境描述、信号与协议的通用化描述、测试设备资源的编辑规划、可视化测试监控界面开发、仿真模型与测试脚本开发、测试执行引擎、测试结果监控与数据分析等功能。

ETest 在初始的架构设计时,就朝着国际ATML标准方向迈出了坚实的一步,前瞻性地将ATS领域的STD、IVI、TPS等理念应用于ETest 的设计和开发中,形成了由仿真交联环境和信号协议描述组成的仿真测试需求到测试资源与设备映射的系统架构模式,有效提高了测试程序的移植性和测试仪器设备的互换性,是面向工业装备软件研发和测试领域的首个国产化集成开发环境。

目前,ETest已发展到V6.0版本,形成了ETest-PT、ETest-RT、ETest-CPS系列测试应用系统。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaEE初阶-线程3
  • CentOS7:Python版本回退
  • Linux下Qt生成程序崩溃文件
  • 24双非考研哈尔滨工程大学计算机(@程程笔记)
  • hydra九头蛇
  • 海纳斯删除广告位
  • 【环境变量】基本概念理解 | 查看环境变量echo | PATH的应用和修改
  • 每日OJ题_两个数组dp①_力扣1143. 最长公共子序列
  • SpringBoot启动禁用员工账号(动态sql通用修改)
  • “大学论文数据分析全攻略:从理论到实践的实用指南“
  • Redis中的Sentinel(五)
  • FPGA的就业前景
  • 基于Java+SpringBoot+Mybaties+layui+Vue+elememt 实习管理系统 的设计与实现
  • 1.0-spring入门
  • Transformer Based Multi-view Network for Mammographic Image Classification
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 03Go 类型总结
  • 2019.2.20 c++ 知识梳理
  • JSDuck 与 AngularJS 融合技巧
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • sessionStorage和localStorage
  • unity如何实现一个固定宽度的orthagraphic相机
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 一个项目push到多个远程Git仓库
  • 应用生命周期终极 DevOps 工具包
  • 自动记录MySQL慢查询快照脚本
  • postgresql行列转换函数
  • 阿里云服务器购买完整流程
  • ​2020 年大前端技术趋势解读
  • # Kafka_深入探秘者(2):kafka 生产者
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (7)svelte 教程: Props(属性)
  • (C#)一个最简单的链表类
  • (Ruby)Ubuntu12.04安装Rails环境
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)jQuery 基础
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net framework profiles /.net framework 配置
  • .Net Web项目创建比较不错的参考文章
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NetCore发布到IIS
  • .NET委托:一个关于C#的睡前故事
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [2016.7 test.5] T1
  • [8] CUDA之向量点乘和矩阵乘法