嵌入式软件测试(黑盒测试)---三年嵌入式软件测试的理解

文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要兼顾测试APP端,WEB端功能,web后端接口(postman),只是测试业务重心还是在嵌入式软件上。

为什么测试的这么杂呢,其实这些全部加起来只是一个产品,只是因为目前就只有我一个测试,所以整套系统都是由我一个人来测,就拿我现在这家公司做的一个视频会议系统来说吧,整套系统包含有硬终端(linux端),app端,web端(用于后台账户/会议管理等),PC端组成。接触过嵌入式软件测试的同学应该都明白这些事,下面我就来说说自己这几年对嵌入式软件测试的理解和看法吧,欢迎留言补充或讨论,勿喷喔~~

什么是嵌入式系统?

嵌入式系统是一种"完全嵌入受控器件内部,为特定应用而设计的专用计算机系统"。

嵌入式系统是“用于控制,监视或辅助操作机器和设备的装置”。

嵌入式系统还可以定义为“以应用为中心,以计算机技术为基础,软硬件可裁剪,功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。”

嵌入式系统由嵌入式硬件和嵌入式软件两部分组成,硬件是支撑,软件是灵魂。

嵌入式系统按实时性分类,可分为非实时性,软实时性和硬实时性。其中硬实时性是指系统对响应时间有严格要求,如果响应时间不能满足,就要引起系统崩溃或致命错误;软实时性是指系统对响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。

什么是嵌入式软件?

嵌入式软件是基于嵌入式系统设计的软件,它是计算机软件的一种,同样由程序及其文档组成,可分为操作系统,支撑软件,应用软件三大类,是嵌入式系统的重要组成部分。

说的通俗易懂一点就是一套安装在带有linux系统的PCB板子上的软件。像这样:

图片

嵌入式软件的特征:

系统内核小

专用性强

系统精简

高实时性操作系统

基与硬件和软件的相辅相成

嵌入式软件测试与商用软件测试相同点和不同点(单从黑盒测试的角度来讲)

相同点:

嵌入式软件测试和商用软件测试的目的和原则是相同的,都是为了找bug,跟踪bug,验证bug,使产品实现需求文档上功能,满足用户需求。

不同点:

需要的测试环境不同。

测试嵌入式软件的时候,你需要准备的环境是一整套设备,里面可能包含电源,网线,高清线(各种视频传输线),交换机,摄像头,麦克风,U盘,路由器等等…。

测试商用软件可能就是一个安装包,或者是一个测试URL,你需要准备的可能就是一个电脑或者一部手机。

测试的思维不同。(要做到出现问题先自检)

这里的测试思维并不是说设计测试用例时需要的思维方式,而是在定位bug的时候,思维不一样。

在测试嵌入式软件的时候,如果出现某个功能无法实现,有可能是确实是功能实现问题,有可能是内存问题,有可能是硬件支持问题,有可能是驱动问题,有可能是网络问题,有可能是硬件物理接口问题。

虽然看似这些问题雨我无瓜,但是如果是硬件支持的问题,你抛出bug,开发排查完之后发现是你自己没有按照规格接入所能支持的硬件,到时候尴尬的是不是你;再比如POE网口如果没有接入支持POE的网线,造成问题是不是你的不专业了等等,我们既然是测试工程师,那就应该要有工程师的专业程度来完成工作。

在测试商用软件的时候,遇到功能无法实现,我们大部分情况下就是直接抛出bug给开发,附带bug截图,log和操作步骤,通常都好使。

需要的技能点不同

根据这几年的测试项目经验,发现嵌入式软件测试对计算机网络原理的应用比较频繁。

在测试嵌入式软件的时候,你要接入网线,进行网络配置,接入交换机,了解网络通信,数据传输等等…也就是说嵌入式软件测试你需要的是(扎实的软件测试理论和测试方法+计算机网络相关基础知识).

而测试商用软件的时候,由于环境搭建没有太复杂,涉及到计网相关的知识比较少,需要的往往是扎实的软件测试理论和测试方法。

嵌入式软件测试的自身特点和测试困难

目前系统资源有限

与硬件系统紧密关联

运行平台多样化

交叉式的测试模式

系统的安全性,可靠性,系统运行结果的正确性等等

嵌入式软件的测试策略与一般的商用软件有很大的区别

嵌入式软件测试难吗?跟商用软件测试相比哪个更加难度更高?

我感觉在黑盒测试中,嵌入式软件测试是要比商用软件测试难度高的,我只站在嵌入式软件的黑盒测试角度来发言。为什么这么说呢,我暂时只想到以下几点:

硬件平台不同导致测试难度增大,由于嵌入式软件是跟硬件平台紧密关联的,也就是说同一套软件,如果移植到另一个平台上,就要重头到尾的测试一遍,在工作量上就比商用软件大,出错几率也会提升,相应的测试难度也会提高一点。我就遇到一个项目需要跑在两个平台的情况。

测试环境导致测试难度增大,我可以很肯定的说,同一套设备在A环境操作正常,我只要换一个交换机,搭建一个B环境,就很有可能会出现bug,所以有经验的嵌入式软件测试同学在遇到客诉的bug时第一时间都是问当时的环境是什么,设备有哪些,操作步骤是什么,必要时采取将设备全部寄回来复现。

硬件平台性能导致测试难度增大,硬件平台的芯片性能是肯定没有电脑上的CPU这么吊的,所以在测试的时候,我们往往会出现一些硬件性能上的问题导致一些bug偶现,这对我们测试人员来说,想要找到一个偶现的bug是非常的难,需要采取工具来跟踪操作步骤打印log

外接设备导致测试难度增大,生活中基本上的嵌入式软件都是需要外接其他的设备的,比如接入U盘,摄像头,麦克风等等,在测试时如果发现某个工作无法实现,我们需要从三个方面去考虑,①:是不是软件的功能bug,②:是不是硬件物理接口损坏问题,③:是不是接入的外设与软件协议有问题或者驱动有问题,等等原因增加了测试难度。

最后一个导致测试难度大的原因就是嵌入式软件测试相对来说是比较独立于软件测试的,相关的资料也是比较少的,并不像商用软件测试一样,只要一搜索,就能找到测试方法和一些测试文章。嵌入式软件测试更多的是一个实战,每一个应用场所的嵌入式软件测试的思维方式不一样。

结尾:

测试也是一个有技术难度的岗位,需要不断的积累经验,老手测试和新手测试最大的不同就是老手测试可以很快的定位和发现bug,老手测试可以有更多的测试方法和测试策略去找到bug,有更好的测试管理经验和业务能力。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

第十三章 枚举类型和泛型

枚举类型可以取代以往的常用的定义方式,即将常量封装在类或者接口中,此外它还提供了安全检查功能。枚举类型本质上还剋以类的形式存在。泛型的出现不仅可以让程序员少写一些代码,更重要的是它可以解决类型安全问题。泛型提供了编译时的安全检…

redolog有什么用,是怎么工作的

redolog其实就是想干一件事:当一个事务commit了,那肯定是在内存中改了,但是在磁盘里未必。可能刚提交事务就宕机了,还没来得及写磁盘(并且也不会立刻写的,会隔一段时间才刷)。redolog就是要保证…

关于设计师的自我评价(合集)

设计师的自我评价篇一 本人接受过正规的美术教育,具有较好的美术功底及艺术素养,能够根据公司的需要进行设计制作,熟练掌握多种电脑制作软件,能够高效率地完成工作。本人性格开朗、思维活跃、极富创造力,易于沟通&…

软件测试必会:cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大🤣 01 为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意…

Selenium Wire - 扩展 Selenium 能够检查浏览器发出的请求和响应

使用 Selenium 进行自动化操作时,会存在很多的特殊场景,比如会修改请求参数、响应参数等。 本篇将介绍一款 Selenium 的扩展,即能够检查浏览器发出的请求和响应 - Selenium Wire。 简介 Selenium Wire 扩展了 Selenium 的 Python 绑定&…

24--泛型与Collections工具类

1、泛型 1.1 泛型概述 在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。 p…

Sectigo DV多域名证书能保护几个域名

多域名SSL证书不限制受保护的域名的类型,可以时多个主域名或者子域名,多域名SSL证书都可以同时保护,比较灵活。但是,多域名https证书并不是免费无限制保护域名数量,一把的多域名SSL证书默认保护3-5个域名记录&#xff…

云原生之深入解析强大的镜像构建工具Earthly

一、Earthly 简介 Earthly 是一个更加高级的 Docker 镜像构建工具,Earthly 通过自己定义的 Earthfile 来代替传统的 Dockerfile 完成镜像构建;Earthfile 就如同 Earthly 官方所描述: Makefile Dockerfile Earthfile在使用 Earthly 进行构建镜像时目前…

使用终端启动若依ruoyi

使用终端启动若依ruoyi 01 找到ruoyi-ui文件夹 02 cmd界面两个指令 npm i 下载完成后出现这个界面即为成功 npm run dev 加载结束后出现端口号即可 03 默认账号密码 访问localhost8080可得以上界面默认账号是admin默认密码是damin123

selenium元素定位与操作

说明:本篇博客基于selenium 4.1.0 在selenium中,想要对元素进行操作,一般需要如下步骤: 在浏览器中查看元素属性,便于selenium在页面中找到该元素在代码中创建元素对象元素操作、获取元素信息 查看元素属性 浏览器…

项目实战:自动驾驶之方向盘操纵

项目介绍 根据汽车前方摄像头捕捉的画面,控制汽车方向盘转动的方向和角度,这是自动驾驶要解决的核心问题。这个项目主要是通过使用深度神经网络解决一个回归问题。不同于分类、识别场景,回归问题中神经网络输出的是一个连续的值。 通过这个项目的学习,可以将神经网络用于通…

【ESP32填坑日记】问题篇⑧ VScode中提示无法使用compilerPath解析配置:“C:/xxx/xtensa-esp32-elf-gcc.exe“

关注星标公众号,不错过精彩内容 作者 | 量子君 微信公众号 | 极客工作室 问题描述 在编译成功,重启之后就编译不成功了,并报如图错误: 无法使用 compilerPath 解析配置:“C:/xxx/xtensa-esp32-elf-gcc.exe” 解决…

【软件工程】软件工程复习题库2023

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 SpringCloud MybatisPlus JVM 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 软件工程复习题库 一、选择题二、填空题三、判断题四…

数据结构 -- 堆

一.堆的概念 1.1 堆是什么 堆也叫做优先队列,一些按照重要性或优先级来组织的对象称为优先队列。 1.2 为什么需要堆 在现实生活中,存在许多需要从一群人、一些任务或一些对象中找出“下一位最重要”目标的情况。例如:在平时处理事情的时候我…

不同版本QT使用qmake时创建QML项目的区别

不同版本QT使用qmake时创建QML项目的区别 文章目录 不同版本QT使用qmake时创建QML项目的区别一、QT5新建QML项目1.1 目录结构1.2 .pro 文件内容1.3 main.cpp1.4 main.qml 二、QT6新建QML项目2.1 目录结构2.2 .pro文件内容2.3 main.cpp2.4 main.qml 三、两个版本使用资源文件的区…

鼠标响应突然不灵敏的检查方法

鼠标突然响应缓慢或者失灵,如下检测步骤: 1、首先排查电源问题,更换电池或者充电; 2、观察光标移动响应、鼠标左键响应、鼠标右键响应、鼠标滚轮等操作,哪些正常,哪些异常。 2、把鼠标接到别的机器上实验…

[Kubernetes]3. k8s集群Service详解

在上一节讲解了k8s 的pod,deployment,以及借助pod,deployment来部署项目,但会存在问题: 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod访问还需要端口转发Pod重创后IP变了,名字也变了针对上面的问题,可以借助Service来解决,下面就来看看Service怎么使用 一.Service详…

✺ch5——纹理贴图

目录 加载纹理图像文件纹理坐标在着色器中使用纹理:采样器变量和纹理单元纹理贴图:示例程序多级渐远纹理贴图各向异性过滤环绕和平铺透视变形材质——更多OpenGL细节补充说明 纹理贴图是在栅格化的模型表面上覆盖图像的技术。 它是为渲染场景添加真实感的…

functools.partial:Python中灵活函数部分应用的工具

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量。…

Python四种配色方案,适合科研的配色

1、Plasma(等高线图颜色)2、Inferno(黑热图颜色)3、Cividis(较好的配色方案,适用于色盲)4、Viridis(绿色主导的配色方案) 下面这四种配色是不需要指定的,Pyth…