Questions tagged «test-automation»

16
为什么自动化测试在我的公司中总是失败?
我们试图在我的公司中多次引入开发人员自动化测试。我们的质量检查团队使用Selenium来自动化UI测试,但是我一直想介绍单元测试和集成测试。过去,每次我们尝试时,每个月的第一个月或第二个月每个人都会感到兴奋。然后,几个月后,人们只是停止这样做。 一些观察和问题: 自动化测试是否有效?我曾经在其他公司工作的大多数同事都尝试过并未能实施自动测试策略。我仍然没有看到一个实际使用它并且不仅仅谈论它的现实软件公司。因此,许多开发人员将自动化测试视为理论上很棒的东西,但实际上却行不通。我们的业务团队希望开发人员即使花费30%的额外时间来做到这一点(至少他们这样说)。但是开发商对此表示怀疑。 没有人真正知道如何正确地进行自动化测试。是的,我们都已经在互联网上阅读了单元测试示例,但是将它们用于大型项目则完全是另外一回事。罪魁祸首是嘲笑/存根数据库或其他不平凡的事情。与编写实际测试相比,您最终花了更多的时间进行模拟。然后,当编写测试花费的时间比编写代码花费的时间长时,就是您放弃了。 在复杂的以数据为中心的Web应用程序中,有没有很好的使用单元测试/系统集成测试的例子?有开源项目吗?我们的应用程序以数据为中心,但也具有大量的域逻辑。我在某个时候尝试了存储库方法,发现它对于单元测试相当不错,但是它是以能够轻松优化数据访问为代价的,它增加了另一层复杂性。 我们有一个由20个经验丰富的开发人员进行的大型项目。这似乎是引入单元测试/集成测试的理想环境。 为什么对我们不起作用?您是如何在公司工作的?

11
自动化测试的缺点是什么?
这个站点上有许多问题,可以提供有关自动测试可以带来的好处的大量信息。但是我没有看到代表硬币另一面的东西:缺点是什么?生活中的所有事情都是折衷方案,没有万灵药,因此,一定有一些正当理由不进行自动化测试。这些是什么? 以下是我提出的一些建议: 给定功能需要更多的初始开发时间 需要团队成员更高的技能水平 增加工具需求(测试执行者,框架等) 遇到失败的测试时,需要进行复杂的分析-该测试是由于我的更改而过时还是在告诉我我做错了? 编辑 我应该说我是自动化测试的坚定支持者,并且我不希望这样做。我想了解缺点是什么,所以当我去公司提出理由时,我看起来好像并没有扔下一个想象中的银弹。 另外,我明确地是不希望有人对我的上述示例提出异议。我确实认为必须存在一些不利因素(所有因素都需要权衡),我想了解它们是什么。

2
如何自动生成Guava单元测试?
番石榴具有自动生成的单元测试用例: 番石榴的单元测试数量惊人:截至2012年7月,番石榴测试包包括286,000多个单独的测试用例。其中大多数都是自动生成的,而不是手工编写的,但是Guava的测试覆盖面非常全面,尤其是对于com.google.common.collect。 它们是如何产生的?使用了哪些技术和技术来设计和生成它们?

4
当难以或无法获得硬件设置来重现错误时,如何有效地排除故障或测试新代码?
我在一家中型公司(拥有150名员工,约有10名规模的工程团队)工作,我的大多数项目都涉及与实验室设备(示波器,光谱分析仪等)的接口,以实现半自动化测试应用。我遇到了几种不同的情况,由于我不再或从来没有可用的硬件设置,因此无法有效地排除故障或测试新代码。 示例1:使用台式型传感器独立运行10-20个“老化”过程的设置-我能够获得一个这样的传感器进行测试,并且偶尔可以花一秒钟来模拟与之连接的所有方面多个设备(搜索,连接,流式传输等)。 最终出现了一个错误(最终最终归结于设备固件和驱动程序中),仅用一个单元就很难准确地再现该错误,但是当同时使用10-20个此类设备时,该错误接近“显示停止器”的水平。这仍未解决,仍在进行中。 示例2:需要昂贵的光谱分析仪作为其核心组件的测试。该设备相当老旧,是一家制造商遗留下来的,后者被一家较大的公司收购,并且基本上已经解散,并且它的唯一文档是冗长的(且内容不丰富的)文档,翻译起来似乎不好。在最初的开发过程中,我能够将设备保持在桌面上,但现在在24/7多周的测试中,无论是在物理上还是在计划中都将其捆绑在一起。 当错误显示出与设备相关或无关的错误时,我经常需要麻烦测试应用程序外部的代码并将其装入,或者盲目编写代码并尝试在两次运行之间的某个测试时间内进行压缩,程序逻辑要求OSA和其余测试硬件都安装到位。 我想我的问题是我应该如何处理?我可能会花一些时间来开发设备模拟器,但是弄清楚开发估算值将使它比大多数人想像的更多。它也可能无法准确地重现所有问题,而且很少有人看到同一设备在这里两次使用过。我可以在单元测试方面变得更好...等等...我也可以大声地谈论这个问题,并让其他人理解将需要暂时的延迟,这不只是研究和开发的头痛,而是通常被认为是在开玩笑当投入制造业时。

14
自动化的用户界面测试解决了什么问题?
我们目前正在研究自动化的用户界面测试(我们目前正在进行自动化的单元和集成测试)。 我们已经研究了Selenium和Telerik,并且由于后者的记录器更加灵活,因此选择了后者作为首选工具-我们真的不希望测试人员编写太多的代码。 但是,我试图了解整体利益。人们的看法是什么,什么样的事情行之有效,什么行不通? 我们的系统正在不断开发中,我们会定期发布(基于Web的)平台的新版本。 到目前为止,我们可以看到的主要好处是进行回归测试,尤其是在我们平台的多个客户端部署之间。 真正在寻找别人的意见。我们“认为”这是对的,但是在已经很忙的日程中,我们正在寻找更多的见解。

3
我应该在Docker映像中包含测试吗?
关于测试,我可以想到两个选择: 将测试和应用程序放在一张图中。 在图像中仅包含应用程序代码。创建一个特定于测试的容器,该容器在主映像之后构建并向其添加一些层(测试代码,依赖项等)。 使用第一个选项,我可以测试容器并按照测试的要求完全运送它。明显的缺点是不必要的代码(以及潜在的测试数据)将包含在图像中。 使用第二种选项时,出厂的图像与测试的图像不太相同。 两者看起来都是错误的策略。有没有第三种更好的策略?

3
您将如何对OpenGL的图形代码进行单元测试或执行最有效的自动化测试?
我在C ++中的OpenGL之上编写游戏和随附的图形引擎。我也是良好的编码过程和自动化测试的粉丝。图形输出+测试似乎几乎是不混溶的,因为输出通常仅是可视的,或者非常注重视觉。 例如,想象一下按字节分析渲染到屏幕上的原始图像流-您需要与之比较的测试数据,这很难创建/获取,并且通常渲染的图像在屏幕上并不相同。在不同时间运行时的字节级别-算法中的微小变化将完全破坏该方法。 我正在考虑创建一个可视化的单元测试套件,在其中基本上可以渲染不同的测试场景,显示诸如阴影贴图,动画等之类的内容。作为CI的一部分,这些场景随后将被渲染为视频。具有不同指标的文件(或可能将其保留为可执行文件)。这仍然需要对视频文件进行手动检查,但至少会实现某种程度的自动化和标准化。 你怎么看?我希望有更好的方法?

4
具有SQL和数据操作功能的TDD
当我是一名专业程序员时,我从未接受过软件工程方面的正式培训。由于我经常在这里访问,所以我注意到了尽可能编写单元测试的趋势,并且随着我的软件变得越来越复杂,我认为自动化测试是帮助调试的一个好主意。 但是,我的大部分工作涉及编写复杂的SQL,然后以某种方式处理输出。例如,您将如何编写测试以确保SQL返回正确的数据?然后,假设如果数据不受您的控制(例如,第三方系统的数据),那么您如何能有效地测试您的处理例程,而不必手写大量的伪数据? 我能想到的最佳解决方案是对涵盖大多数情况的数据进行查看。然后,我可以将这些视图与SQL连接起来,以查看它是否返回正确的记录,并手动处理视图以查看我的函数等是否正在执行应有的功能。尽管如此,它似乎过于油腻和胡扯。特别是找到要测试的数据...

3
应该通过自动UI测试来测试哪些功能?
最近,我们有一位顾问告诉我们,如果某个功能只能通过自动UI测试(例如Selenium,编码UI)进行测试,则存在基础架构问题。虽然这种说法可能有点极端,但它与测试金字塔的思路相同,因为UI测试应占整个自动化测试套件的一小部分。 那么,哪些类型的功能应该进行自动UI测试?具有令人信服的体系结构的系统是否仍具有只能通过UI测试才能验证的功能,或者这些测试应仅用作一组单元和服务测试的“备份”?

9
复制并粘贴测试代码:这有多糟糕?
我目前的工作主要是为我们正在处理的各种应用程序编写GUI测试代码。但是,我发现我倾向于在测试中复制和粘贴很多代码。原因是我正在测试的区域趋于足够相似以至于需要重复,但还不够相似以至于无法将代码封装到方法或对象中。我发现,当我尝试更广泛地使用类或方法时,测试变得更加笨重,有时甚至一开始就很难编写。 取而代之的是,我通常从一个部分复制大量测试代码并将其粘贴到另一部分,然后进行我需要的任何细微更改。我不使用更结构化的编码方式,例如使用更多的OO原理或函数。 其他编码人员在编写测试代码时有这种感觉吗?显然,我想遵循DRY和YAGNI原则,但是我发现测试代码(无论如何都用于GUI测试的自动测试代码)会使这些原则难以遵循。还是我只需要更多的编码实践和更好的整体服务系统? 编辑:我正在使用的工具是SilkTest,这是一种称为4Test的专有语言。同样,这些测试主要针对Windows桌面应用程序,但是我也使用此设置对Web应用程序进行了测试。

3
我可以使用Ruby来自动化一切吗?
我在各种平台(Windows,Linux等)上面对每天运行的各种类型的应用程序(基于Web,基于GUI,命令行等)。我有很大的机会通过脚本来自动化任务。但是几乎每种类型的应用程序和平台都有其本机脚本语言或工具(例如Windows的VBScript和PowerShell,Linux的Bash脚本,Web应用程序的Selenium和GUI应用程序的AutoIt等)。学习和维护如此多的脚本语言使我丧命。 我觉得Ruby可以轻松地与各种平台进行互操作,并且表达能力很强。所以我的问题是: 可以使用Ruby编写所有脚本吗? 如果是的话,与每个平台的本机脚本语言相比,主要缺点是什么?

6
我们应该开始进行敏捷测试的哪个阶段(SCRUM)?
我的一些背景知识-在敏捷环境中,我使用SCRUM(1-2周冲刺)是手动测试人员将近2年。因此,我想在使用Selenium WebDriver(带有Java)的工作中引入自动化测试。 我的问题是在什么时候应该手动测试功能以及什么时候应该转换它们以进行自动化测试? 我一直在阅读并获得不同的方法,例如: 当开始新的Sprint时,将用户故事转换为上一个Sprint的自动化脚本,或者; 在相同的Sprint中转换用户故事。 任何建议将不胜感激。先感谢您。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.