`
yuun
  • 浏览: 62548 次
文章分类
社区版块
存档分类
最新评论

MQC功能测试大揭秘

 
阅读更多

摘要: 对于安卓自动化测试来说,功能测试是最基本也是最常用的方案,那么功能测试到底能做什么?有什么优点?以及如何做好功能测试? MQC 团队推出系列文章,为大家讲解 Appium 技术干货以及 MQC 功能测试服务。

一、 从Android自动化测试谈起

In software testing, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing. —— wikipedia

维基上对自动化测试的定义简单来说,就是通过软件来替代人来执行测试用例,并得到测试结果的过程。当然,对于自动化测试来说,包含的范围十分大的,对于服务端接口与代码接口来说,通常采用非Ui自动化的测试方法,如:Unit Test、API Test等等;对于包含Ui元素的完整App、GUI程序来说,Ui自动化的测试方法有:mock、功能测试等等。

对于安卓自动化测试来说,功能测试是最基本也是最常用的方案,那么功能测试到底能做什么?有什么优点?以及如何做好功能测试? MQC 团队推出系列文章,为大家讲解 Appium 技术干货以及 MQC 功能测试服务。维基上对自动化测试的定义简单来说,就是通过软件来替代人来执行测试用例,并得到测试结果的过程。当然,对于自动化测试来说,包含的范围十分大的,对于服务端接口与代码接口来说,通常采用非Ui自动化的测试方法,如:Unit Test、API Test等等;对于包含Ui元素的完整App、GUI程序来说,Ui自动化的测试方法有:mock、功能测试等等。

 

功能测试如何帮助改善产品质量

对于大多数敏捷开发团队来说,要完成对一款大型产品各个方面进行全方面的测试是十分困难的。一方面,我们需要根据每次变更有针对性的测试重点模块,那么必然会遗漏对其它模块的测试;另一方面,很多模块的测试工作是机械性的,如回归测试、性能测试、机型适配等等,全部交给人工测试将大大增加人工成本。

功能测试可以将测试开发从繁琐的重复劳动中解放出来,把精力集中到重点模块,同时有余力设计编写完善的测试用例,并通过功能测试提高测试覆盖率,降低隐患。

 

功能测试的用例不是万能的

对于测试开发来说,追求100%的测试覆盖率是无可厚非的,但是事实上很多的测试工作是机器难以完成的,比如文字验证码识别。优先设计完成稳定模块的用例来保证今后功能不断回归的工作,之后再考虑时间成本、人力成本的前提下再去考虑更多复杂问题的用例设计。

另一方面,对于频繁发生变化的模块,用例也应当适应这种变化不停迭代,从而快速的在各个机型上进行功能验证。

 

功能测试无法发现新问题

我们在编写和调试用例的时候,或许能够发现一些功能性问题,而用例在进行回归后,发现问题的可能性就很低了。功能测试其实就是一个用例不断重复的过程,功能测试本身应当是一个“守护者”而非“探索者”,它可以帮助我们更加确定应用没有问题或者发现一些回归性的问题,而不是新问题。MQC 在探索问题的方向上自主研发了一款兼容性测试工具 Ripper,在达到高覆盖率的同时保证较高的 Bug 检出率,有兴趣的小伙伴欢迎试用 MQC 兼容性测试。

 

功能测试是需要成本的

我们通过功能测试用例来保证产品的质量,同时需要专业的工程师来保证用例的质量。设计开发一个合格的用例也是需要不断的调试、迭代与维护的,这就需要一个好的平台系统来帮助完成相关工作。MQC为开发者提供了完善的用例库管理功能,同时,为测试开发团队打造了专业的一站式测试协作平台,帮助团队进行应用管理、协同工作、任务分发、报告统计。

通过以上几点内容,相信大家对功能测试的概念已经有了一定的了解。MQC 在 Android 功能测试上选择使用了 Appium 测试框架,其开源社区较为活跃,兼容性好、功能丰富,相信能满足绝大部分功能测试的需求;在脚本开发方面,MQC 提供了在线真机录制、云端真机回放等多种服务,来帮助提高用例脚本的开发、调试效率;最后,平台提供了 App 用例管理、用例历史报告查看、编辑脚本、上传脚本等功能,帮助用户通过平台来完成功能测试的迭代维护需求。更多服务,欢迎来阿里云移动质量中心进行体验。

二、Appium环境搭建

这章将会介绍如何搭建与安装 Appium 的开发环境,主要介绍 Windows 平台的环境搭建,mac 或 linux 需要的相关环境与 Windows 是一样的,环境搭建本身并不困难,遇到问题大家可以多做尝试。

相关依赖

Appium 是一款移动端的自动化测试开源工具,Appium 遵循以下4条设计哲学:

  1. You shouldn’t have to recompile your app or modify it in any way in order to automate it.

  2. You shouldn’t be locked into a specific language or framework to write and run your tests.

  3. A mobile automation framework shouldn’t reinvent the wheel when it comes to automation APIs.

  4. A mobile automation framework should be open source, in spirit and practice as well as in name!

相较于其它的一些功能测试工具,Appium 无需 SDK 或编译就可以直接对原生应用进行测试;能够在windows、mac、linux等多种平台运行;能够支持PHP、Python、Ruby、C#、 Clojure、Java、Objective-C、JavaScript及Perl等等开发语言;能够同时支持iOS、Android应用的功能测试。因为其强大的功能与便利性,Appium是最活跃的移动测试开源项目之一。

Appium server

Appium 是移动端的测试工具,所以 Android、iOS 的 sdk 是必不可少的。

1.到https://developer.android.com/studio/index.html下载android sdk,若不想下载android studio,可以滑动到最下面,找到仅获取命令行工具

2.若要测试iOS应用,推荐安装 XCode 8 及以上的开发环境。

Appium server 是用 Node.js 编写的一个服务器。我们可以用源码编译或者从 NPM 直接安装。

通过 npm 安装 appium 可能遇到一些镜像地址连接超时、appium启动权限报错的问题,同时命令行启动 appium 时需要添加一些参数, 对于新手,我们更加推荐使用 appium 的桌面客户端工具。Appium 桌面客户端封装了运行 Appium 服务端的所有依赖,而不需要担心怎样安装Node.js。其中还包括一个Inspector工具,可以帮助你检查应用的界面层级让你更方便地编写测试用例。

1.到https://github.com/appium/appium-desktop/releases/tag/v1.2.0-beta.1下载最新的 appium 客户端。目前 appium-desktop 提供了自动更新的功能,所以不再需要担心 appium-server 更新的问题了。 2.最新的桌面客户端启动界面如下,指定 Host 到本地,设定一个空闲的端口(默认 4723)就可以启动 appium-server了

Appium client

Appium Client 支持绝大部分语言,包括 Java, Ruby, Python, PHP, JavaScript 和 C#,这些库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规的 WebDriver 库就可以了。

  1. java 开发相关依赖可以到 https://github.com/appium/java-client/blob/master/docs/Installing-the-project.md 找到;

  2. python 开发相关依赖可以到https://pypi.python.org/pypi/Appium-Python-Client进行下载安装。

好的开始是成功的一半,任何框架都是需要从搭建环境开始做起的,遇到问题多利用各个搜索渠道去解决,相信搭建appium环境一定难不倒大家。

三、Appium基础篇

上文回顾

上一篇为大家介绍了如何通过appium桌面客户端的方式来快速搭建appium环境,桌面客户端的appium版本目前为1.6.4,更新稍慢于appium项目,但目前已经支持在线更新,大家不用再有客户端版本过低的顾虑。

接下来将介绍如何使用python来开发appium功能测试脚本,包括启动、控件定位、操作、函数封装、组织用例五个部分。

启动

Appium启动时需要指定一些通用配置,统称为Desired Capabilities,具体的一些参数可以参考Appium服务器初始化参数。这里介绍一些通用的参数与一些常见的问题。

 

automationName

自动化测试的引擎,Appium (默认)、Selendroid、Uiautomator2。Appium使用的是UI Automator v1,相比之下UI Automator v2修复了一些v1的bug,在结构上也有一些优化。对于Android7.0以上的系统,UI Automator v1可能在查找控件时出现超时导致appium服务端报错,这时候可以考虑改用Uiautomator2。

 

platformName

手机操作系统。

 

platformVersion

手机操作系统版本。

 

deviceName

手机类型

 

app

待测app的路径

 

newCommandTimeout

两条appium命令间的最长时间间隔,若超过这个时间,appium会自动结束并退出app

 

noReset, fullReset

noReset 不要在会话前重置应用状态。默认值false。 fullReset (Android) 通过卸载而不是清空数据来重置应用状态。在Android上, 这也会在会话结束后自动清除被测应用。默认值false。

 

unicodeKeyboard, resetKeyboard

在输入的时候,可能出现键盘挡住控件的情况,这时候需要使用 appium 提供的输入法(支持输入多语言,没有键盘 ui ),unicodeKeyboard 为 true 表示使用 appium-ime 输入法。 resetKeyboard 表示在测试结束后切回系统输入法。

 

appActivity, appPackage

appActivity与appPackage指用于启动待测app的activityName与packageName,appium(1.6.4)已经支持activityName与packageName的自动检测,这两个参数已经可以省略了

 

appWaitActivity, appWaitPackage

appium需要等待的activityName与packageName,与appActivity不同的是,对于有启动动画的app来说,appWaitActivity应该是启动activity消失后出现的activity。这两个参数可以指定多个。

有了以上介绍的这些参数,我们可以启动appium并开始测试app了。将desired capibilities进行封装,python脚本如下:

控件定位

android sdk的tools目录下自带一个元素查看工具-uiautomatorviewer,通过这个工具可以获取到app的各个元素属性,辅助我们编写相关的脚本,uiautomatorviewer的界面如下:

如图为了定位 尚未登录 这个控件,我们推荐以下几种方法:

  • xpath: xpath定位效率低,但胜在定位准确,在控件没有明显的唯一特征时,xpath的优势就体现出来了。使用xpath时可以选择以控件树的最近公共祖先的节点开始生成查询路径。

  • id: 为了定位方便,开发一般会为部分控件添加resource-id属性,一般来说可以在一个页面中唯一确定一个控件,对于存在多个相同resource-id控件的页面,可以通过index来定位这些控件中的某一个

  • text: 定位控件较为简洁清晰地一种方式,就是通过text来查找控件。

操作

  • swipe: 很多App都会有引导页需要左滑,这里提供一个左滑的例子,注意,滑动速度不应太快,否则容易导致引导页滑动不成功。

  • TouchAction: touchaction可以用来实现点击坐标,滑动等操作,需要注意的是在android系统上,TouchAction的move_to函数是相对坐标。

  • Scroll: 对于ListView这样的控件,若要滑动到某个控件位置,按照坐标滑动的方式很难适配不同分辨率的手机,这时候需要考虑使用scroll的方式进行滑动。

  • Keyevent: 通过系统按键可以实现很多操作,如HOME、POWER、MENU、音量等功能。具体的一些keyevent可以到https://developer.android.google.cn/reference/android/view/KeyEvent.html查看。

  • long_press: 利用TouchAction,可以实现长按操作:

  • hidekeyboard: 若 desiredcapbility 没有指定使用 unicodeKeyboard,在输入的时候需要注意键盘 ui 可能会挡住控件的情况,这时候使用 hidekeyboard 函数隐藏键盘

函数封装

在写脚本的时候,把一些常用的功能合理封装起来,能够大大提高脚本执行的成功率。

  • 滑动函数: 通过一组坐标点来进行滑动,从而实现一些曲线形的滑动。我们可以实现一个函数用来支持曲线滑动,输入为形如[[x1, y1],[x2, y2]]的一组坐标点。

  • 查找控件: 对于在调试的时候一切顺利的脚本,真正到了云测平台海量真机上测试的时候,却经常出现控件找不到导致脚本执行失败的问题。实际真机运行的时候,可能会有很多和本地并不相同的环境情况,比如网络延迟导致控件较迟刷新出来,我们应当封装一个较为稳定的控件查找函数。

appium本身有提供waitUntil的api,现在要找图中的 个人中心 控件,使用显示等待的方法如下:

我们也可以封装一个多方式定位控件的函数,这里需要自己把握超时时间

组织用例

unittest是python的一个单元测试框架,它可以帮助我们有效组织用例,把用例的不同部分区分开来。结合已经封装好的函数,我们写一个登录的测试脚本:

四、MQC 功能测试 DEMO

MQC为大家提供了海量的适配真机、强大的在线录制、遍历的用例管理、定制化的报告展示等功能,这篇文章将会通过一个 DEMO 教会大家如何利用好 MQC 提供的这些服务来回归测试自己的 App。

 

如何使用 MQC 功能测试服务?

Appium 基础篇有提到,desired capabilities 会提供 appium 运行时的各项环境参数,MQC 在功能测试开始前会动态生成desired capabilities类,用户脚本只需要调用相关 api 即可快速启动 Appium。

除此之外,MQC 提供了许多定制化的操作,只需要按照格式进行简单的 log 打印,就可以实现记录步骤、截图、记录执行状态等等操作,使得报告更加完善。当然,不打日志同样可以使用功能测试服务,只需要上传一个可执行的 main.py 文件(打包成zip文件)。

一个合理且容易被解析的日志结构应该如下:

那么,我们可以把上篇文章的 DEMO 进行改造,脚本如下:

准备好脚本后,就可以到 MQC 平台进行提测了:

1.将这个脚本打包成zip包,到 MQC主页 添加待测app, 之后进入用例库页面

2.创建一个新用例,取名为 登录

3.进入功能测试提测页面进行用例提测, 用户自己上传脚本创建用例需选中已上传用例,使用在线录制服务创建的用例需选择已录制用例

4.将上面的 DEMO 脚本提测后,24小时内便可查看测试报告。

 

怎么使用在线录制?

大家写功能测试脚本的时候一定有想过录制回放这样的功能,就是通过工具把操作录制下来,而后再通过引擎回放录制的动作。在线录制结合了云真机机型多的优势,提供了这么一项在线服务。在线录制可以大大加速用例的生成,但是,一个好的用例是需要不断地验证打磨的,除了基本的点击、滑动操作外,若您有具体的功能验证需求,如图片上传、随机密码键盘等等,都是需要有经验的工程师来修改完善脚本的, 在线录制仅仅是用例脚本设计中的第一步。当然,若您有复杂的用例设计需求,也可以联系我们,通过在阿里云购买人工支持用例设计,让阿里云的测试专家为您的 app 量身定制用例。

在使用在线录制的时候,可以看到下图所示界面

1.在点击的时候若出现控件树不准确的情况,需要手动点击刷新(框1)来重新解析控件树;2.框2中的内容是控件的坐标、resource-id[index]、text信息;3.有些 app 有左滑的起始页,这里封装了一些滑动操作,可以有效避免录制的左滑动作过快或过短导致回放失败的问题;对于一些输入操作,录制时直接使用键盘输入可能没有准确识别出该步所有输入文本,可以使用 输入 按钮来完成输入的操作;4.框4和框5是直接使用在线录制回放脚本,可以快速验证录制脚本的准确性,框4能够直接支持单步回放,框5可以构建appium脚本再使用appium引擎进行回放。

 

更多功能

MQC 提供了完善的测试流程管理功能,覆盖测试的整个生命周期,除了在线录制、真机回放、测试任务管理等,还有用例库管理、App版本管理、App缺陷统计等等功能,欢迎大家来使用体验,这里重点介绍用例库的参数管理。

大家在写功能测试脚本的时候可能都用过excel来管理一些常量,并在测试的时候传递给测试用例,这些通常会是脚本里的参数。在使用云端真机进行测试的时候,可以通过参数管理功能来完成参数的分发、互踢等工作,直接在脚本中获取参数,同时在线维护参数值。

如下图创建两组参数 username、password、point,在提测时选上使用的参数,平台会自动将参数分发到各个功能测试任务并执行

同样,使用 desired_capabilities 类可以获取到相应的参数:

到这 appium 功能测试的一些基本概念与服务已经介绍完全了,后续 MQC 会继续和大家分享功能测试的一些专业知识,希望大家持续关注。

上文提到的移动测试产品详情,请见https://www.aliyun.com/product/mqc

原文链接:

https://yq.aliyun.com/articles/212984?spm=5176.8091938.0.0.ApBAnh

分享到:
评论

相关推荐

    欧姆龙NJ PLC与多品牌总线设备控制程序详解及应用实例

    内容概要:本文详细介绍了欧姆龙NJ系列PLC与多个品牌总线设备(如汇川伺服、雷赛步进控制器、SMC电缸等)的控制程序及其配置方法。重点讨论了PDO映射、参数配置、单位转换、故障排查等方面的实际经验和常见问题。文中提供了具体的代码示例,帮助读者理解和掌握这些复杂系统的调试技巧。此外,还特别强调了不同品牌设备之间的兼容性和注意事项,以及如何避免常见的配置错误。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要进行PLC与总线设备集成工作的专业人士。 使用场景及目标:适用于需要将欧姆龙NJ PLC与其他品牌总线设备集成在一起的应用场景,如工厂自动化生产线、机器人控制等。主要目标是提高系统的可靠性和效率,减少调试时间和成本。 其他说明:文章不仅提供了理论知识,还包括大量来自实际项目的实践经验,有助于读者更好地应对现实中的挑战。建议读者在实践中不断积累经验,逐步掌握各种设备的特点和最佳实践。

    数字化企业转型大数据解决方案.pptx

    数字化企业转型大数据解决方案.pptx

    基于MATLAB的多智能体一致性算法在电力系统分布式经济调度中的应用

    内容概要:本文详细介绍了利用MATLAB实现多智能体系统一致性算法在电力系统分布式经济调度中的应用。文中通过具体的MATLAB代码展示了如何将发电机组和柔性负荷视为智能体,通过局部通信和协商达成全局最优调度。核心算法通过迭代更新增量成本和增量效益,使各个节点在无中央指挥的情况下自行调整功率,最终实现经济最优分配。此外,文章还讨论了通信拓扑对收敛速度的影响以及一些工程优化技巧,如稀疏矩阵存储和自适应参数调整。 适合人群:从事电力系统调度、分布式控制系统设计的研究人员和技术人员,尤其是对多智能体系统和MATLAB编程有一定了解的人群。 使用场景及目标:适用于希望提高电力系统调度效率、降低成本并增强系统鲁棒性的应用场景。主要目标是在分布式环境下实现快速、稳定的经济调度,同时减少通信量和计算资源消耗。 其他说明:文章提供了详细的代码示例和测试结果,展示了算法的实际性能和优势。对于进一步研究和实际应用具有重要参考价值。

    获取虎牙直播流地址的油猴脚本,可以直接使用VLC等播放器打开地址播放

    获取虎牙直播流地址的油猴脚本,可以直接使用VLC等播放器打开地址播放。

    电力系统中基于MATLAB的价格型需求响应与电价弹性矩阵优化

    内容概要:本文详细介绍了如何利用MATLAB进行价格型需求响应的研究,特别是电价弹性矩阵的构建与优化。文章首先解释了电价弹性矩阵的概念及其重要性,接着展示了如何通过MATLAB代码实现弹性矩阵的初始化、负荷变化量的计算以及优化方法。文中还讨论了如何通过非线性约束和目标函数最小化峰谷差,确保用户用电舒适度的同时实现负荷的有效调节。此外,文章提供了具体的代码实例,包括原始负荷曲线与优化后负荷曲线的对比图,以及基于历史数据的参数优化方法。 适合人群:从事电力系统优化、能源管理及相关领域的研究人员和技术人员。 使用场景及目标:适用于希望深入了解并掌握价格型需求响应机制的专业人士,旨在帮助他们更好地理解和应用电价弹性矩阵,优化电力系统的负荷分布,提高能源利用效率。 其他说明:文章强调了实际应用中的注意事项,如弹性矩阵的动态校准和用户价格敏感度的滞后效应,提供了实用的技术细节和实践经验。

    CSP-J 2021 初赛真题.pdf

    CSP-J 2021 初赛真题.pdf

    基于麻雀优化算法SSA与LSTM结合的MATLAB时间序列单输入单输出预测模型

    内容概要:本文详细介绍了如何利用麻雀优化算法(SSA)与长短期记忆网络(LSTM)相结合,在MATLAB环境中构建一个用于时间序列单输入单输出预测的模型。首先简述了SSA和LSTM的基本原理,接着逐步讲解了从数据准备、预处理、模型构建、参数优化到最后的预测与结果可视化的完整流程。文中提供了详细的MATLAB代码示例,确保读者能够轻松复现实验。此外,还讨论了一些关键参数的选择方法及其对模型性能的影响。 适合人群:对时间序列预测感兴趣的科研人员、研究生以及有一定编程基础的数据分析师。 使用场景及目标:适用于需要对单变量时间序列数据进行高精度预测的应用场合,如金融、能源等领域。通过本篇文章的学习,读者将掌握如何使用MATLAB实现SSA优化LSTM模型的具体步骤和技术要点。 其他说明:为了提高模型的泛化能力,文中特别强调了数据预处理的重要性,并给出了具体的实现方式。同时,针对可能出现的问题,如过拟合、梯度爆炸等,也提供了一些建议性的解决方案。

    西门子S7-1200 PLC与施耐德变频器Modbus通讯实现及调试技巧

    内容概要:本文详细介绍了西门子S7-1200 PLC与施耐德ATV310/312变频器通过Modbus RTU进行通讯的具体实现步骤和调试技巧。主要内容涵盖硬件接线、通讯参数配置、控制启停、设定频率、读取运行参数的方法以及常见的调试问题及其解决方案。文中提供了具体的代码示例,帮助读者理解和实施通讯程序。此外,还强调了注意事项,如地址偏移量、数据格式转换和超时匹配等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要将西门子PLC与施耐德变频器进行集成的工作人员。 使用场景及目标:适用于需要通过Modbus RTU协议实现PLC与变频器通讯的工程项目。目标是确保通讯稳定可靠,掌握解决常见问题的方法,提高调试效率。 其他说明:文中提到的实际案例和调试经验有助于读者避免常见错误,快速定位并解决问题。建议读者在实践中结合提供的代码示例和调试工具进行操作。

    Scala语言思维导图

    本文详细介绍了Scala语言的基础知识和特性。Scala是一种运行在JVM上的编程语言,兼具面向对象和函数式编程的特点,适合大数据处理。其环境配置需注意Java版本和路径问题。语言基础涵盖注释、变量、数据类型、运算符和流程控制。函数特性包括高阶函数、柯里化、闭包、尾递归等。面向对象方面,Scala支持继承、抽象类、特质等,并通过包、类和对象实现代码组织和管理,同时提供了单例对象和伴生对象的概念。

    Comsol仿真探索石墨烯-金属强耦合拉比分裂现象及其应用

    内容概要:本文详细探讨了石墨烯-金属强耦合拉比分裂现象的研究,主要借助Comsol多物理场仿真软件进行模拟。文章首先介绍了拉比分裂的基本概念,即当石墨烯与金属相互靠近时,原本单一的共振模式会分裂成两个,这种现象背后的电磁学和量子力学原理对于开发新型光电器件、高速通信设备等意义重大。接着阐述了Comsol在研究中的重要作用,包括构建石墨烯-金属相互作用模型、设置材料属性、定义边界条件、划分网格以及求解模型的具体步骤。此外,还展示了具体的建模示例代码,并对模拟结果进行了深入分析,解释了拉比分裂现象的形成机理。最后强调了该研究对未来技术创新的重要价值。 适合人群:从事物理学、材料科学、光电工程等领域研究的专业人士,尤其是对石墨烯-金属强耦合感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解石墨烯-金属强耦合拉比分裂现象的研究人员,旨在帮助他们掌握Comsol仿真工具的应用技巧,提高研究效率,推动相关领域的创新发展。 其他说明:文中提供的代码片段和建模思路可供读者参考实践,但需要注意实际应用时需根据具体情况调整参数配置。

    嵌入式电机控制中FPGA与Nios II结合的Verilog实现及优化技巧

    内容概要:本文详细介绍了基于FPGA的电机控制系统的设计与实现,重点探讨了Verilog和Nios II软核相结合的方式。具体来说,编码器模块利用Verilog实现了高精度的四倍频计数,解决了AB相信号的跳变问题;坐标变换部分则由Nios II软核负责,通过C语言实现Clarke变换和Park变换,提高了计算效率;SVPWM生成模块采用了Verilog硬件加速,优化了调制波的生成时间和波形质量。此外,文章还讨论了Nios II和Verilog之间的高效交互方式,如自定义指令和DMA传输,以及中断处理机制,确保系统的实时性和稳定性。文中提到的一些优化技巧,如定点数运算、查表法、流水线设计等,进一步提升了系统的性能。 适合人群:具有一定FPGA和嵌入式开发经验的研发人员,尤其是对电机控制感兴趣的工程师。 使用场景及目标:适用于需要高性能、低延迟的电机控制应用场景,如工业自动化、机器人、无人机等领域。目标是帮助读者掌握FPGA与Nios II结合的电机控制方法,提高系统的实时性和可靠性。 其他说明:文章提供了详细的代码片段和优化建议,有助于读者理解和实践。同时,文中提及了一些常见的调试问题及其解决方案,如符号位处理不当导致的电机反转、数据溢出等问题,提醒读者在实际项目中加以注意。

    ### 【嵌入式开发】基于Qt的ATK-DLRK3568实战指南:从入门到项目实战题:嵌

    内容概要:本文档《ATK-DLRK3568嵌入式Qt开发实战V1.2》是正点原子出品的一份面向初学者的嵌入式Qt开发指南,主要内容涵盖嵌入式Linux环境下Qt的安装配置、C++基础、Qt基础、多线程编程、网络编程、多媒体开发、数据库操作以及项目实战案例。文档从最简单的“Hello World”程序开始,逐步引导读者熟悉Qt开发环境的搭建、常用控件的使用、信号与槽机制、UI设计、数据处理等关键技术点。此外,文档还提供了详细的项目实战案例,如车牌识别系统的开发,帮助读者将理论知识应用于实际项目中。 适合人群:具备一定Linux和C++基础,希望快速入门嵌入式Qt开发的初学者或有一定开发经验的研发人员。 使用场景及目标: 1. **环境搭建**:学习如何在Ubuntu环境下搭建Qt开发环境,包括安装必要的工具和库。 2. **基础知识**:掌握C++面向对象编程、Qt基础控件的使用、信号与槽机制等核心概念。 3. **高级功能**:理解多线程编程、网络通信、多媒体处理、数据库操作等高级功能的实现方法。 4. **项目实战**:通过具体的项目案例(如车牌识别系统),巩固

    【人形机器人领域】宇树科技人形机器人技术实力与市场表现分析:科技创新与市场炒作的探讨

    内容概要:文章深入探讨了宇树科技人形机器人的技术实力、市场表现及未来前景,揭示其背后是科技创新还是市场炒作。宇树科技,成立于2016年,由90后创业者王兴兴创办,从四足机器人(如Laikago、AlienGo、A1)成功跨越到人形机器人(如H1和G1)。H1具有出色的运动能力和高精度导航技术,G1则专注于娱乐陪伴场景,具备模拟人手操作的能力。市场方面,宇树科技人形机器人因春晚表演而走红,但目前仅限于“极客型”用户购买,二手市场租赁价格高昂。文章认为,宇树科技的成功既源于技术突破,也离不开市场炒作的影响。未来,宇树科技将在工业、服务业、娱乐等多个领域拓展应用,但仍需克服成本、稳定性和安全等方面的挑战。 适合人群:对人工智能和机器人技术感兴趣的科技爱好者、投资者以及相关行业的从业者。 使用场景及目标:①了解宇树科技人形机器人的技术特点和发展历程;②分析其市场表现及未来应用前景;③探讨科技创新与市场炒作之间的关系。 阅读建议:本文详细介绍了宇树科技人形机器人的技术细节和市场情况,读者应关注其技术创新点,同时理性看待市场炒作现象,思考人形机器人的实际应用价值和发展潜力。

    C#3-的核心代码以及练习题相关

    C#3-的核心代码以及练习题相关

    MATLAB中基于麻雀搜索算法优化SVM分类的红酒数据集实现与解析

    内容概要:本文详细介绍了一种将麻雀搜索算法(SSA)用于优化支持向量机(SVM)分类的方法,并以红酒数据集为例进行了具体实现。首先介绍了数据预处理步骤,包括从Excel读取数据并进行特征和标签的分离。接着阐述了适应度函数的设计,采用五折交叉验证计算准确率作为评价标准。然后深入探讨了麻雀算法的核心迭代过程,包括参数初始化、种群更新规则以及如何通过指数衰减和随机扰动来提高搜索效率。此外,文中还提到了一些实用技巧,如保存最优参数以避免重复计算、利用混淆矩阵可视化分类结果等。最后给出了完整的代码框架及其在GitHub上的开源地址。 适合人群:具有一定MATLAB编程基础的研究人员和技术爱好者,尤其是对机器学习算法感兴趣的人士。 使用场景及目标:适用于需要解决多分类问题的数据科学家或工程师,旨在提供一种高效且易于使用的SVM参数优化方法,帮助用户获得更高的分类准确性。 其他说明:该方法不仅限于红酒数据集,在其他类似的数据集中同样适用。用户只需确保数据格式正确即可轻松替换数据源。

    MATLAB/Simulink中四分之一车被动悬架双质量模型的构建与分析

    内容概要:本文详细介绍了如何在MATLAB/Simulink环境中搭建四分之一车被动悬架双质量(二自由度)模型。该模型主要用于研究车辆悬架系统在垂直方向上的动态特性,特别是针对路面不平度引起的车轮和车身振动。文中不仅提供了具体的建模步骤,包括输入模块、模型主体搭建和输出模块的设计,还展示了如何通过仿真分析来评估悬架性能,如乘坐舒适性和轮胎接地性。此外,文章还讨论了一些常见的建模技巧和注意事项,如选择合适的求解器、处理代数环等问题。 适合人群:从事汽车动力学研究的科研人员、高校学生以及对车辆悬架系统感兴趣的工程师。 使用场景及目标:①用于教学目的,帮助学生理解车辆悬架系统的理论知识;②用于科研实验,验证不同的悬架设计方案;③用于工业应用,优化实际车辆的悬架系统设计。 其他说明:本文提供的模型基于MATLAB 2016b及以上版本,确保读者能够顺利重现所有步骤并获得预期结果。同时,文中附带了大量的代码片段和具体的操作指南,便于读者快速上手。

    COMSOL中光子晶体板谷态特性的建模与仿真方法

    内容概要:本文详细介绍了如何使用COMSOL软件进行光子晶体板谷态特性的建模与仿真。首先,定义了晶格常数和其他关键参数,如六边形蜂窝结构的创建、材料属性的设定以及周期性边界的配置。接下来,重点讲解了网格剖分的方法,强调了自适应网格和边界层细化的重要性。随后,讨论了如何通过参数扫描和频域分析来探索谷态特征,特别是在布里渊区高对称点附近观察到的能量带隙和涡旋结构。最后,提供了关于仿真收敛性和优化技巧的建议,确保结果的可靠性和准确性。 适合人群:从事光子学、电磁学及相关领域的研究人员和技术人员,尤其是对拓扑光子学感兴趣的学者。 使用场景及目标:适用于希望深入了解光子晶体板谷态特性的科研工作者,旨在帮助他们掌握COMSOL的具体应用方法,从而更好地进行相关实验和理论研究。 其他说明:文中不仅提供了详细的代码示例,还穿插了许多形象生动的比喻,使复杂的物理概念变得通俗易懂。同时,强调了仿真过程中需要注意的技术细节,如网格划分、边界条件设置等,有助于避免常见错误并提高仿真的成功率。

    微纳光学中金纳米球米氏散射的FDTD仿真及实验验证

    内容概要:本文详细介绍了利用有限差分时域法(FDTD)对金纳米球进行米氏散射仿真的全过程。首先,通过Python脚本设置了仿真环境,包括网格精度、材料参数、光源配置等。接着,展示了如何通过近场积分计算散射截面和吸收截面,并进行了远场角分布的仿真。文中还讨论了常见错误及其解决方法,如网格精度不足、边界条件不当等问题。最终,将仿真结果与米氏解析解进行了对比验证,确保了仿真的准确性。 适合人群:从事微纳光学研究的科研人员、研究生以及相关领域的工程师。 使用场景及目标:适用于需要精确模拟纳米颗粒与电磁波相互作用的研究项目,旨在提高仿真精度并验证理论模型。通过本文的学习,可以掌握FDTD仿真的具体实施步骤和技术要点。 其他说明:本文不仅提供了详细的代码示例,还分享了许多实践经验,帮助读者避免常见的仿真陷阱。同时强调了参数选择的重要性,特别是在纳米尺度下,每一个参数都需要精心调整以获得准确的结果。

    基数.txt

    基数

    2ddddddddddddddddddddddddddd

    2ddddddddddddddddddddddddddd

Global site tag (gtag.js) - Google Analytics