软件测试中白盒测试的优缺点是什么?

news2024/9/27 12:08:28

白盒测试的优缺点白盒测试在计算机领域行业用以检查程序的状态,确定实际运行状态与预期状态是否一致,来看看白盒测试的优点和缺点是什么吧。

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖每条语句至少执行一次。
  2.判定覆盖每个判定的每个分支至少执行一次。
  3.条件覆盖每个判定的每个条件应取到各种可能的值。
  4.判定/条件覆盖同时满足判定覆盖条件覆盖。
  5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
  6.路径覆盖使程序中每一条可能的路径至少执行一次。

白盒测试的方法总体上分为静态分析方法和动态分析方法两大类。

静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,有无冲突或者歧义。

动态分析是当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。

三步法1. 根据代码的功能,人工设计测试用例进行基本功能测试;2. 统计白盒覆盖率,为未覆盖的白盒单位设计测试用例,实现完整的白盒覆盖,比较理想的覆盖率是实现100%语句、条件、分支、路径覆盖;3. 自动生成大量的测试用例,捕捉"程序员未处理某些特殊输入"形成的错误。

第1步的测试用例通常是现成的,因为详细设计文档会规定程序的基本功能,没有文档的,程序员在编程时也要想清楚程序的功能,这些基本功能就是基本测试用例;第2步是在第1步的基础上,检查未覆盖的白盒单位,由于未覆盖的逻辑单位通常对应未测试的等价类,因此第2步可以找出第1步所遗漏的测试用例;第3步用自动动态测试弥补第2步的固有缺陷。

"三步法"尽量避免重复工作,白盒方法和黑盒方法相结合,人工方法和自动方法相补充,如果第2步的覆盖率比较理想,那么基本上可以保证找出所有等价类。在开发过程允许的限度内,"三步法"已接近极限,当得起"彻底测试"四个字。

白盒测试优点:

  (1)迫使测试人员去仔细思考软件的实现。

(2)可以检测代码中的每条分支和路径(3)揭示隐藏在代码中的错误。
  (4)对代码的测试比较彻底。
  (5)让软件最优化。

白盒测试缺点

  (1)昂贵。

(2)无法检测代码中遗漏的路径和数据敏感性错误。
  (3)不验证规格的正确性。

目前测试行业现状

软件越来越多,要靠质量取胜,就倒逼测试人员需求越来越大

使用软件产品的过程中,出现影响用户体验的问题,会大大减少用户的粘性和信心,给企业带来不可估量的损失。

通俗来说,软件测试,就是测试软件的过程,包括软件功能、易用性、性能、安全等质量维度的测试。

保障软件产品正式发布后的质量,提升用户对产品的体验和信心。
在这里插入图片描述
但软件给我们带来极大的便利的同时,也给人们带来各种各样的麻烦。有兴趣可以去搜一下软件业最著名的十大Bug,都是惊天动地。在我国,由于很多软件企业存在着“重开发、轻测试”的现象,造成日后软件产品质量问题频出。只要留心我们生活中的日常,就会发现软件bug导致的各种麻烦:比如红绿灯控制系统bug,导致交通瘫痪;地铁控制系统出bug,导致人们上班迟到;关键时刻手机卡顿死机,导致很多正常的生活工作无法开展……

随着国内软件行业的深入发展,人们生活水平越来越高,这就导致人们对软件质量的要求也越来很高,这就倒逼软件企业要靠软件产品质量去占领市场,随之推动的就是企业对测试人员的需求越来越大。

测试人才缺口30万,最近两年薪资频频跳涨

与之相反,由于软件测试最近几年才引起重视,大学教育完全没有跟上,就算是培训机构,软件测试相关培训也是少之又少,软件测试人才严重短缺,导致很多企业只好退而求其次拿软件开发人员急用。据中华英才网显示,目前软件测试人才缺口在30万人以上。人才缺口必然导致的是薪资的跳涨。据职友集统计,软件测试人才在2015年和2017年这两年,行业薪资跳涨率分别达到了40%和33%。

在这里插入图片描述

当前自动化测试已成风口,人才奇缺

测试其实可以细分为很多种类。仅按照是否需要编程这个维度来分,可以分为手工测试,自动化测试,测试开发。目前测试领域存在突出矛盾:一方面企业需要技术层级稍高的测试人才,比如自动化测试,性能测试;另一方面却是目前测试从业人员因知识不成体系,只能从事简单的手工测试工作。所以自动化测试人才奇缺,只要掌握了一定的自动化测试技术,往往就会被市场争抢,当然也就能高薪资。

所以对于我们新人来说,首先选择了正确的行业,就要考虑如何坚持下去。做好自己的职业规划可能是我们想要在这个行业快速成长的重要事情。

测试行业的发展规划

在这里插入图片描述
整体职业规划分为如下几个阶段:

第一阶段:初级测试工程师

一般刚刚入门,熟悉基本的测试流程,入门薪资一般在6000-8000元之间。

具体工作是:

(1)按照测试方案和流程对产品进行功能测试,检查产品是否有缺陷。
(2)具有一些手工测试经验,开发测试脚本并开始熟悉测试生存周期和测试技术

第二阶段:中级测试工程师

初级测试工程师积累1-2年工作经验后,可逐步发展为中级测试工程师,一般月薪能达到8K-15K
之间。

具体工作是:

(1)编写测试方案,测试文档、与项目组一起制定测试阶段的工作计划。
(2)项目完整流程和整体质量把控介入、和开发高效沟通以及关系处理
(3)能够在项目中合理利用测试工具来完成测试任务。能够独立编写自动测试脚本程序并担任 测试编程初期的领导工作

第三阶段:高级测试工程师/测试组负责人

一般拥有3-4年测试经验,可以对初级测试工程师指导工作,一般月薪可以达到15-25K左右。

高级测试工程师具体工作是:

(1)帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。
(2)熟悉产品代码和产品整体架构设计,项目整体流程体系改进
(3)参与同行的评审(软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当 顾问。
(4)了解自动化持续集成并能进行系统运用

测试组负责人:
除了技术上需要达到高级测试工程师的水平外,同时在管理上有额外的要求:

(1)设计测试计划及进行测试项目的管理
(2)项目及测试流程和工具的选择及优化
(3)担负一些进度安排和工作规模/成本估算职责

第四阶段: 测试专家/测试经理

一般有6—10年经验的测试工程师,薪资在30K-50K之间。

测试专家一般是在性能、或者安全、或者测试开发方向等特定领域有技术专长的测试人员。具体
工作是:

(1)性能测试整体方案设计,软件系统性能问题定位和性能优化,内存优化及分析数据溢出等
(2)分析系统的安全漏洞等
(3)自动化持续集成体系建设等

而测试经理的工作重心主要在管理方向,具体工作如:

(1)负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。
(2)负责团队测试项目的质量及控制。
(3)构建测试团队及进行测试团队的管理

软件测试是一种入门起点较低、上手迅速、且发展空间比较大的职业,因此,对于很多学生而言,作为进入IT就业的初级岗位,是非常合适的

一旦选择之后,就需要坚持下去,此时可以给自己一个长期的目标。

软件越来越多,要靠质量取胜,就倒逼测试人员需求越来越大

对于刚刚入行的新人,这个时期是一个全面熟悉期,最能够学习到新的知识,也最有拼搏的热情和动力。建议大家可以借着这股冲劲,尽可能了解所在领域的全貌,了解各个主要分支的内容、特性、优势、局限性等等,并考察自己当前的工作环境,结合个人匹配程度和兴趣爱好,根据前述内容调整自己的规划。

对于测试行当而言,技术方面一般有几类:黑盒测试、白盒测试、自动化测试、测试工具、专用业务技能等;相关的管理方面一般有:测试管理、质量管理、项目管理等。

面对上述形形色色的方向,建议大家可以都稍稍了解下内涵,然后确定1—2个,作为中长期的主攻方向,达此标准,基本已经实现了入门,至于能否进得厅堂,就要看后期的努力了。

升华阶段(老手后5年—10年)

正因为有前期的细节的背景的支撑,此时,你需要努力提升自己的宏观把握能力。当然,一般人是技术做得越好,管理的时候,越容易切中项目要害。但是,对于从技术上来的人,关键是要开始培养和人打交道的能力。此阶段的关键是,需要逐步形成自己的管理风格,具备协调并行事务的能力。

这个阶段,也可能少数的人会选择离开具体的企业,而开始从事测试咨询,那是一个充满挑战的崭新开始,也必须有前期的积累方能胜任。

提高阶段(入门后3年—5年)

对于入门后选择管理还是选择技术,关键是看对自己的长期的定位了。不过,建议当前阶段还是技术为重吧。毕竟,在一个技术环境中,要做好管理,必须要有扎实的基础。

本阶段是人最容易懈怠的阶段。毕竟,刚刚入行的热忱早已被日复一日的繁复工作给冷却,有了一定的工作经验,胜任本职,对于大多数人而言,绝不是问题。家庭、娱乐方面开始占据了业余生活的主流。可是,毕竟大家还很年轻,大多数人此时也不过20多岁,就此懈怠也是非常可怕的。因此,有规划的提高自身核心竞争力,在这个时候尤为关键。

对于选择做技术的人而言,这个阶段的达成标准,一般至少要能够熟悉你所选技术方向的大多数技术细节,“细节决定成败”嘛,虽然把握全局的能力是必要的,但是作技术而言,倘若不能钻的很细很深,恐怕也很难以高手自居吧。

对于选择做管理的人而言,建议是:此阶段接触管理的理念,并可以介入管理,但是此阶段不宜全面进入管理。学习管理的理念是非常重要的,其实管理更多一种思维和做事的方式,这门学问很深入,也不像技术,会不会是那么的显著,因此,建议多看多学,取长补短,并努力形成自己的做事风格。高级软件测试工程师,测试组长等,都是不错的含有技术特征的管理职位,此时的你应该能够胜任于此。

测试工程师—软件质量守护者!

种一颗树最好的时间是10年前,其次是现在!
原地徘徊一千步,抵不上向前迈出第一步!
尝试改变自己和未来,你的人生永远掌握在自己手中!
改变命运,软件测试是你进入IT行业的最佳快车道!

软件测试学习路线图详细介绍

第一阶段 功能测试

学前导读:学习本阶段内容,可全流程功能测试解决方案、Web自动化测试解决方案、数据分离解决方案、自动化测试报告解决方案、日志收集解决方案。

1.2022全网首发、最适合新手的软件测入门到实战教程上线啦!

真正的从入门到精通,包含了基础+项目实战,所有案例实战操作均图文并茂,真正实现一套全通关!

软件测试2022最新视频教程,软件测试基础入门到项目实战(涵盖软件测试基础+黑马头条项目实战)

2.软件测试入门到精通

软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。本课程共5天,针对零基础小白录制。零基础入门的必学课。

软件测试从入门到精通_软件测试基础教程

3. Linux系统2天快速入门

本视频包含Linux操作系统介绍、Linux的常用命令、vi编辑器。学习掌握本阶段内容,可具备Linux项目搭建能力。

Linux系统操作教程2天快速入门linux项目搭建

4. 软件测试MySQL数据库知识精讲+项目实战

本视频包含数据安装,数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练。学习本课程内容,可具备数据库校验能力;还可以快速、规范的掌握数据库增删改查操作。

软件测试工程师必备MySQL数据库,mysql系统精讲+课后练习

第二阶段 Python编程

学前导读:学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

10天玩转Python软件测试

学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。

Python自动测试教程,python从基础到UnitTest框架管理测试用例

第三阶段 UI自动化

学前导读:ui自动化大体分为web自动化和App自动化,在自动化测试领域中占比很大,经常使用。

1. 软件测试web自动化测试精讲与实战

本课程将教会大家搭建Web自动化和移动自动化测试环境;掌握Web自动化测试流程和脚本编写;掌握移动自动化测试中元素的定位方法、元素操作和手势操作;熟练掌握ADB工具的使用; 掌握PO模式的设计思想,并能够对页面进行封装;掌握数据驱动的实现方式; 能够在实际项目灵活运用自动化的相关技术。

软件测试web自动化测试,Web自动化流程精讲和移动自动化测试环境

2.零基础入门移动自动化——Appium框架

本课程会详细讲解Appium框架,Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。

零基础入门移动自动化测试——Appium框架

3. 轻松教你使用Appium进行IOS真机自动化测试

本套课程,将环境安装的步骤和注意事项呈现给学员,模拟器到真机实操,都进行演示讲解。内容丰富,生动形象,学完即可完成IOS端环境安装及实操。

轻松教你使用Appium进行IOS真机自动化测试

第四阶段 接口自动化

学前导读:接口测试是所有自动化测试应用频率最高部分。此阶段共分成14个部分进行详讲。

接口测试精讲+传智健康实战教程

本教程会涉及HTTP,Postman,Pymysql,requests库,集成UnitTes,Dubbo等诸多工具,最后用传智健康项目进行本阶段项目实战。

4天玩转接口测试,接口重点全解析+传智健康项目实战(包含requests库,集成UnitTes,Dubbo等诸多工具)

第五阶段 性能测试

学前导读:性能测试属于高级测试范畴,对于薪资的提升帮助很大,本阶段视频讲解性能测试环境搭建,JMeter工具的使用,性能测试监控、分析和调优方法。

4天快速入门性能测试

本视频通过性能测试基础理论及JMeter工具的学习;通过轻商城项目实战,带学员掌握性能测试需求分析、性能测试计划、测试用例设计、测试脚本开发、性能监控、性能分析和调优、性能测试报告总结。

性能测试全套教程,4天快速入门性能测试+项目商城实战(含JMeter工具等)

第六阶段 综合项目强化

学前导读:通过微信小程序、金融项目两个实战项目综合强化功能测试、接口测试、性能测试。

1. 微信小程序自动化测试实战

本视频涵盖:微信小程序基础介绍、Ego微商项目介绍、Ego微商项目部署、Ego微商小程序计划篇、Ego微商小程序设计篇、Ego微商小程序执行总结篇、Ego微商小程序接口测试篇、持续集成。

软件测试微信小程序自动化测试实战

2. 软件测试4天搞定金融项目

本视频讲解金融项目功能测试解决方案、真实项目测试体验解决方案、复杂业务接口测试解决方案 接口加解密测试解决方案、数据分离解决方案 持续集成解决方案、自动化测试报告解决方案、高并发测试解决方案。

软件测试4天快速搞定金融项目功能测试实战教程

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

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

相关文章

Android学习进阶——Dagger 2 使用及原理

概述 Dagger 2 是 Google 开源的一款依赖注入框架,它的前身是 square 的 Dagger 1,Dagger 2 在 Android 中有着较为广泛的应用。 Dagger 2 基于 Java 注解,采用 annotationProcessor(注解处理器) 在项目编译时动态生…

AS-REPRoasting

讲在前面: 最近笔者发布的几篇文章,大家不难发现,都是和kerberos协议相关的。国内外各类的研究员对于该协议的研究愈发的深入,从该协议产生的漏洞就会越来越多甚至越来越严重。当然这只是笔者的一点拙见。 在介绍了Kerberoastin…

21天Java开发速成篇-Java从入门到大师01快速入门

Java 简介 win10安装 JDK 下载和安装 访问 oracle 官网https://www.oracle.com/ 建议下载解压版,下载完毕后,解压到一个没有中文和空格的目录即可 配置 Path 你可以选择一个喜欢的目录,我的解压目录是 d 盘根目录下,如图所示 其中 b…

创邻Galaxybase入选 2022 爱分析《中国数据智能最佳实践案例》

随着2022年进入收官时间,创邻科技喜报频传。近日,“2022爱分析中国数据智能最佳实践案例”评选结果出炉,经过申报、初评、调研、终评等多轮角逐,创邻科技凭借“中国民生银行万象知识图谱应用平台”成功获评2022中国数据智能最佳实…

FPGA知识汇集-FPGA时序基础理论

对于系统设计工程师来说,时序问题在设计中是至关重要的,尤其是随着时钟频率的提高,留给数据传输的有效读写窗口越来越小,要想在很短的时间限制里,让数据信号从驱动端完整地传送到接收端,就必须进行精确的时…

Kubernetes:minikube操作总结

Kubernetes:minikube操作总结minikube statusminikube nodeminikube status 查询集群状态 $ minikube statusminikube node 新增节点 注意:minikube 仅仅是基于本地 standalone 部署一款简易 k8s 集群,因此添加节点,也仅仅是本…

【多尺度条形池化与通道注意力的图像语义分割】论文精讲

论文:论文链接 出处:中国图象图形学报 目录 1.摘要 2.网络结构 2. 1 改进的条形池化技术 2.2 二阶通道注意力机制 3.结果 1.摘要 目的 针对自然场景下图像语义分割易受物体自身形状多样性、距离和光照等因素影响的问题,本文提出 一种新的基于条形池…

windows搭建gitblit服务器

使用Gitblit搭建属于局域网的Git服务器,方便程序代码的联合开发及程序代码版本管理。 环境:1、Windows 64位操作系统。 2、jdk1.8.0(需要java环境,已安装请忽略) 3、Git-2.24.1.2-64-bit(git工具&#x…

linux系统编程:暂停函数pause

pause函数 该函数功能主要是暂停进程,它的返回值总是-1。 使用方式: (1)首先使用signal函数提前注册一个中断函数,该函数用于将函数指针和信号做一个绑定; (2)当程序进行执行pause&#xff0…

【Bp2Lua】深入理解蓝图

【Bp2Lua】深入理解蓝图 做 Bp2Lua 过程中的副产物,蓝图在连连看背后隐含的操作 有几点想说明的 蓝图会隐含一些操作,前端节点图是看不出来的,但是后端字节码会一览无余Bp2Lua 本质是 字节码 ToLua,其实 Bp2Lua 根本不关心也不…

策略模式(strategy pattern)

背景 一、一个具体实现范例的逐步重构 补血道具(药品):a) 补血丹:补充200点生命值;b) 大还丹:补充300点生命值;c) 守护丹:补充500点生命值将Fighter,F_Warrior,F_Mage 单独写在一个文件中。 Fighter.h …

一步一步学爬虫(4)数据存储之文本存储

一步一步学爬虫(4)数据存储之文本存储4.1 TXT纯文本文件存储4.1.1 本节目标4.1.2 基本实例4.1.3 打开方式4.1.4 简化写法4.1 TXT纯文本文件存储 将数据保存到 TXT 文本的操作非常简单,而且 TXT 文本几乎兼容任何平台,但是这有个缺…

Spark环境搭建(Hadoop YARN模式)

前言 按照前面环境部署中所学习的,如果我们想要一个稳定的生产Spark环境,那么最优的选择就是构建:HA StandAlone集 群。 不过在企业中, 服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有Hadoo…

AD软件绘制不规则焊盘的器件封装

网上有很多关于AD软件绘制不规则焊盘的帖子,搜了一些帖子看了一下,感觉不太对。严格意义上AD软件是不能绘制不规则的焊盘的,至少目前用的AD软件不支持。为什么这么说呢? 我提一个需求:假如我在PCB文件中需要随意的添加…

企业选择SOP作业指导书系统的目的和意义

SOP是将作业指导流程予以说明规范,让作业人员有一个标准的作业准则,以达到作业的标准一致性。也是一种管理模式,通过对过程的标准化操作,减少和预防差错和不良后果的发生。通过动作的解析、比较、分析,循环作业分析等输…

MIT6.830-2022-lab4实验思路详细讲解

目录前言一、实验概览Exercise 1:Granting LocksExercise 2:Lock LifetimeExercise 3:Implementing NO STEALExercise 4:TransactionsExercise 5:Deadlocks and Aborts总结 && Debug记录前言 到lab4事务,这一块应该是数据库中概念比较多&#x…

2022/12/30总结

今日学习了二叉树有关知识。 二叉树 二叉树通俗来讲就是一个有俩个指针的链表。他们大多长这个样子: 这里还有俩个概念了,二叉树分为完全二叉树和满二叉树 上面所说的是满二叉树,顾名思义就是每个父节点都相应的有俩个指针,通常…

基于springboot+Vue的宿舍管理系统前后端分离(程序+详细文档+数据库)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

前端devops——利用gitlab实现CI/CD自动化部署

目录 前言 一、前期准备 1、开启虚拟服务 2、下载并安装docker 二、开始部署 1、安装gitlab 2、修改默认账号登录密码 3、修改项目clone地址 三、Gitlab CI/CD 1、安装并运行gitlab-runner 2、执行runner 3、将项目注册到gitlab-runner 1、获取token 2、执行注册 …

ETL数据清洗

大多数据仓库的数据架构可以概括为: 数据源-->ODS(操作型数据存储)-->DW-->DM(data mart) ETL贯穿其各个环节。 ​一、数据抽取: 可以理解为是把源数据的数据抽取到ODS或者DW中。 1. 源数据类型: 关系型数据库,如Or…