如何 test/debug 资源有限的跨平台桌面应用程序(Windows,MacOS)
How to test/debug cross-platforms desktop apps(Windows, MacOS) with limited resources
我正在尝试构建桌面应用程序。
我正在考虑根据我的网络开发人员朋友的推荐使用 electron,
但由于我是唯一的开发人员,我没有办法在不同平台上测试软件(OS、硬件等)。
所以我预计这最终会在不同平台和不同 OS 上对 test/debug 软件造成问题.
由于用户对远程数据托管的一些隐私问题,我已经排除了网络应用程序。
软件非常轻巧,几乎等同于稍作修改的图像查看器应用程序。
如何解决不同平台的变体问题?
也欢迎任何为我指明大方向的文献建议。
视情况而定。
答案取决于您正在构建什么,因此弄清楚您实际想要构建什么是有意义的。您可能会问自己一些问题:
- 我需要数据库吗?
- 我需要身份验证吗?
- 我需要便携性吗?
- 我需要加快上市速度吗?
- 我想选择一种我熟悉的语言吗?
这些都是很好的问题,我们都会问自己很多。然而,回到你最初的问题。
Electron 是不错的选择
是的,有 alternatives. But Electron is used for Visual Studio Code, Facebook Messenger, Microsoft Teams and Figma。选择 Electron 意味着还有其他开发人员在制作应用程序,并且市场上有经过验证的应用程序,因此您不必担心生态系统已经死亡。
如果您了解网络技术,Electron 很容易上手,想想 js、html 和 css。如果你知道这些,你就可以转移你的网络开发知识并制作一个跨平台的应用程序。您不必担心学习每个 OS,因为 UI 是每个 OS 之间看起来大部分*相同的网页。 (*一些非常细微的差异,但本质上是相同的)。
跨平台部署很容易
有 a few ways of bringing your app to multiple platforms, I happen to be most familiar with electron-builder
,但其他两种解决方案也可以。
许多模板开始
我有偏见,因为我是 secure-electron-template
which is one of the many templates you can choose from when starting an app. However, I recently reviewed all Electron templates 的作者,发现只有 4 个没有严重的安全漏洞。
The Electron framework frequently is updated, and over the course of the past few years there has been a shift in the way Electron apps are made. Some earlier frameworks didn't have good secure defaults which some of the older Electron templates inherited and thus, aren't as secure as new frameworks that follow security guidelines.
如果您决定使用 Electron,请尝试 my template。它具有我正在构建的许多功能,以帮助社区获得他们可能想要的功能(即国际化 (i18n)、保存本地数据、自定义上下文菜单、页面路由、e2e 单元测试以及如何使用许可证密钥验证,仅举几例)。
有时将 Electron 视为两个进程会有所帮助。
renderer
与 main
进程。通常,运行 HTML/CSS/JS 的渲染器进程是它自己的独立组件,您使用 IPC 与 main
进程通信。
所以通常对于 UI,您可以使用大多数基于 Web 的测试框架来测试可靠性。在 Amna, for example, we use Cypress as our E2E testing platform. You an also use something like QAWolf。两者都应该与本地主机一起工作。一般来说,大多数网站测试工具应该可以正常工作,并且跨平台一致。
当 UI 功能调用 OS 或 main
进程时,这会变得棘手。例如,保存到磁盘,或启动程序。
一般流程是这样的,我还没有找到更简单的选项:
设置一个虚拟机或购买一台具有相应OS的机器。为此,我在 Azure 中使用了 Spot VM。
在发货前在每个 VM 中手动测试您关心的场景
如果你有很多依赖于 OS 的案例,那么你应该能够通过使用像 Spectron.
这样的自动测试运行器来进一步优化它
根据经验,我意识到我所做的大多数迭代更多地发生在 UI 上,而不是具有跨平台功能的底层功能。如果您的代码具有良好的分离性(例如 contextIsolation:true
、nodeIntegration:false
),那么当您需要进行整个“跨平台”测试与仅进行 UI 测试时,应该会非常明显。
我不熟悉很多大型电子测试框架,我知道 ToDesktop 处理包构建和生成二进制文件以执行冒烟测试并验证跨不同操作系统打开的东西。
我正在尝试构建桌面应用程序。
我正在考虑根据我的网络开发人员朋友的推荐使用 electron,
但由于我是唯一的开发人员,我没有办法在不同平台上测试软件(OS、硬件等)。
所以我预计这最终会在不同平台和不同 OS 上对 test/debug 软件造成问题.
由于用户对远程数据托管的一些隐私问题,我已经排除了网络应用程序。
软件非常轻巧,几乎等同于稍作修改的图像查看器应用程序。
如何解决不同平台的变体问题?
也欢迎任何为我指明大方向的文献建议。
视情况而定。
答案取决于您正在构建什么,因此弄清楚您实际想要构建什么是有意义的。您可能会问自己一些问题:
- 我需要数据库吗?
- 我需要身份验证吗?
- 我需要便携性吗?
- 我需要加快上市速度吗?
- 我想选择一种我熟悉的语言吗?
这些都是很好的问题,我们都会问自己很多。然而,回到你最初的问题。
Electron 是不错的选择
是的,有 alternatives. But Electron is used for Visual Studio Code, Facebook Messenger, Microsoft Teams and Figma。选择 Electron 意味着还有其他开发人员在制作应用程序,并且市场上有经过验证的应用程序,因此您不必担心生态系统已经死亡。
如果您了解网络技术,Electron 很容易上手,想想 js、html 和 css。如果你知道这些,你就可以转移你的网络开发知识并制作一个跨平台的应用程序。您不必担心学习每个 OS,因为 UI 是每个 OS 之间看起来大部分*相同的网页。 (*一些非常细微的差异,但本质上是相同的)。
跨平台部署很容易
有 a few ways of bringing your app to multiple platforms, I happen to be most familiar with electron-builder
,但其他两种解决方案也可以。
许多模板开始
我有偏见,因为我是 secure-electron-template
which is one of the many templates you can choose from when starting an app. However, I recently reviewed all Electron templates 的作者,发现只有 4 个没有严重的安全漏洞。
The Electron framework frequently is updated, and over the course of the past few years there has been a shift in the way Electron apps are made. Some earlier frameworks didn't have good secure defaults which some of the older Electron templates inherited and thus, aren't as secure as new frameworks that follow security guidelines.
如果您决定使用 Electron,请尝试 my template。它具有我正在构建的许多功能,以帮助社区获得他们可能想要的功能(即国际化 (i18n)、保存本地数据、自定义上下文菜单、页面路由、e2e 单元测试以及如何使用许可证密钥验证,仅举几例)。
有时将 Electron 视为两个进程会有所帮助。
renderer
与 main
进程。通常,运行 HTML/CSS/JS 的渲染器进程是它自己的独立组件,您使用 IPC 与 main
进程通信。
所以通常对于 UI,您可以使用大多数基于 Web 的测试框架来测试可靠性。在 Amna, for example, we use Cypress as our E2E testing platform. You an also use something like QAWolf。两者都应该与本地主机一起工作。一般来说,大多数网站测试工具应该可以正常工作,并且跨平台一致。
当 UI 功能调用 OS 或 main
进程时,这会变得棘手。例如,保存到磁盘,或启动程序。
一般流程是这样的,我还没有找到更简单的选项:
设置一个虚拟机或购买一台具有相应OS的机器。为此,我在 Azure 中使用了 Spot VM。
在发货前在每个 VM 中手动测试您关心的场景
如果你有很多依赖于 OS 的案例,那么你应该能够通过使用像 Spectron.
这样的自动测试运行器来进一步优化它根据经验,我意识到我所做的大多数迭代更多地发生在 UI 上,而不是具有跨平台功能的底层功能。如果您的代码具有良好的分离性(例如 contextIsolation:true
、nodeIntegration:false
),那么当您需要进行整个“跨平台”测试与仅进行 UI 测试时,应该会非常明显。
我不熟悉很多大型电子测试框架,我知道 ToDesktop 处理包构建和生成二进制文件以执行冒烟测试并验证跨不同操作系统打开的东西。