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

文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌入式软件,同时需要兼顾测试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,一经查实,立即删除!

相关文章

深入探索Zookeeper的ZAB协议:分布式系统的核心解析

引言 自我进入软件开发领域以来,我一直对分布式系统充满着浓厚的兴趣。在这个领域中,Zookeeper无疑是一个备受关注的重要组件。作为一名资深的Java工程师,我有幸深入探索过Zookeeper的许多方面,其中最让我着迷的部分莫过于其核心机…

第十三章 枚举类型和泛型

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

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…

聊聊15年进入中专计算机的道路

仍记得笔者是参加2015年杭州市中考,优质高中的录取分数线是454分,而我439分,父亲想让我读个民办普通高中。而我将这个志愿排在了计算机专业之后。我成功进入了一所计算机中专。命运之轮就这样悄悄转动。 1、为什么当初选择计算机行业 中考没…

Halcon深度学习相关术语介绍

1、深度学习术语表一 序号 术语 解释 1 Adam Adam (adaptive moment estimation)是一种基于一阶梯度的随机目标函数优化算法,用于计算单独的自适应学习率。在深度学习方法中,该算法可用于最小化损失函数。 2 anchor 它们作为固定的参考边界框&am…

C语言第五十四弹---模拟使用strstr函数

使用C语言模拟使用strstr函数 定义:strstr 是一个 C 标准库函数,用于在一个字符串中查找另一个字符串的第一次出现位置。strstr 函数的声明如下: char* strstr(const char* haystack, const char* needle);它接受两个参数:haysta…

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

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

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

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

定义和使用类的许多重要方面的总结

11.7 总结 本章介绍了定义和使用类的许多重要方面,其中的一些内容可能较难理解,但随着实践经验的不断增 加,读者将逐渐掌握它们。 般来说,访问私有类成员的惟一方法是使用类方法。C使用友元函数来避开这种限制。要让函数 成为友元,需要在类声明中声明该函数,并在声明前加上关…

世界名画--陈列馆问题

世界名画--陈列馆问题 问题描述python解答位操作python代码 问题描述 哨兵布置问题。一个展馆由mn个矩阵阵列的陈列室组成,需要在陈列室中设立哨位,每个哨位上的哨兵除了可以监视自己所在陈列室外,还可以监视他上、下、左、右四个陈列室&…

C++对C语言数据类型的扩展

1.4 C对C语言数据类型的扩展1.4.1 结构体1.4.2 联合1.4.3 枚举1.4.4 布尔1.4.5 字符串 1.4 C对C语言数据类型的扩展 基本的数据类型 char、unsigned char、int、short、unsigned shor、long、unsigned long、float、double、long double与C语言相同。扩展了bool类型&#xff0…

使用终端启动若依ruoyi

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

selenium元素定位与操作

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

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

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

4070显卡配置ubuntu深度学习环境

本文主要记录一下自己深度学习环境的配置,具体的安装教程有很多,这里就不赘述了。 1.显卡型号 华硕 ATS GeForce RTX4070-o12G-GAMING 2.系统和驱动型号 ubuntu 20.04 显卡驱动版本:NVIDIA-Linux-x86_64-535.129.03.run 3.cuda和cudnn版…