软件测试_软件测试面试 - CSDN
软件测试 订阅
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 展开全文
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
信息
方    式
人工操作或者软件自动运行
领    域
IT行业、有信息化管理的各行业
工作内容
验证和确认
中文名
软件测试
目    的
鉴定、审核软件
外文名
software testing
软件测试概述
软件测试是伴随着软件的产生而产生的。早期的软件开发过程中软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容,Bill Hetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。”这个定义至今仍被引用。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。软件测试已有了行业标准(IEEE/ANSI ),1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。软件测试已成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。
收起全文
精华内容
参与话题
  • 软件测试2小时入门

    千人学习 2020-07-17 14:09:37
    本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、...
  • 软件测试_笔记(完整版)

    万次阅读 多人点赞 2018-07-02 08:54:13
    软件测试复习(部分) 概述 程序+文档+数据=软件 狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程 广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或...

    软件测试

    概述

    程序+文档+数据=软件

    狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程

    广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果和实际结果间的差别

    为什么要做软件测试

    • 发现软件缺陷
      • 功能错
      • 功能遗漏
      • 超出需求部分(画蛇添足)
      • 性能不符合要求
    • 软件质量高低:是否符合用户习惯、符合用户需求

    测试的任务

    • 找出
    • 定位
    • 修改
    • 修改后要做回归测试,对已修改的部分进行再次的测试,避免引入新的错误

    测试用例的定义和组成部分

    • 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。
    • 包含
      • 用例ID
      • 用例名称
      • 测试目的
      • 测试环境
      • 前提条件
      • 测试步骤
      • 预期结果
      • 其他信息

    一个好的高质量的测试用例在于能发现至今未发现的错误,一个成功的测试是发现了至今未发现的错误的测试(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    两个方向

    • 找错误,反向思维。
    • 证明能正常工作,正向思维。
    • 目前的方法出发点一般是“找错误”,因为没法证明软件是正确的。

    用户需求

    要求(用户想要) 需求(用户目的) 需要(用户内在欲望)
    牙膏 清洁牙齿 个人魅力(个人外表整洁)

    什么时候停止测试

    • 继续测试没有产生新的失效
    • 继续测试没有发现新缺陷
    • 回报很小
    • 以达到要求的覆盖
    • 无法考虑新的测试用例(若已遵循测试规则和指导方针,则可以选择)

    测试过程模型

    缺陷具有放大的特点,随着阶段的推进发现bug的成本会指数型上升,所以并不是代码级的测试才叫测试,而是开发过程各个阶段越早开始测试越好。

    • 瀑布模型:需求分析->设计(概要、详细)->编程->测试(单元、集成、系统)->维护
    • V模型(瀑布-改):在软件开发的生存期,开发活动和测试活动几乎同时的开始,如概要设计阶段结束后集成测试的测试用例就出来了、详细设计阶段结束后单元测试的测试用例也就出来了等
    • W模型(V模型更加细化、每步都加测试,边造软件边进行测试):需求分析加了需求测试、概要设计加了功能测试、详细设计加了设计测试、编码加了单元测试、集成加了集成测试、确认加了确认测试、验收加了系统测试
    • H模型:无实际意义,仅说明可以独立测试

    软件测试的原则

    • 所有的测试都应追溯到用户的需求
    • 尽早地和不断地进行软件测试(缺陷具有放大的特点,测试成本随阶段深入而上升)
    • 8-2原则
      • 测试中发现的错误80%很可能起源于程序中的20%
      • 提前测试可发现80%,系统测试找出剩余bug的80%(总体的16%),最后的4%可能只有用户大范围长时间使用后才暴露出来
      • 80%的工程用在20%的需求上(即关键需求)
    • 软件缺陷的寄生虫性:找到的缺陷越多说明软件遗留的缺陷越多
    • 避免自己测试自己的程序
    • 回归测试:避免引入新的错误

    软件测试流程

    制定测试计划->测试设计->测试开发->测试执行->评估测试

    注意

    • 测试不是开发后期的一个阶段
    • 测试入门其实稍容易,但要求技术一样高
    • 测试多数情况下不能覆盖所有输入
    • 不要“有时间多测,没时间少测”
    • 软件测试不止是测试人员的事,也是开发人员的事
    • 调试和测试不一样
    • 测试绝非只运行一下软件看结果对不对

    L10N:本地化测试

    I18N:国际化测试

    黑盒测试

    等价类划分与边界值分析

    如何划分有效和无效等价类(一些常用原则)

    • 如果一个变量在某一个范围内,给它一个有效等价类两个无效等价类
    • 如果一个变量取值在某一个集合范围内,可在集合内取一个有效等价类在集合外取一个无效等价类
    • 如果一个变量的条件是“必须怎样”、“一定会是怎样”则去一个值满足“必须要”的条件再取多个不满足的从多个角度去违背这个条件
    • 如果一个变量是布尔类型,则取一个对的一个错的

    在找到有效等价类和无效等价类后如何找测试数据

    • 有效等价类:要尽可能多的覆盖有效等价类
    • 无效等价类:每找到一组数据要至少覆盖一组无效等价类

    如果功能模块的输入是多个,多个自变量放在一起如何找有效等价类、无效等价类、测试数据,4钟方法:

    以一个具有自变量X1、X2的函数F为例,X1取值范围为[a, b)、[b, c)、[c, d];X2取值范围为[e, f)、[f, g]。仅考虑有标记的方块内为一般等价类测试(不处理无效数据的测试)、所有方块都考虑为健壮等价类测试(进行无效数据处理的测试)

    g |_______|_______|_______|_______|_______|
    f |_______|///|///|///|_______|
    e |_______|///|///|///|_______|
      |_______|_______|_______|_______|_______|
              a       b       c       d
    • 弱一般等价类
      • 有假设前提:是单缺陷的,即假设系统出现的缺陷很少是由两个及以上的输入变量共同出现缺陷而引起的。
      • 选取的测试用例覆盖所有的有效等价类
        • 对于X1(横轴):[a, b)、[b, c)、[c, d]都需要覆盖到;对于X2(纵轴):[e, f)、[f, g]都需要覆盖到。保证了这两点的情况下,就可以任意取点了
    g |_______|_______|_______|_______|_______|
    f |_______|_______|____x__|_______|_______|
    e |_______|___x___|_______|___x___|_______|
      |_______|_______|_______|_______|_______|
              a       b       c       d
    • 强一般等价类
      • 基于多缺陷假设
      • 选取的测试用例覆盖所有的有效等价类的笛卡尔积(集合A{a1,a2,a3} 集合B{b1,b2} 他们的 笛卡尔积 是 A*B ={(a1,b1),(a1,b2),(a2,b1),(a2,b2),(a3,b1),(a3,b2)} )
        • 对于X1(横轴):[a, b)、[b, c)、[c, d];X2(纵轴):[e, f)、[f, g],笛卡尔积的结果就是所有的格子,所以必须所有格子都取点
    g |_______|_______|_______|_______|_______|
    f |_______|___x___|___x___|___x___|_______|
    e |_______|___x___|___x___|___x___|_______|
      |_______|_______|_______|_______|_______|
              a       b       c       d
    • 弱健壮等价类
      • 有假设前提:是单缺陷的,即假设系统出现的缺陷很少是由两个及以上的输入变量共同出现缺陷而引起的。
      • 考虑无效值,对有效输入,测试用例的设计等同于弱一般等价类;对无效输入,测试用例需要保证拥有一个无效值(比如某一变量的有效类的取值范围为x、y、z,则无效类为x-和z+,加起来取值范围一共:x-、x、y、z、z+),并保持其余的值都是有效的。

    所以如下图,在保证弱一般等价类的取点后,还需要分别保证X1、X2中有1个属于无效输入的两个额外的取值范围,另一个属于有效输入的原本取值范围(如X1取无效X2取有效或X1取有效X2取无效,并全部覆盖无效范围)

    g |_______|_______|_______|___O___|_______|
    f |_______|_______|___x___|_______|___O___|
    e |___O___|___x___|_______|___x___|_______|
      |_______|___O___|_______|_______|_______|
              a       b       c       d
    • 强健壮等价类
      • 基于多缺陷假设
      • 所有的取值范围取笛卡尔积(比如某一变量的有效类的取值范围为x、y、z,则无效类为x-和z+,加起来取值范围一共:x-、x、y、z、z+,再与另一变量的取值范围取笛卡尔积)
    g |___O___|___O___|___O___|___O___|___O___|
    f |___O___|___x___|___x___|___x___|___O___|
    e |___O___|___x___|___x___|___x___|___O___|
      |___O___|___O___|___O___|___O___|___O___|
              a       b       c       d

    在找测试数据时(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    • 对于单缺陷的,即只有一个输入变量是处于无效等价类,其他所有输入变量都处在有效等价类中。包含:
      • 单缺陷有效值
      • 单缺陷无效值
    • 对于多缺陷的,即多个输入变量同时出现错误引起的。包含:
      • 有效值
      • 无效值

    与等价类划分密切相关的就是边界值分析。先划分等价类,再结合边界值产生测试用例。边界值分析中也有假设前提:单缺陷。包含4种设计测试用例的方法:

    • 一般的边界值分析
      • 有效范围:最小的、比最小大一点的、正常值、比最大小一点、最大值
      • 无效范围:比最小更小、比最大更大
      • 共7个,再分单缺陷和多缺陷,这样设计测试用例的个数就会指数上升
    - 单变量假设 多变量假设
    有效值 **一般边界值**5n-(n-1)【n-1个变量取正常值】=4n+1【仅考虑有效区间单个变量边界值(一般边界值):用最小值、略高于最小值、正常值、略低于最大值和最大值。】 **一般最坏情况边界值**5^n【仅考虑有效区间多个变量边界值同时作用(一般最坏情况边界值):用各个变量最小值、略高于最小值、正常值、略低于最大值和最大值的笛卡尔积。】
    无效值 **健壮性边界值**7n-(n-1)=6n+1【 同时考虑有效区间和无效区间单个变量边界值(健壮边界值):除了最小值、略高于最小值、正常值、略低于最大值、最大值,还要有略超过最大值和略小于最小值的值。】 **健壮最坏情况边界值**7^n【同时考虑有效区间和无效区间多个变量边界值同时作用(健壮最坏情况边界值):用各个变量最小值、略高于最小值、正常值、略低于最大值、最大值、略超过最大值和略小于最小值的笛卡尔积。】

    常见的边界值

    • 16bit整数32767~-32768
    • 报表第一行和最后一行
    • 屏幕光标最左上和最右下
    • 数组的第一个和最后一个
    • 循环的第0、1、倒数第一、倒数第二次

    决策表

    适合于问题有多个条件,条件有多种组合执行不同操作(有很多if、else if、else),不能表达循环结构

    最严格、最具有逻辑性

    判定表
    | 条件桩 | 条件项 | ... | 动作项 |
    | 动作桩 | 动作项 | ... | 动作项 |

    规则:条件的任意组合,判定表中的一列(贯穿条件项和动作项)。判定表有多少列就代表有多少条规则。

    规则的化简:有的规则相互包含,可以化简

    因果图

    找出所有的原因,找出结果,可能还有中间结果的产生,在画因果图时注意。

    • 从输入考虑
      • I:连虚线出去,如连到ab,表示ab中至少有一个必须成立
      • E:连虚线出去,如连到ab,表示ab不能同时成立
      • R:如处于a指向b的虚线三角箭头上,表示a出现时b也必须出现,不可能一个出现一个不出现
    • 从输出考虑
      • M:如处于a指向b的虚线三角箭头上,表示a为1时b必须为0,a为0时b值不定
    • 连线:恒等
    • ~:非
    • ∨:或
    • ∧:且
    • ci:原因
    • ei:结果

    画出因果图后,根据图得到决策表从而得到相应的测试数据:原因节点+中间节点为条件桩,结果结点为动作桩

    白盒测试

    逻辑覆盖

    语句覆盖->判定覆盖->判定/条件覆盖->条件组合覆盖->路径覆盖
          \_条件覆盖/
    • 语句覆盖:每条语句执行一次
    • 判定覆盖:每个判定分支至少执行一次
    • 条件覆盖:每个判定条件应取到各种可能的值
    • 判定/条件覆盖:同时满足判定和条件
    • 条件组合覆盖:每个判定条件的每一种组合各出现一次
    • 路径覆盖:每一条可能的路径至少执行一次

    关系:

    • 条件组合覆盖>判定覆盖>语句覆盖(即如果达到条件组合覆盖,就达到判定覆盖和语句覆盖:如果达到判定覆盖,就达到语句覆盖,下面类似理解)。
    • 条件组合覆盖>条件覆盖。
    • 条件覆盖不一定包含判定覆盖、语句覆盖。
    • 判定覆盖不一定包含条件覆盖。
    • 路径覆盖,判定覆盖>语句覆盖。

    基本路径测试

    基于程序圈复杂度产生的测试方法,画出控制流程图,算圈复杂度,找到独立路径并压缩为基本路径集合,根据集合中每条路径设计用例。把复合逻辑表达式拆成单个表达式

    圈复杂度用于计算程序的基本的独立路径数目(每条新的独立路径都必须包含一条新的有向边,从入口到出口互不相同的路径数)

    • 圈复杂的V(G) = e - n + 2p【边-节点+2*连接区域数,连接区域p通常为1】=P+1【判定节点数+1】
    • 一般来说,一个单元模块的最大复杂度V(G)<10

    如果把覆盖的路径数压缩到一定限度内,例如程序中的循环体只执行0次和1次,就成为基本路径测试,通过导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次

    基于数据流的测试

    基于真的数据定义到数据的使用来进行测试,需要找到定义的节点(包括赋值的和比较的)和使用的节点(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    • 定义节点DEF:输入语句、赋值语句、循环语句和过程调用;变量的值会发生变化的语句
    • 使用节点USE:数出语句、赋值语句、条件语句、循环控制语句、过程调用

    需要找到所有这段功能代码从哪里开始定义,到哪里开始执行,把路径找出来。什么是定义使用路径(某一变量在最初节点定义到最终节点被使用)、定义清除路径(某一个变量从它的定义节点到使用节点这个过程中没有对这个变量进行二次定义)

    循环测试

    前提是程序是结构化的。

    简单循环测试

    • 0次通过循环
    • 1次通过循环
    • 2次通过循环
    • m次通过循环(m<=循环最大次数)
    • m-1,m,m+1次通过循环

    测试的过程

    单元测试

    单元测试的内容:5点(简答题)

    • 模块接口的测试
    • 局部数据结构的测试
    • 独立路径测试
    • 错误处理测试
    • 边界测试

    单元测试的模块

    • 被测模块:被测试的程序的模块
    • 驱动模块:用来模拟测试模块的上一级模块,相当于被测模块的主程序
    • 桩模块:用来模拟被测模块工作过程中所调用的模块

    单元测试的工具:Junit相关的概念:以插入断言的方式进行测试(类似黑盒测试)

    • 针对被测代码或者被测的功能点先创建测试类,然后在类里面创建一个个测试方法。通过实例化对象调用被测方法,用断言进行实际值预期值比较。

    单元测试的方法

    • 以白盒测试法为主(覆盖),先静态检查代码是否符合规范,再动态运行代码,检查结果。除了需要验证结果是否正确,还需要检查程序的容错能力、边界值处理等问题。

    集成测试

    • 一次性的集成big-bang:把所有通过了单元测试的模块按设计要求一次全部组装起来,然后进行整体测试。时间随变短了但急于求成。
    • 渐进地集成
      • 自上而下:从主程序模块开始按深度或广度优先策略边组装边测试
      • 自下而上:从最底层模块开始组装和集成测试
      • 汉堡包:两者进行结合,树状图每层画线,顶层采用自顶向下,底层采用自底向上
        相邻的集成:上下三层进行集成
        成对集成:先成对再相邻
        基于MM路径的集成:MM路径不是可执行路径,描述单元之间的控制转移。

    最终得到调用图,然后就会到基本路径测试,找复杂度,找路径,得到测试用例的套路

    系统测试

    黑盒为主(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

    对哪些内容进行系统测试(9个):易用性、国际化本地化、性能、功能、界面、兼容性、安全性、文档、安装

    Web系统测试

    具体到如Web系统测试中的功能测试包含哪些内容、对cookies里面的内容进行测试属于Web系统测试里面的哪一项的测试(属于功能测试)

    • 功能测试
      • 页面内容测试
      • 页面链接测试
      • 表单测试
      • Cookies测试、Session测试
      • 设计语言测试
      • 数据库测试
    • 性能测试(负载/压力)
      • 连接速度测试
      • 测试工具 LoadRunner
        • 负载测试
        • 压力测试
      • 网页性能Firefox插件:Yslow,Findbug,PageSpeed
      • Dynatrace检查网页性能
    • 可靠性测试:不间断测试,看多久不出错
    • 用户界面测试/易用性测试
      • 导航测试
      • 图形测试
      • 内容测试
      • 整体界面测试
    • 安全性测试
    • 兼容性测试
    • 接口测试
      • 服务器接口
      • 外部接口
      • 错误处理

    主要讲了性能测试的含义和怎么做,如所涵盖的含义如压力测试怎么做、负载测试怎么做等

    • 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
      • 时间性能:软件的一个具体事务的响应时间
      • 空间性能:软件运行时所消耗的系统资源
      • 我让你背1袋米(轻松)
      • 我让你背1袋米,但让你去操场上跑圈,看多久累倒(吃力)
      • 我让你背3袋米去操场跑圈,看多久累倒(极限)
      • 我让你背1袋、2袋、3袋、4袋…发现最多背3袋
    • 负载测试让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的可靠性。
      • 系统能否处理某个时刻同时访问Web系统/某个页面的用户数量
      • 超过了这个数量,会出现什么现象?
      • 在线数据处理的数量
    • 负载/压力测试关注什么?
      • 验证系统能否同一时间响应大量的用户,用户传送大量数据时能否响应,系统能否长时间运行。
        • 瞬间访问高峰
        • 每个用户传送大量数据
        • 长时间使用
    • LoadRunner性能测试工具原理:录制+回放模拟用户实际操作场景,监控并分析运行结果。

    自动化测试

    录制+回放+脚本 是主要的方式

    常用的自动化测试的工具,哪些种类,每种有什么工具

    • 功能测试工具:QTP
    • 性能测试工具:LoadRunner
      • 写脚本或者录制脚本
      • 使用用户自定义参数
      • 场景设计
      • 产生虚拟用户的机制:使用控制器,来控制模拟多少用户。
      • 使用监听器,查看测试结果

    (Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


    visitor tracker
    访客追踪插件


    展开全文
  • 软件测试入门视频教程

    万人学习 2019-06-25 10:59:08
    软件测试入门视频培训教程:该课程将带你走进“软件测试”的大门,具体内容包括软件测试环境搭建、软件开发模型、产品模型、CMM模型、测试用例、等价类划分、边界值划分、白盒测试、单元测试、bugfree搭建、系统测试...
  • 关于软件测试,你需要知道的一切都在这里了

    万次阅读 多人点赞 2019-10-24 09:07:31
    我曾今不止一次见过:对软件测试行业不甚了解的新人与已经在测试行业摸爬滚打几年的前辈之间的互相指责和争执。 新人因为不了解测试行业,也不了解提问的艺术,所以问的都是自己比较关注的问题和一些基础问题。前辈...

    测试行业小故事

    我曾今不止一次见过:对软件测试行业不甚了解的新人与已经在测试行业摸爬滚打几年的前辈之间的互相指责和争执。

    新人因为不了解测试行业,也不了解提问的艺术,所以问的都是自己比较关注的问题和一些基础问题。前辈因为对测试行业有一定的了解,掌握一定的知识技术,早就明白了有些问题是无解或者无用的。

    所以矛盾就产生了

    ——新人认为前辈都是很傲慢的,不屑回答问题还要冷嘲热讽。

    ——前辈认为新人只会坐享其成,不愿动手动脑也不会提问。

    究其原因,还是信息不对称。各自掌握的信息都是仅限于自己所了解的,所以很难做到相互理解,互帮互助。

    这篇文章的写作目的就是为了帮助测试新人和测试前辈更好地了解软件测试行业,以及它的发展前景。让新人不再对行业一无所知,让前辈对行业发展方向和新人的心理有一定的认识。

    新人的问题

    不管新人从哪里了解到软件测试行业,对它的了解都是不足的(包括这篇文章),所以新人才会问这些问题,看看我说的对不对。

    软件测试行业前景怎么样?软件测试工资高吗?测试是不是比开发简单?我快30了转测试可以吗?我学历不够,专业不对口,能做测试吗?我不会编程可以做测试吗?如果入职了我什么都不会怎么办......等等问题,问题太多了,上述是最常见的。

    这些暂且先放在这里,咱们继续往下看,希望你能找到答案!

    行业现状分析

    本文截取了《软件测试行业现状2018年度报告》中的数据,数据由PractiTest提供。《软件测试行业现状2018年度报告》是全球最大的软件测试行业调查报告。来自80多个国家的约1500名受访者参与了此次调研。调研旨在为测试行业和全球测试社区提供最准确的信息。

    测试人员地区和职位分布

    可以看到大部分软件测试人员的职位是测试工程师,其次是测试负责人,紧随其后的是测试人员和自动化测试人员。一部分软件测试员更愿意把自己定位成软件测试工程师或者质量保障工程师,而不仅仅只是单纯的测试人员。同时自动化测试是发展趋势,自动化测试工程师越来越受到青睐。

    测试人员的工作年限

    从上图中可以看到2个重要的趋势。第一个是新测试从业人员的流动性很强,但是越来越多的测试人员希望留在该行业,希望在此过程中获得专业素质并提高测试技能。第二个是大型公司往往需求经验丰富的测试人员,但小公司更加愿意接受经验较少的测试人员(这对新入行的测试人员或者希望获得第一份工作的人来说是一个好消息)。

    测试工作占工作内容的百分比

    可以看到有四分之三的测试人员至少花费了50%的时间在测试工作上,这说明了目前测试人员主要还是专注于测试本职工作,但是以后测试人员的工作职责会越来越模糊,因为测试人员需要掌握的技术广度大,以后的测试人员会更加偏向于“问题解决者”的角色。

    测试行业的入行途径

    可以看到有人从公司转岗测试,有人是其他行业转行测试,还有人是作为学生实习并留在公司从事测试。目前越来越多的人转行测试,这说明测试已经成为一个令人感兴趣的职业发展方向

    测试人员的薪资水平

    这里有两个需要注意的地方,第一,这里的单位是千美元。第二,中国<1年的测试人员样本不足,所以没有统计。从上表可以看到,中国1-5年从业经验的测试人员工资低于国际水平。中国测试行业的薪资可以在1-2年内达到一个相对较高水平。以我的经验来看,基本在15k左右。

    软件测试的职能定位

    从上表可以看出,国际趋势是测试团队规模正在缩减(国内会有几年的延迟),结合国内的情况来看,功能测试的岗位已经呈现饱和状态,自动化等高端测试岗位还有很多机会。另一个明显的趋势是,测试人员正在成为统一团队和敏捷团队的一部分

    测试人员的额外工作

    上图表明了测试人员的工作并不仅仅只限于测试应用程序,同时还要承担其他的工作任务,这也说明测试人员的工作更加多样化,正在从事软件测试或将要从事软件测试的人员需要注意:为了推进你的事业,你需要思考要做的额外工作

    测试人员的技能提升办法

    可以看到,大多数测试人员选择技能提升的方法是亲身实践,只有不断地在错误中汲取教训,从成功中总结经验,从而达到不断磨练自身的效果。有趣的是,也有不少人觉得看技术书籍和参加在线直播是不错的提升技能的方式。

    一名优秀的测试人员需要具备的技能

    沟通技巧是每个测试人员所必需的技能,其次是自动化脚本编写,第三是常规的测试手段和方法。同时测试人员应该尽量掌握更多的其他技能,这样不仅能提高核心竞争力也能提高薪资水平

    软件测试测什么?

    为了弄清楚技术趋势的变化,被测对象的变化,以及对于我们测试方法的影响。我们可以从上图中看出,web界面手机app桌面系统等测试对象占比非常高,相对应的工作机会也越多,工资水平也不低。相信你们会比较关注这个。

    自动化测试的现状

    从上图中可以看出,测试自动化应用的范围非常广:功能测试领域,持续集成领域,负载压力测试领域,单元测试领域都很大程度上依赖于自动化测试,因此,目前自动化测试是行业的“香饽饽”

    软件测试人员的未来发展方向

    大数据、区块链、人工智能等等方面相信大家已经听过很多次了,做为软件测试人员,也需要对这些领域具备一定的敏感性,可以尝试进行这些领域的了解和学习,为未来的主流技术做好技术储备

    如果我要面试,我应该准备哪些?

    很多时候,比起专业技术能力,软技能更为重要,特别是面试的时候,因为面试官也是人。同时,比起学历、专业、年龄,技术能力更重要,所以,转行者们不需要担心,这不会成为你们的绊脚石。

    在这里特别感谢一下PracticeTest的资料收集和报告出具,同时感谢中文版的翻译团队。

    参考链接:https://www.practitest.com/

    相信看到这里的,不管是新手还是前辈,都对测试行业有了一个大体的认知。希望这篇文章(实际上是报告文章)能帮助新人更好地了解软件测试行业(发展前景,技术要求,薪资水平等),希望这篇文章同样能帮助已经有几年测试经验的前辈们做好自己的职业定位,确定未来的发展方向以及做好技术沉淀。

    不管你是否选择软件测试行业,是否决定在测试行业继续发展,是否是软件测试人员,我都希望本文能够帮助到需要帮助的人,如果确实对你有帮助,我将感到非常开心。

    最后再打个广告:我创建了一个学习交流的社群,如果大家对测试行业刚兴趣,可以加入一起交流,里面也有大牛分享学习经验,这个是裙号:1007119548。谢谢大家~

     

     

     

    展开全文
  • 全程软件测试

    2020-07-29 14:20:13
    全程软件测试,系统的讲解了所有测试体系和测试流程,是了解测试工作的必选书籍!
  • 软件测试定义/过程/分类

    千次阅读 2018-07-01 01:41:50
    软件测试定义:(为了发现程序中的错误而执行程序的过程)1为了发现程序员在开发中存在的代码以及逻辑错误2审核产品的完成是否符合用户的需求3提高客户的体验4交付更高质量的产品二。软件测试的过程阶段:1计划2设计...

    一。软件测试定义:(为了发现程序中的错误而执行程序的过程)

    1为了发现程序员在开发中存在的代码以及逻辑错误

    2审核产品的完成是否符合用户的需求

    3提高客户的体验

    4交付更高质量的产品


    二。软件测试的过程阶段:1计划2设计3执行4评估5验收

    1.计划测试:编写测试计划,参考需要规格说明书、项目总体计划,测试范围、进度安排,人力物力的分配,整体测试侧脸的制定,和风险评估规则措施有一个制定,一般由测试主管编写。

    2.设计阶段:主要编写测试用例,参考需求分析、概要设计、详细设计等文档,也会和开发、产品经理沟通。

    3.执行阶段:先搭建测试环境,执行预测,判断当前版本是否可以测试,如果测试通过正式进入系统测试,遇到问题提交BUG,对BUG进行跟踪,具体测试轮次由开发质量和版本复杂程度决定。

    4.评估阶段:出测试报告,对整体过程做总结,对当前版本质量评估。

    5.验收阶段:出用户手册,操作指引,公司严格评审流程,保证每一步输出的有效。


    三。V模型结构



    1.需要分析:明确客户需要是什么,需要软件做成什么样子,有什么功能。

    2.概要设计:主要是架构的实现,搭建架构,表述个模块功能、模块接口连接和数据传递的实现等项事物。

    3.详细设计:各个模块进行深入分析,对各模块组合进行分析分,这阶段需要伪代码级别,已经把程序的具体实现功能,现象等描叙出来。其中需要包含数据库设计说明。

    4.编码:按照详细设计好的模块功能表,编程人员编写出实际代码。

    5.单位测试:软件中的最小可测试单元进行检查和验证(一般开发完成)

    6.集成测试:在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。

    7.系统测试:把软件系统搭建起来,按照软件规格说明书中所需求,测试软件性能功能等是否符合用户需求,在系统中运行是否存在漏洞。(测试用例来进行测试)

    8.验收测试:用户根据需要说明书来做相应测试,以确实软件达到效果。(需要谁提出来就是谁验收)

    验收测试分类:1.(alpha)测试:一种前期的用户测试(内部测试)

    2.(beta)测试:后期用户测试,(大型游戏公测)


    四、软件测试的分类---软件测试的阶段(测试执行)

    单元测试、集成、系统、验收。


    五、软件测试的种类

    1.白盒测试:基于软件内部设计程序实现(代码)

    2.冒烟测试:冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作(基本功能的验证(主流程)局限性;集成测试之中)

    3.功能测试:测试软件的功能是否符合需求,通常黑盒测试,一般是测试人员独立执行。

    4.界面测试:UI测试,

    5.回归测试:指修改了旧代码后,重复执行上一个软件版本中使用的过的测试用例,以确认修改没有引入新的错误或导致其他代码产生错误。回归测试的困难在于不好确定哪些内容应被重新测试。(系统测试阶段)BUG相关联的模块都要进行测试。

    6易用性测试:测试软件是否易用,一般根据很多用户的测试反馈信息,才用评价易用性。

    安装与卸载测试:测试软件正常、异常情况下的全新安装、升级、卸载过程。

    7.(alpha)(beta)测试的区别:1.测试环境不一样 2. 前后期测试 3. a测试时模拟用户测试 ,B测试时真实用户测试

    开发环境:开发人员编译代码的环境。

    测试环境:测试人员模拟真实用户使用环境。

    生产环境:用户使用环境。

    CS架构:必须安装个客户端才能够用的软件。(QQ 微信、火车票出票系统 OQ)

    BS架构:只需一个浏览器就可以访问服务。(爱奇艺在线直播、QQ空间)

    比较单元、集成、系统测试的测试方法、考察范围(测试的重点)和评估基准(测试通过的依据)

    单元测试:通常白盒测试(代码)单元测试对应模块内部发现错误,该模块能正常实现需求说明各个功能。该模块代码是否正确。

    集成测试:将所有模块按照设计要求组装成为子系统来测试,通常是黑盒测试;修复所有发现的错误,测试结果通过评审。

    系统测试:系统测试的目的是验证最终软件系统是否满足用户规定的需求。通常压力测试、安全测试、回归测试、界面测试、安装验收测试。各个模块功能和用户需要是否相符合,程序运行正常。


    六、测试用例的方法

    等价类划分-等价类划分法是一种典型的重要的黑盒测试方法,它将程序所有可能的输入数据划分成若干等价类(即输入域的子集合)。它一般分为有效等价类和无效等价类。

    例微信红包发生金额最小0.01元,最大200元。

    按数字划分:

    有效:0.01-200 ; 无效:<0.01 >200;

    按数据类型划分:

    有效:数字;无效:非数字(!@##¥...)

    边界值分析法:

    对等价类划分法的一个补充,边界值一般都是从等价类的边缘值寻找,边界值分析思想:应选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据。

    边界值分析;微信红包0.01<=x<=200 ,

    边界值为:0、0.01、0.02、199.99、200、200.01

    错误推测法:总之就是进行错误的操作,验证程序是否对出错的场景和情况有应对能力,来选择测试用例数据。这个更多的是测试人员经验的总结。

    因果图法/判定表法;



    作业




    投1.5元:C1 C3 11 12 A2 ;C1 C4 11 12 A3 ;C1 C5 11 12 A4

    投2元:C2 C3 11 12 A2 A1 ;C2 C4 11 12 A3 A1 ;C2 C5 11 12 C4 A1

    只投币:

    C1 11; C2 11;

    不投币按按钮:

    C3 12;C4 12 ;C5 12

    故11种情况。


    场景法:一般根据业务流程的描述流程图分析基本流。分支流来列出来不同业务场景,作为测试用例的测试数据

    基本流:正常操作流程

    分支流:非法判断处理的

    展开全文
  • 软件测试流程详解

    万次阅读 2019-06-02 14:45:19
    1.软件测试的定义: 使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 百度百科定义:软件测试(英语:Software Testing),描述一种用来...

    1.软件测试的定义:
    使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
    百度百科定义:软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。
    软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

    2.软件测试的目的:
    测试是程序的执行过程,目的在于发现错误。
    确保产品完成了它所承诺或公布的功能
    确保产品满足性能和效率的要求
    确保产品是健壮的和适应用户环境的

    3.软件测试的意义:
    解放程序员和售后服务人员
    软件测试可以降低软件质量风险,使程序员能够更专心于解决程序的算法和效率;同时经过严格检验的完整产品也减轻了售后服务人员的工作量。

    4.软件测试流程:
    需求分析
    制订测试计划
    设计测试用例与编写
    实施测试
    提交缺陷报告
    生成测试总结和报告

    5.测试流程图:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    单元测试 集中对用源代码实现的每一个程序单元进行测试,检查每个程序模块是否实现了规定的功能,保证其能正常工作。

    集成测试是把已进行过单元测试的模块组装起来进行测试,目的在于检验与软件设计相关的程序结构问题。

    确认测试是检验所开发的软件是否满足了需求规格说明中确定了的各种功能和性能需求,以及软件配置是否完全和正确。

    系统测试的主要任务是把已经经过确认的软件纳入实际运行环境,与其他系统的成分(如数据库、硬件和操作人员)组合在一起进行测试。

    验收测试是检验软件产品的最后一关,在这一环节,测试主要从用户的角度着手,参与者主要是用户和少数程序开发人员。

    6.测试工作流程:
    (1)产品人员设计完原型和文档后,召开需求评审会,参会人员有开发,测试,产品。需求评审后之后,会产生一个完善之后的原型和需求文档。
    (2)测试组负责人需要依据需求文档,项目周期、项目特点、工具、人员安排制定测试计划。
    (3)测试人员就开始写测试用例(需要有冒烟测试用例和普通的测试用例),在写用例过程中会产生一些疑问,要及时和产品人员确认清楚,并要求他们回归需求文档。(开发就开始概要设计和编码)。
    (4)测试人员完成用例后,组织测试用例评审。参与人员有开发,测试,产品。
    (5)等待开发提交测试版本,提交后优先执行冒烟测试。冒烟测试的结果,需要邮件周知相关人,开发,测试,产品,其中重要的是开发领导,测试领导和产品。冒烟不通过等待开发重新提交版本,冒烟通过了进入执行用例进行测试阶段。
    (6)测试阶段会发现一些问题,比如需求定义不明确,业务逻辑有冲突,要和相关人员沟通并定义清晰,得到结论后必须要求产品人员更新文档。
    (7)每个人负责的模块测试结束后,小组内部要进行交叉测试(此时会进行一些性能测试)。
    (8)测试通过后提交产品验收。产品验收期间协助产品验收。
    (9)产品验收完毕后,项目部署仿真环境。此时需要线上的账号,所以一般也是产品和业务人员验收为主,各个公司情况不同,有些会给测试人员分配账号,进行基本流程的测试(细节视公司情况而定)。
    (10)仿真环境ok了,部署线上。
    (11)有些公司从测试环境提交验收的时间点开始,会要求写一些操作手册之类的文档,一些测试的报告,比如bug统计,bug的覆盖。

    7.按照开发阶段分,可以分为哪几 种?按照测试手段来分为几种?测试按照技术划分,可以分大为同为哪几种?
    单元测试、集成测试、系统测试、确认测试,验收测试
    分为手工测试和自动化测试
    黑盒,白盒,灰盒

    展开全文
  • 软件测试

    2020-04-09 10:24:16
    测试流程 测试环境搭建 快速熟悉项目 测试计划编写 测试方案编写 测试设计 测试执行 测试报告
  • 软件测试需要具备的知识体系(个人总结)

    万次阅读 多人点赞 2018-09-10 14:15:25
    一、软件的生命周期(SDLC,Systems Development ...软件测试;运行与维护 生存周期划分  各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不 ...
  • 软件测试自学指南---从入门到精通

    万次阅读 多人点赞 2013-07-26 10:48:22
    越来越多的人加入了测试大军中,很多人也想通过自学来学习软件测试技术加入这个行业,但是现在软件测试的书籍越来越多,也良莠不齐,而且软件测试涉及的技术也越来越多。本文主要说明的是从事软件测试行业需要必备的...
  • 软件测试: 用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。 软件测试是为了发现错误...
  • 软件测试方法

    万次阅读 2016-04-03 23:23:25
     软件测试方法 1. 软件测试方法包括:白盒测试(White Box Testing)、黑盒测试(Black Box Testing)、灰盒测试、静态测试、动态测试。 2. 白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的...
  • 笔者在做软件测试过程中,最初对测试报告的认知就是一个用于结项的可有可无的形式文档,因此只是根据公司提供的模板依葫芦画瓢完成了事。但当开始参与ISO的评审、CMMI3等后,开始认识到软件测试报告远非一种形式,更...
  • 软件测试全套教程,软件测试自学线路图

    万次阅读 多人点赞 2020-06-29 11:31:36
    软件测试软件测试是为了发现程序中的错误而执行程序的过程。 通俗的说,软件测试需要在发布软件之前,尽可能的找软件的错误,尽量避免在发布之后给用户带来不好的体验,并要满足用户使用的需求。 现在市面上...
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友

    万次阅读 多人点赞 2020-04-19 20:48:45
    这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经...
  • 软件测试基础知识总结(一)

    万次阅读 多人点赞 2015-08-25 16:55:52
    第一部分:软件评测知识 1. 软件质量与软件测试 软件测试:在规定条件...软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作; 质量保证:通过预防、检查与改进来
  • 软件测试笔试面试题目完全汇总

    万次阅读 多人点赞 2019-03-22 22:41:43
    1、软件测试的流程 2、web测试和APP测试的区别 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的。那么区别在哪里呢? 由于载体不一样,所以系统测试和一些细节可能会不一样。 那么我们就要先...
  • 软件测试--用例编写

    万次阅读 多人点赞 2018-08-15 18:47:30
    测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。 在这里我们不讨论以上的...
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...
  • 问:软件测试的原则? 答:https://blog.csdn.net/weixin_30363263/article/details/102986878 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 1、将问题提交到缺陷...
1 2 3 4 5 ... 20
收藏数 1,173,853
精华内容 469,541
关键字:

软件测试