没有什么能像了解开发人员最新的代码推敲那样快地毁掉开发人员的一天。 不稳定测试 他们现在必须排除故障。 测试在第一次成功运行,但在第二次迭代中报告了一个关键问题,或者当它运行在另一个系统或 综合测试环境 .
代码没有任何变化,所以失败没有好的理由。但是测试仪表板上有一个巨大的红色X,开发人员和质量保证工程师面临着一个昂贵的、令人沮丧的错误搜索。
复杂的测试破坏了软件开发和测试的方方面面,从质量差的发布到高工作人员更替。而且,几乎每个软件团队都每周(如果不是每天的话)面临这一问题。
在这篇文章中,我们将研究一些常见的不完整测试的类型和原因,以及人工智能测试工具最终能够帮助解决这个有害且昂贵的问题的方式。
一、所有人都讨厌古怪的测试
复杂的测试--也常常被称为不可靠或非确定性测试--非常普遍,以至于聪明的企业开发团队已经就如何处理这些测试制定了协议。(再多一点。尽管如此,许多开发人员和测试人员还是把不稳定的测试看作是做生意不可避免的成本。
事实上,剥落测试是我们的团队最近在兰达斯特所做的一项调查中提到的主要关注之一,该调查来自世界各地的1600多名质量保证专业人员。全都说了,他们告诉我们 把他们8%的时间花在不稳定的测试上 .这几乎和他们建立和维护测试环境的时间承诺一样大(10.4%)。
最近的一项调查发现,包括微软和谷歌在内的大公司 在测试过程中,有41%的人经常会出现小问题 .这些测试非常古怪--在手动重新启动后的第二次尝试中,大约半数失败的作业成功运行。我们的调查表明,超过24%的大型组织在超过5%的测试中获得非确定性结果。
这并没有考虑到延误和挫折会给你的团队动力和整体效率带来的损失。
各种各样的测试
要开发一个计划来解决分散测试,首先需要了解它们发生的一般类别。
随机: 就像听起来一样。测试失败;您手动重新启动它;它成功地完成了测试,没有对代码或环境进行更改。或者它失败了,然后在第二次运行中成功。这可能是最常见的测试,当你寻找可能的原因时,它会让你发疯。
环境: 测试可能在您的机器上工作,但在另一个系统上失败。或者,更麻烦的是,在一个 持续集成环境 .
分支机构: 测试在具有特色的应用程序分支中成功,但合并到主程序时失败。与纯粹的随机失败相比,这些问题并没有那么令人疯狂--至少你有一个出发点来寻找矛盾和冲突。
二、模糊的测试会损害软件开发的方方面面
我们怎么强调都不为过--每个人都讨厌古怪的测试。这个 资讯世界的文章 这反映了整个行业的关注点,即将寻求解决方案提升到对大多数开发人员来说只是日常工作的一部分。
为什么古怪的测试那么糟糕?
它们消耗资源: 编写、执行和重新运行测试耗费了开发人员大量的时间--在某些情况下,测试花费的时间比实际编写代码的时间还多。我们早些时候引用的基准调查显示,77%的开发人员表示,分散测试是他们工作周期中耗费时间的一部分,使他们远离特性开发和构思。
延迟释放: 解决不可预测的测试结果会将里程碑推后,并使项目时间表完全脱轨。这对谁都没有好处。
他们确实可以强调开发人员: 现在很难留住人才。… 软件开发人员的年更替率在60%左右 .在一次"成功"的合并和搜索错误之后,不得不回去工作,这让人非常沮丧。事实上,古怪的测试被认为是使移动开发者疯狂的头号问题。
会破坏测试套件和团队的感知价值: 像其他人一样,测试单位必须证明他们的工具和人才的花费是合理的。编译大量错误的"失败"在您的测试程序是一个肯定的方式损害你的声誉。众所周知,零售商 将其极其复杂的发展渠道的普及率远远超过90% 只是重新运行最初失败的测试。
它们可能会导致大量释放: 如果开发人员和测试人员不信任测试结果,他们可能会养成简单地推出有合法问题的代码的习惯。
三、为什么他们总是这样?
那么,为什么要仔细地编写测试?这些是导致非确定性测试的最常见问题。
工艺时间/超时: 测试人员通常用睡眠语句编写,以便让应用程序有时间完成请求。如果应用程序花费的时间超过预期,测试将失败。如果应用程序正在调用外部数据存储或资源,而这些存储或资源可能并不总是按照测试人员的预期进行。而且,如果测试环境受到攻击,这也会减缓对低于预期水平的响应。
并发: 测试通常期望有一个精确的事件序列,尽管编写代码是为了允许多个执行序列,特别是在不同线程处理操作的情况下。如果测试只能接受一个序列,它就会失败。
测试订单依赖: 如果测试改变了数据存储、内存或环境的其他方面,那么按顺序运行后续测试将确保失败。您的测试必须能够按照任何顺序独立运行,并进行清理,以确保下一个测试的稳定性。
外来代码/环境条件: 有时编码员或环境管理员创造的条件(有意或无意)难以在测试设计中预料,但可能导致测试在异常情况下失败。所有人都听说过 现在有500英里的电子邮件问题 -服务器升级实现了一个非常紧张的超时窗口,导致电子邮件失败。这是罕见的,但它可以发生。
糟糕的测试: 人为的错误总是一个真正的风险。可靠的测试应包括涵盖所有行动基础的假设,以及实施这些假设的措施。边缘案例确实会发生,你需要测试它们。
四、如何处理古怪测试
正如我们前面提到的,对于软件开发人员和测试人员来说,剥落的测试是一个巨大的问题,大多数企业团队已经开发了一些处理这些测试的协议。
在这里,神话里的雷朱和哈西·保罗 减少剥落测试的框架 在我们最简单的学习中心,我们强烈建议您阅读。
总之,我们建议你的团队:
实现一致的测试重试机制,以确保"失败"是失败,定期维护和更新你的测试,鼓励开发人员和测试人员之间的公开交流,设定并监控测试性能指标和关键指标,创建一个加权比例表,以便根据业务价值优先解决剥落测试,不断收集和分析测试性能数据
这是在分析测试数据的最后一项举措中,正在出现的人工智能和机器学习测试工具不仅对解决不稳定的测试产生了巨大影响,而且从一开始就阻止了这些测试的发生。
五、人工智能工具和片状测试检测
AI工具非常擅长识别漏洞百出的测试,允许开发人员和项目管理人员优先考虑可以修复并推进发布的合法代码错误,同时将漏洞百出的测试结果沿着不同的路径移动。
人工智能和机器学习也可以分析测试结果,以找出潜在的问题,如环境因素,可能会导致持续的剥落。
大赦国际的主要长处是:
根源分析: 除了标志性的剥落测试,以AI为基础的工具可以解析您的测试日志,以识别非确定性结果中的模式,其中多数是环境因素。有了这些洞见,您就可以解决影响测试工作的时间和资源问题。(当然,人工智能模式识别也可以发现重复出现的代码错误,但这并不是"古怪的"--这只是人工智能工具可以改进软件管道的另一种方式。)
自适应测试维护: AI工具可以解决过时的或不必要的用例,这主要有助于你的测试套件的整体"光滑"。
预测分析: AI工具可以帮助开发团队避免分散的环境因素,基于历史数据和固定三角洲您提供的系统。没有古怪的错误,不需要时间。
持续改进: 基于AI的工具可以支持您的团队在短期和长期改进测试策略。软件测试应该是全面和有效的,并且对测试日志的大数据分析可以使您保持在这个路径上。
六、人工智能有助于解决根测试的问题
有缺陷的测试严重消耗了开发和测试团队的资源和士气。一个坚实的补救计划,包括由ai驱动的测试套件工具,以诊断和解决导致不稳定测试的潜在问题,对于保持项目的进度和达到您要求的质量标准至关重要。
去征服你的测试,比如 兰贝达的测试智力 帮助您的团队采取数据驱动的行动,以识别、解决和防止异常测试。通过利用机器学习和智能分析,LANDAST的目的是提高自动测试的可靠性和有效性,从而使软件交付更加可靠。
卓码软件测评是一家[ 具备CMA、CNAS双重资质 ]的专业做软件测试的第三方软件测试服务机构, 可根据您的需求提供各类软件测试服务,并出具合格有效的软件测试报告。点击→→可了解测试报价
部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。负责人:曾菲 电话:4006070568