草庐IT

物联网(IoT: Internet of Things)测试:挑战、工具和测试方法

python测试开发 2023-11-04 原文

我们已经不再使用开关来控制灯光,已经不再在报刊亭支付提交收费,我们一直在智能地监测我们的健康状况,更有效地跟踪车辆的移动,还有很多在列表中。

什么是物联网(IoT: Internet of Things)?

物联网是利用嵌入式电子器件、微芯片等连接车辆、家用电器、医疗设备,收集和交换不同种类的数据,被称为物联网。这项技术允许用户通过网络远程控制设备。

物联网在现实生活中实施的一些例子如下。

  • 可穿戴设备。

可穿戴设备,如Fitbit手环和苹果手表,很容易与移动设备同步。

这些有助于捕捉必要的信息,如健康、心率监测、睡眠活动等。这些也有助于将数据、通知从移动设备上显示出来。

  • 基础设施和开发。

使用CitySense这样的应用程序,更容易获得实时的户外照明数据,并根据这些数据,打开或关闭路灯。还有各种应用程序,以便在复杂的城市布局中控制交通信号和停车场的可用性。

  • 医疗保健。

有许多应用,以便监测病人的健康状况。

根据基准数据,这些服务可以控制一天中不同时间的药量。有一些应用程序,如UroSense,可以监测病人体内的液体水平,并根据需要启动液体转移。同时,数据可以通过无线方式传输给各利益相关方。

物联网中使用的技术

以下是物联网中最常用的几项技术。

  • RFID[射频代码 Radio Frequency Code]标签和EPC[电子产品代码Electronic Product Code]。
  • NFC[近场通信 Near Field Communication]被用来实现电子设备之间的双向互动。这基本上是针对智能手机的,主要用于进行非接触式支付交易。
  • 蓝牙。这是在短距离通信。主要用于可穿戴技术。
  • Z-Wave。这是一种低功率射频通信技术。这主要用于家庭自动化、灯具控制等。
  • WiFi:这是最常用的物联网选择。在局域网上时有助于无缝地传输文件、数据和信息。

测试物联网

让我们举一个医疗健康跟踪系统的例子,其中仪器监测健康、心率、液体摄入的细节,并向医生发送报告。这些数据被记录在系统中,在需要时可以查看历史数据。

医生可以根据这些数据启动药物摄入和液体补充。这可以从医疗设备所连接的任何设备[电脑或移动设备]上远程触发。

  • 可用性。

    • 每个设备的可用性。
    • 足够便携,可以移动到医疗的不同部分。
    • 足够智能,不仅可以推送通知,还可以推送错误信息、警告等。
    • 记录所有的事件,以便向最终用户提供清晰的信息。如果它不能做到这一点,系统也应该把这些事件推送到数据库中存储。
    • 显示通知和处理显示的问题。
    • 显示数据、处理数据、从设备上推送工作任务方面的可用性应该被彻底测试。
  • 物联网安全。

    • 物联网是以数据为中心的,所有连接的设备/系统都是基于可用的数据来操作。
    • 当涉及到设备之间的数据流时,数据在传输时总是有可能被访问或读取。
    • 设备传输到另一个设备时是否受到保护/加密。
    • 有用户界面的地方,我们需要确保有密码保护。
  • 连接性。

    • 必须一直可用,并应与老板和用户有无缝连接。
    • 连接性,数据传输,从设备上接收工作任务,在连接正常运行时应该是无缝的。
    • 连接中断的情况。不管系统和网络有多强大,都有可能出现系统断线的情况。作为一个测试人员,我们也应该测试离线情况。一旦系统在网络上不可用,必须有一个警报,可以提示医生,使他们可以开始手动监测健康状况,而不是依赖系统,直到它恢复。另一方面,系统中必须有一个机制,可以在离线期间将所有的数据储存在其中。一旦系统上线,所有的数据都应该被传播出去。在任何情况下都不应该有数据丢失。
  • 性能。

    • 2-10个病人进行测试,数据传播到10-20个设备。
    • 180-200个病人被连接到系统时,被传播的数据要比测试的数据大得多。
    • 作为测试人员,我们需要确保系统的性能是一样的,即使增加的数据被传播了。
    • 测试监控工具,以显示系统的使用情况、电力使用、温度等。
  • 兼容性测试。

    • 多个操作系统版本,浏览器类型和各自的版本,几代设备,通信模式[例如,蓝牙2.0,3.0]是物联网兼容性测试的必要条件。
  • 试点测试。

    • 在实验室测试才能确保产品/系统工作正常。但是,当暴露在实时条件/步骤/场景中时,这可能会适得其反。
    • 系统被暴露在真实领域的有限数量的用户面前。他们使用应用程序并对系统进行反馈。
  • 合规测试。

  • 升级测试。

    • 物联网是多种协议、设备、操作系统、固件、硬件、网络层等的组合。
    • 当进行升级时,无论是对系统还是对上述任何涉及的项目,都应进行彻底的回归测试/采取战略,以克服与升级有关的问题。

参考资料

物联网测试的挑战

  • 硬件-软件网

物联网是一个架构,它在各种硬件和软件组件之间紧密耦合。不仅仅是软件应用系统,硬件、传感器、通信网关等也发挥着重要作用。

只有功能测试并不能帮助完全认证系统。在环境、数据传输等方面总是相互依赖的。因此,与测试通用系统[只有软件/硬件组件]相比,它成为一项繁琐的工作。

  • 设备交互模块

由于这是一个不同的硬件和软件的架构,它们必须实时/近乎实时地相互交谈。当它们都相互集成时,诸如安全、向后兼容、升级问题等就成为测试团队的挑战。

  • 实时数据测试

正如我们前面所讨论的,试点测试/监管测试对于这样的系统是强制性的,要获得这样的数据也变得非常困难。

作为测试团队,获得监管检查点或让系统部署在试点是非常困难的。如果像我们的例子一样,系统与医疗保健有关,这一步就变得更加艰难。所以,这对测试团队来说是一个很大的挑战。

  • UI

物联网分布在属于每个平台的设备上[iOS, Android, Windows, linux]。现在,在设备上测试可以做到,但在所有可能的设备上测试几乎是不可能的。

我们不能忽略用户界面从我们不拥有或模拟的设备上被访问的可能性。这是一个难以克服的挑战。

  • 网络可用性

网络连接起着至关重要的作用,因为物联网是关于数据一直在以更快的速度进行通信的。物联网架构必须在所有类型的网络连接/速度中进行测试。

为了测试这一点,大多使用虚拟网络模拟器来改变网络负载、连接性、稳定性等。但是,实时数据/网络总是一个新的场景,测试团队不知道从长远来看瓶颈会在哪里发展。

物联网测试工具

  • 软件。

    • Wireshark。这是一个开放源码的应用程序,用于监测接口的流量,源/目的主机地址等。
    • Tcpdump。这是一个类似于Wireshark的工作,只是它没有GUI。这是一个基于命令行的工具,帮助用户显示在网络上传输或接收的TCP/IP和其他数据包。
  • 硬件。

    • JTAG加密狗。这类似于PC应用中的调试器。这有助于调试目标平台的代码,并一步一步地显示变量。
    • 数字存储示波器。这是用来检查各种带有时间戳的事件,电源中的故障,信号完整性检查。
    • 软件定义的无线电。这是用来模拟大范围的无线网关的接收器和发射器。

对我们周围的发展中世界来说,物联网是一个不断增长的市场,有很多机会。当物联网成为测试人员在发展世界中生存的必要条件时,时间并不遥远。

启用物联网的小工具、智能设备应用程序和通信模块在研究和评估各种物联网服务的性能和行为方面发挥着重要作用。

启用物联网的设备和服务的不良设计会阻碍应用程序的正确运作,并反过来对终端用户的体验产生负面影响。

小结

物联网测试方法可以根据所涉及的系统/架构而有所不同。测试人员应该更加专注于 "测试即用户"[TAAS]方法,而不是基于需求的测试。

物联网测试的另一个主要角色是集成测试。如果集成测试计划足够准确和稳健,能够抓住系统中的缺陷,那么物联网就是成功的。

物联网测试可能是一项艰难/具有挑战性的工作,但是,对于测试团队来说,对如此复杂的设备、协议、硬件、操作系统、固件等进行认证也是非常令人兴奋的。

有关物联网(IoT: Internet of Things)测试:挑战、工具和测试方法的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  6. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  7. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  8. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  9. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  10. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

随机推荐