软件测试7大误区

2023-09-20 14:11:56

随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识,这将会进一步的影响软件测试活动的开展,并且阻碍软件测试质量的提高。下面简单列举了几种有代表性的对软件测试的认识误区,并作了相应的分析和解释。

误区1:软件开发完成后才进行测试
  在传统的瀑布模型中,软件项目主要有一下几个阶段组成:用户需求、需求分析、概要设计、详细设计、编码和实现、测试以及运行维护。由于软件测试仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。因此人们一般认为,软件测试只是软件编码后的一个阶段。

  但随着软件测试业的发展,人们越来越认识到:软件测试不应只是软件项目的收尾工作,而应该在软件生命周期的每一阶段中都包含测试。软件测试是贯穿于整个软件开发生命周期的过程活动,包括软件测试计划、软件测试需求分析、软件测试用例设计、软件测试执行、软件缺陷管理、软件测试风险管理以及其他的一些软件测试相关的活动等等组成。在软件项目的每个阶段,都需要进行不同目的和不同内容的测试活动,以保证各个阶段工作产品输出的正确性。软件测试的对象也不仅仅是软件代码,还包括软件需求文档和设计文档等其他所有的软件工作产品。软件开发与软件测试之间应该是交互进行的,比如单元编码之后需要进行单元测试,模块组合之后进行集成测试。

  如果等到软件编码结束之后才进行测试,测试的时间很有限,很难达到测试的覆盖率要求和测试的质量要求。同时,假如在项目开发的后期,发现一些软件需求阶段和概要设计阶段的错误和问题,修改这些缺陷导致的成本将是非常高的。有资料表明:平均而言,如果在需求阶段修正一个错误的代价是1,那么,在设计阶段就是它的3-6倍,在编程阶段是它的10倍,在内部测试阶段是它的20-40倍,在外部测试阶段是它的30-70倍,而到了产品发布出去,这个数字就是40-1000倍。修正错误的代价不是随着时间线性增长的,而几乎是呈指数增长的。因此,应尽早地不断地进行软件测试,发现错误并加以修正,而非软件开发结束后才进行测试。

误区2:软件发布后发现软件问题,那是测试人员的责任
  许多人认为测试人员需要对发布的软件质量负责,假如软件到用户后,发现很多的问题,那是测试人员的错和责任。这种认识误区非常打击测试人员的积极性。软件中的缺陷可能来自软件开发过程中的任何一个过程,而对于软件测试而言,只能证明软件存在缺陷,而不能保证软件没有错误。通过软件测试,无法发现软件中的所有错误和缺陷。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,而是需要软件生命周期的各个过程共同来保证的。出现软件错误,不能简单地归结为某一个人或某个团队的责任。比如有些错误的产生可能不是技术原因,可能来自于混乱的项目管理;或者客户发现软件某些功能并没有按照原有需求来实现,换言之,软件没有完成客户想做的操作,诸如此类问题很可能是软件设计人员理解需求错误致使设计不当所引起的。

  软件的质量,不仅仅只是测试人员的事情,软件项目参与的所有人员都应该关注软件的质量。软件质量的提高,需要每个项目人员的努力。测试只是提高软件质量的一个重要环节,质量保证应该贯穿于整个软件开发生命周期的所有的开发活动、测试活动、项目管理活动等。同时,采用合适的开发和测试过程,对改进软件质量也能起到重要的作用。除了测试活动外,同时应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

误区3:测试人员不需要具备很高的技能
  不少软件业人士认为软件测试行业对软件测试人员的技能要求不高。认为测试只是对照产品规格书操作软件,发现软件与规格说明不一致的地方,是没有技术含量的工作。

  这种观点是错误的,或者至少是步恰当的。随着软件测试行业的发展,测试不仅仅是运行软件发现缺陷的一个过程,而是从项目早期,测试人员就开始介入,进行测试需求分析、计划测试等。这要求测试人员有很好的沟通能力、理解能力、分析问题能力,同时还必须对产品开发技术有一定的了解。

  随着软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具、新流程、新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试人员。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和测试理论知识,需要我们不断的学习。 

误区4:测试是测试人员的工作,和开发人员无关
  我们提倡软件测试尽早介入软件项目,或者说我们提倡贯穿于整个软件开发生命周期的测试。因此,在项目概念、需求和设计阶段,软件测试就应该介入项目中去。开发和测试是相辅相成的过程,需要软件测试人员和程序员、系统分析员等项目其他成员保持密切的联系,需要更多的交流和协调,以便提高测试效率。在这些阶段所发现的问题将有助于开发设计人员完善需求和设计。

  在项目开发过程中,一般由开发人员针对模块进行白盒测试,这是早期的测试。后期对于测试人员所发现的缺陷,开发人员应根据优先级来进行修复,针对开发人员的修改,测试人员还要进行再测试和回归测试工作。因此,在整个项目过程当中,测试也不仅仅是测试人员的事情,而是测试人员和开发人员紧密合作的过程。

误区5:由项目进度来决定测试工作量
  规范的测试流程应该是一个整体的连续的过程,包括测试计划和控制、测试分析和设计、测试实现和执行等阶段。每一阶段也应有各自的规程。而大多数人对测试的理解往往是随项目进度而定,即离项目交付空余的时间多,就多做测试;反之,则少做测试。这样很可能导致测试时间紧张,从而可能放弃其中的一些测试,可能导致遗漏一些重要的缺陷,显然这种做法存在非常大的风险。

  测试进度由项目开发进度来确定,这个观念很大程度上是因为“测试是开发生命周期的一个阶段”这个误区造成的。实际上,我们一直强调,测试是贯穿于整个软件开发生命周期的。在制订软件项目计划的同时,就需要规划和制订软件测试的计划。测试计划的一个重要内容是确定测试的进度(也就是测试时间和资源的安排)。因此,测试时间的多少,应该在项目早期根据项目的特点和风险分析结果来确定,而不仅仅是决定于项目进度。

误区6:软件测试是没有前途的工作,只有开发人员是软件高手
  由于我国软件整体开发能力比较低,软件过程还不规范。项目的成功往往靠个别开发人员的能力,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试并不受重视,软件测试人员的地位和待遇自然就偏低了,甚至软件测试变得可有可无。

  随着市场对软件质量要求的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途。市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。

误区7:自动化测试效率高,将取代软件手工测试
  测试自动化在某些情况下可以提高测试的效率(比如完成重复的测试配置、模拟大虚拟用户等),但是并不是所有的测试都适合自动化,如程序需要处理的数据量不大、程序运行的次数不多、或者测试需要一些人的主观判断(如界面测试)等,在这些情况下,自动化测试可能并不是很好的选择。

  同时,自动化测试需要在前期投入大量的资源和工作量,同时需要维护的成本很高,包括环境的搭建、测试脚本的设计、维护等。因此,要具体情况具体分析,不能盲目推崇测试自动化。

 

更多推荐

Vue记录(下篇)

Vuexgetters配置项*Count.vue<template><div><h1>当前求和为:{{$store.state.sum}}</h1><h3>当前求和的10倍为:{{$store.getters.bigSum}}</h3><selectv-model.number="n"><optionvalue="1"

vue+springboot,easyexcel的excel文件下载

文章目录1.效果展示1.1前端界面1.2下载的excel2.思路介绍3.前端代码展示4.后端代码展示5.核心代码解释1.效果展示excel文件单一sheet,多sheet导出本文主要介绍如何使用easyexcel,配合前端导出Excel文件。同时提供Excel的两种导出形式:单一sheet,多sheet。1.1前端界面

02-HTML常用标签

02-HTML常用标签2.1标签的构成标签由<、>、/、英文单词或字母组成。并且把标签中<>包括起来的英文单词或字母称为标签名常见标签由两部分组成,我们称之为:双标签。前部分叫开始标签,后部分叫结束标签,两部分之间包裹内容就是标签名。少数标签由一部分组成,我们称之为:单标签。自成一体,无法包裹内容(比如:<hr>、<b

Git 基本操作【本地仓库与远程仓库的推送、克隆和拉取】

文章目录一、Git简介二、Git的下载安装三、Git常规命令四、新建本地仓库五、本地分支操作六、Git远程仓库七、远程仓库克隆、抓取和拉取八、总结九、学习交流一、Git简介Git是分布式版本控制系统(DistributedVersionControlSystem,简称DVCS),分为两种类型的仓库:本地仓库和远程仓库工

51单片机1【单片机到底是什么】

1.从电路到集成电路1.电路发展变化的趋势(1)功率:电子设备·越来越省电,待机时间越来越长,工作电压越来越低。(2)体积:体积越来越小(3)功能:功能越来越强大2.微器件(1)电路的核心:开关控制,倍率控制(2)电子管,晶体管3.集成电路(IC,芯片)的出现(1)IC(integratedcircuit,集成电路),

[创业之路-76] - 创业公司如何在长期坚持中顺势而为?诚迈科技参观交流有感

目录一、创业环境1.1.VUCA乌卡时代:易变、复杂、不确定性、模糊的时代1.2.中国用了四十年的时间完成了三次工业革命:机械化、电气化、数字化1.3.中国正在经历着第四次工业革命:智能化、生态化、拟人化1.4国产替代:国产化1.5所有的赛道都挤满了人二、创业公司在长期坚持中顺势而为的路径2.1做自己的熟悉行业:对行业

annyang语音识别与语音合成库

*text是Annyang.js中的一个通配符,表示匹配任何语音输入中的文本,并将其作为参数传递给命令回调函数。例如,如果用户说“searchforcats”,则可以使用以下命令来捕获输入中的搜索词:constcommands={'searchfor*text':(text)=>{console.log('Search

Selenium和Requests搭配使用

Selenium和Requests搭配使用前要1.CDP2.通过requests控制浏览器2.1代码一2.2代码23.通过selenium获取cookie,requests携带cookie请求前要之前有提过,用selenium控制本地浏览器,提高拟人化,但是效率比较低,今天说一种selenium和requests搭配使

人类的生成式与机器的生成式

生成式是指一种基于模型的方法,通过给定的条件或输入,生成与之相符合的输出。在自然语言处理领域中,生成式模型通常用于生成文本、文章、对话等自然语言序列。生成式模型的训练主要涉及两个步骤:学习和生成。在学习阶段,模型通过对大量的训练数据进行学习和训练,以学习出模式、语法和语义等语言特征。在生成阶段,模型接受一个初始输入,并

【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署

【Redis】Redis常见面试题(3)文章目录【Redis】Redis常见面试题(3)1.特性&应用场景1.1Redis能实现什么功能1.2Redis支持分布式的原理1.3为什么Redis这么快1.4Redis实现分布式锁1.5Redis作为缓存2.数据类型2.1Redis常用的数据类型有哪些2.2有序列表的底层是如

java 入门-使用eclipse、javaFX、SceneBuilder进行图形界面开发

个人是一直在开C#CS端开发,目前公司的软件基本都使用了java作开发。为了更好适应环境,我也只能再次学习这个陌生的开发工具。java的开发界面非常不友好,对于我这样的初学者只能是借助插件来进行界面与后台联动,上网度娘了好多资料,java的开发环境非常不易构建特别是需要辅助界面设计的。谨以我这么多天的摸索经历来作下小记

热文推荐