首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何缩短回归测试的时间-面试问题

如何缩短回归测试的时间-面试问题
EN

Stack Exchange QA用户
提问于 2017-06-07 12:57:45
回答 3查看 1.1K关注 0票数 3

我最近参加了一次面试,他们问我:

如何减少回归套件的时间?

我回答说,我们只触发高级别的工作,剩下的部分我们手工操作,但面试官对我的回答并不满意。

在那之后,面试官询问了我项目的架构。我不明白为什么他们在问我如何减少回归套件所需的时间之后才问我这个问题。

EN

回答 3

Stack Exchange QA用户

发布于 2017-06-07 14:22:22

从你的第一个问题开始:

您的回答没有给面试官任何暗示,说明您理解自动化套件背后的技术挑战。他们期待的答案将包括可能的技术解决方案,例如:

  • 从完整浏览器更改为无头浏览器堆栈
  • 优化代码以减少低效
  • 从代码中删除静态等待(例如用动态等待替换Thread.Sleep )
  • 同时运行多个测试,而不是所有测试的单线程运行。
  • 使用分布式系统来建立和管理您的测试运行,直到并包括云中的容器场。
  • 尽量减少冗长的设置和拆卸例程必须在套件中运行的次数(同时保持测试的独立性)
  • 定期重构和取消过时或永不失败的测试
  • 调整计划,以便在每次构建的基础上运行一组必须拥有的测试,并在一夜之间或按其他计划运行更长的测试套件。

这些答案对面试官来说都会比你给出的答案更令人满意。你的回答会给面试官留下的印象是,你不知道如何提高测试套件的性能或运行时间。

这引出了第二个问题:面试官想要更多地了解回归系统的体系结构。你在对其中一个答案的评论中提到他们想要一幅画。这是因为说明任何一种架构的最简单的方法是用一个图表。

他们希望你知道这样的事情:

  • 您的构建服务器是否在连续构建、连续部署、计划或按需基础上工作。
  • 您的回归套件是否在本地资源上使用?
  • 如何处理套件中的单个测试分配(例如,在一个客户端系统上运行的所有测试,在服务器上运行的所有测试,在每个服务器上随机选择的测试)
  • 您在构建测试时所使用的设计模式(如页对象模式),以及是在一个大项目中拥有所有的设计模式,还是将页面对象分离,以便从多个单独的测试套件中调用它们。

您还可以介绍许多其他内容,包括您的测试所使用的软件和硬件体系结构的优缺点以及做出决定的原因。这样的回答会告诉面试官你知道你在用你的自动化做什么。

你给他们的第一个问题的答案暗示你不明白你在做什么,而你不能回答或理解他们的第二个问题很可能证实了这种印象。

这听起来可能很苛刻,但这就是面试的方式。面试官正在寻找不雇用你的理由。在这次采访中,你给了他们理由。

票数 7
EN

Stack Exchange QA用户

发布于 2017-06-07 13:39:33

如何减少回归套件的时间?

  • 这可能取决于回归套件所基于的技术。可以使用特定于技术/工具的优化,例如使用更快的数据库驱动程序、测试运行程序、语言/解释器优化,或者,正如@siutex所提到的,使用显式Waits而不是硬编码的时间延迟,后者往往等待的时间超过了需要。我们别再往这条路走下去了,保持高水平。
  • 首先要提到的可能是“缩放”您的回归测试套件--将回归测试套件划分为CPU或不同的机器。例如,在Python中,nosepytest测试运行程序都支持多个CPU或主机(pytest-xdist)之间的并行化。
  • 减少网络的影响-降低系统组件之间网络流量的负面性能影响。例如,让您的测试数据库与被测试的web应用程序位于同一台服务器上。查看容器的使用情况(thinking docker)
  • 查找和删除重复/多余的测试“设置”和“拆卸”过程。作为一个实际的例子,我在我们的Python回归测试套件中偶然发现--在类的每个测试方法(setUptearDown方法)中执行的东西通常不需要对每个方法执行,只能在每个测试类中应用一次(setUpClasstearDownClass方法)。
  • 当然,还有了解瓶颈的概要文件和度量--检测测试套件中最慢的部分,找出它们为什么慢,看看是否可以应用优化。

我还要指出的是,您从来不希望您的测试套件优化来影响测试的质量和可靠性。例如,sqlite3可能比为测试目的编制一个完整的MySQL或PostgreSQL更容易、更快,但您可能不会在回归测试套件中捕捉到与数据库或数据库驱动程序相关的问题,这可能会导致拔毛。

票数 5
EN

Stack Exchange QA用户

发布于 2017-06-07 13:10:28

问题2:

建筑意味着:

-How确实看起来像您的自动化测试项目。您是否触发远程或本地测试,您是否使用CI系统,有多少服务器等。

问题1:

代码语言:javascript
运行
复制
- You can use webdriver wait instead of Thread.Sleep

- You can run your test headless (phantomjs or firefox xvfb)
票数 -3
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/27660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档