跨多个平台/编程语言对齐和维护功能

软件测试 自动化测试
2022-02-04 23:09:06

我们正在开发一个我们希望在多个平台上支持的库。我们目前有 .Net(桌面、CF、Silverlight、WP7)、Java(桌面和安卓)和 C++(目前是 win32)风格,并开始感受到调整和维护这些实现的负担。我们在这些库上公开了一个相对较小的公共接口,尽管我们允许每个平台利用它们的语法等,但它们都应该在功能上保持一致,以避免始终必须遵守最低公分母。

我们有一个相当大的测试套件(单元测​​试和集成测试),特别是针对我们的 .Net 实现,但我们真的很想避免为每个平台重复“相同”的测试。我们正在寻找一些务实的建议/解决方案,以在测试方面以某种简单和统一的方式处理这些(和未来的)平台。

我们一直在折腾某种可以适应每个平台的集中式“测试驱动程序”的想法。这将允许将测试编写在一个地方(例如.Net),然后在每个平台上调整/执行(例如通过进程间到特定平台上的测试客户端,将测试输入/输出转换到特定平台)但是不确定那是通往天堂还是地狱的道路。

澄清一下,我们真的想要一些关于跨多个组件维护测试的建议,并尽可能避免重复/平台特定的测试。

关于这个主题的任何想法,经验,想法?

4个回答

我会考虑发明一种简单的语法来描述我的测试,包括操作、输入和预期结果。然后,我将为每个平台编写一个 CLI,该 CLI 将读取此语法中指定的测试,执行指定的操作,将预期结果与实际结果进行比较,并发出通过/失败指示符。当然,我仍然需要维护每个平台的 CLI,但我的测试可以只编写一个,然后在所有平台上共享。

当我测试为多个平台开发的过滤器驱动程序时,我做了与 user246 类似的任务,我们有很多跨平台的重复,并且由于不同环境的工作方式,一些重复的功能是独一无二的。你能做的最好的事情是列出测试,是什么让它们独一无二,或者不是,然后从那里决定你想要和不想在每个平台上运行的测试。

如果您的担忧之一是重复“相同”的测试,那么请确保它们实际上是相同的。不同的环境可能会以不同的方式执行相同的功能,因此您需要在排除它们之前确定您正在测试的内容。

我认为“平台驱动程序”是要走的路。我曾经使用过使用这种方法的Aqua SW解决方案——一个高级测试运行程序(基于 JUnit)和匹配每个平台的低级“驱动程序”。

如果您的目标是尝试让一个测试在多个平台上运行,那么一种方法是在 C# 中编写您的测试并使用一种在测试用例初始化期间检测平台的方法(类似于此示例http://www. testingmentor.com/imtesty/2010/03/03/programmatically-detecting-the-operating-system-version-part-ii/),然后使用桥接器来编组适当平台的调用。