【问题标题】:How does a desktop environment developer test his code?桌面环境开发人员如何测试他的代码?
【发布时间】:2013-12-19 10:22:41
【问题描述】:

我无法弄清楚桌面环境开发人员如何测试他的代码。通常,C 或 C++ 程序员编译他的代码然后运行它(我不是那些程序员之一,我是一个网络程序员)。 那么,您通常在某种桌面环境(windows、mac os x、gnome、kde、xfce...)上构建您的 gui 应用程序,看看他们如何构建和测试他们的 gui 桌面?

如果这是一个愚蠢的问题,内核程序员如何测试他的代码?例如linux内核?你怎么知道你刚才写的东西有效?

【问题讨论】:

  • 虚拟机?模拟器?
  • 看看qemu
  • Linux 内核都是关于硬件交互的,对吧?那么如何在虚拟机上进行测试呢?
  • @tujamaica 预计虚拟机将呈现虚拟硬件,该虚拟硬件(从它运行的软件)表现为真实硬件。也就是说,设备选择通常非常少,所以我认为这不是通用的解决方案。拥有一台备用机器并使用远程调试(通常是网络启动卷)是。

标签: c macos linux-kernel gnome kde


【解决方案1】:

测试桌面应用程序的方式与应用程序的独立或远程控制方式有关。

Cross Platform GUI Test Automation tool(我不知道这个项目有没有web)项目帮助你选择解决问题所需的接口/库。

在 Linux[1] 中使用辅助功能库来控制应用程序,您有用于 Windows 的 Cobra[2] 和用于 MacOS 的 PyATOM[3],但我不知道在这些平台中使用了哪种技术。

  1. http://ldtp.freedesktop.org/wiki/
  2. https://github.com/ldtp/cobra
  3. https://github.com/pyatom/pyatom

【讨论】:

    【解决方案2】:

    桌面环境

    在现实世界的场景中测试桌面环境可能有点烦人,因此开发人员必须注意他犯的每一个小错误,如果他不这样做,他将很难开发 DE。

    正如@egur 所说,有多种方法可以测试他的代码,最简单也是最重要的一种(当然,在某些情况下不能使用),他可以在简化的程序中测试该代码。

    桌面环境由许多部分组成,但是,就您而言,我想您是在谈论几乎负责所有事情的会话管理器(或窗口管理器)。因此,如果他要对此进行测试,他只需退出当前的 DE 并使用新的可执行文件。如果出现错误,他可以随时备份旧的可执行文件或使用一些命令行文本编辑器(如 vim 或 nano)修复错误代码。

    内核

    这很难测试,一些内核开发人员只是编写一些代码并确保它可以编译,然后简单地让他的用户测试(通过 ACK'ing 代码等),然后可以将其提交到内核中代码。背后的原因是,开发人员可能没有测试代码所需的硬件。

    现在,如果您听说过,您可以在用户模式 ​​(UML) 下编译和运行内核,因此一些开发人员可能会选择它。但是,一些开发人员可能还想自己测试它(他们当然会备份当前内核以防万一出现问题)。

    【讨论】:

    • 我想你从来没有写过任何内核代码?常规应用程序的所有调试技术都可以应用。内核代码很像多线程编程。调试它们的技术是相同的。除非您是经验丰富/值得信赖的 Linux 内核成员,否则如果未经测试,您将无法提交代码。内核代码通常运行在数千种不同的配置上,很难测试所有的排列。
    • @artlessnoise 我从来没有说过代码会在未经测试的情况下提交,我说的是,他将它提供给拥有所需硬件或其他任何东西的用户,然后如果它工作,它就会被提交。
    【解决方案3】:

    测试是一个非常广泛的术语,有很多类型(部分列表):

    • 单元测试 - 测试一小段代码。测试代码的行为是否符合预期。
    • 系统测试 - 在真实场景中测试整个应用程序。
    • 性能测试 - 测试应用程序或其中一部分的性能。
    • GUI 测试 - GUI 元素的测试操作(不像自动化测试那么常见)
    • 静态分析 - 类固醇的编译器警告
    • 动态分析 - 至少检查内存 - 检查内存分配和使用情况
    • 覆盖测试 - 检查所有代码是否已执行。
    • 正式验证测试(非常高级) - 例如检查断言/假设何时被破坏。

    可以通过使用第二台计算机(主机)连接来调试内核代码。虚拟机使用相同的主体并简化设置,但不能始终工作,因为来宾 VM 中可能不存在硬件。 内核(所有操作系统)具有用于打印进度/问题的跟踪机制。在 Linux 中,简单的跟踪通过 dmesg 命令显示(打印一个循环缓冲区)。

    用户模式代码可以通过调试器轻松停止和调试。

    【讨论】:

    • 用户模式 linux(简称 UM)也存在。 JTAG、ICE、逻辑分析仪、示波器和其他系统级调试器也可用于调试 OS。主应用程序的简单短路逻辑可以促进单元测试以及测试工具和/或框架。这些框架通常与 敏捷开发 一起使用,以自动进行连续的单元测试。另一个通用概念是使用printf()cout;就像 Web 开发人员可以将输出添加到 debug 页面/URL 一样。这是在 Linux 操作系统案例中提到的 printk()dmesg
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多