微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在资源有限的情况下测试/调试跨平台桌面应用程序Windows、MacOS

如何解决如何在资源有限的情况下测试/调试跨平台桌面应用程序Windows、MacOS

我正在尝试构建一个桌面应用。
我正在考虑根据我的网络开发人员朋友的推荐使用 electron
但由于我是唯一的开发人员,我没有办法在不同平台上测试软件(操作系统、硬件等)。
所以我预计这最终会导致在不同平台和不同操作系统上测试/调试软件时出现问题。
由于远程数据托管用户的一些隐私问题,我已经排除了网络应用程序。
软件非常轻巧,几乎等同于图像查看器应用程序,只需稍作修改
如何解决不同平台的变异问题? 也欢迎任何为我指明大方向的文献建议。

解决方法

这取决于。

答案取决于你正在构建什么,所以弄清楚你真正想要构建什么是有意义的。您可能会问自己的一些问题:

  • 我需要数据库吗?
  • 我需要身份验证吗?
  • 我需要便携性吗?
  • 我需要加快上市速度吗?
  • 我想选择一种我熟悉的语言吗?

这些都是很好的问题,我们还会问自己很多问题。但是,回到您最初的问题。

电子是不错的选择

是的,有 alternatives。但 Electron 用于 Visual Studio CodeFacebook MessengerMicrosoft TeamsFigma。选择 Electron 意味着还有其他开发者在开发应用程序,并且市场上有经过验证的应用程序,因此您不必担心死生态系统。

如果您了解网络技术,Electron 很容易上手,比如 jshtmlcss。如果你知道这些,你就可以转移你的网络开发知识并制作一个跨平台的应用程序。您不必担心学习每个操作系统,因为 UI 是在每个操作系统之间看起来几乎*相同的网页。 (*一些非常小的差异,但基本相同)。

跨平台部署很容易

将您的应用程序带到多个平台有a few ways碰巧最熟悉electron-builder,但其他两种解决方案也适用。

许多模板开始

我有偏见,因为我是 secure-electron-template 的作者,这是您在启动应用程序时可以选择的 many templates 之一。然而,我最近reviewed all Electron templates发现只有 4 个没有严重的安全漏洞。

Electron 框架经常更新,在过去几年中,Electron 应用程序的制作方式发生了变化。一些较早的框架没有良好的安全默认值,一些较旧的 Electron 模板继承了这些默认值,因此不如遵循 security guidelines 的新框架安全。

如果您决定使用 Electron,请尝试 my template。它有许多我正在构建的功能,以帮助社区提供他们可能想要的功能(即国际化 (i18n)、保存本地数据、自定义上下文菜单、页面路由、e2e 单元测试以及如何使用许可证密钥验证,仅举几例)。

,

有时将 Electron 视为两个进程会有所帮助。

renderermain 进程。通常,运行 HTML/CSS/JS 的渲染器进程是它自己的独立组件,您使用 IPC 与 main 进程通信。

因此,通常对于 UI,您可以使用大多数基于 Web 的测试框架来测试可靠性。例如,在 Amna,我们使用 Cypress 作为我们的 E2E 测试平台。您还可以使用 QAWolf 之类的东西。两者都应该与本地主机一起使用。一般来说,大多数网站测试工具应该可以正常工作,并且跨平台保持一致。

当 UI 功能调用操作系统或 main 进程时,这会变得棘手。例如,保存到磁盘,或启动程序。

一般流程是这样的,我还没有找到更简单的选项:

  1. 设置虚拟机或购买具有相应操作系统的机器。为此,我在 Azure 中使用了 Spot VM。

  2. 在发货前在每个 VM 中手动测试您关心的场景

如果您有很多依赖于操作系统的案例,那么您应该能够通过使用像 Spectron 这样的自动化测试运行器来进一步优化它。

根据经验,我意识到我所做的大多数迭代更多地发生在 UI 上,而不是具有跨平台功能的底层功能上。如果您的代码具有良好的分离性(例如 contextIsolation:truenodeIntegration:false),那么当您需要进行整个“跨平台”测试而不是仅进行 UI 测试时,这一点应该非常明显。

我不熟悉很多大型电子测试框架,但我知道 ToDesktop 处理包构建和生成二进制文件以执行冒烟测试并验证跨不同操作系统打开的东西。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?