【实测】关于‘钱学森弹道’应用软件测试的设计与实现(01)

简介: 【实测】关于‘钱学森弹道’应用软件测试的设计与实现(01)

  实测系列是纯硬核技术文章,并且是博主亲自演示已经落地取得一定成果的技术和原创教程,无偿进行分享,大家一键三连,支持一下!

前言

   最近的世界又开始了战乱,不少小伙伴都开始对导弹感了兴趣,我想很多军迷小伙伴都知道,我国的导弹技术是世界顶级,发射的远程导弹敌人是根本无法拦截的,这也是让我们具备摧毁敌人的根本技术之一,而其中,最厉害的最无解的技术当属【钱学森弹道】了。

   来看看官方的解释:

   划重点:钱学森弹道是无法预测,随机变幻路线,以至于无法也不可能被精准拦截,但最终又能恰好击中目标的技术。

   像是魔法一样,无数个偶然最终的结果却是必然,全靠了我们的先辈钱学森爷爷的贡献,才得以让我们能在今天世界战乱的情况下得以和平和安乐的生活。

   如今,这个技术是否能应用在测试领域,又有什么意义?不妨跟着博主一起来探寻下吧~

正文

   一:具体有什么作用?背景?

   在我们软件测试工作中,一提起‘随机’这个词,你会想到什么?没错,就是monkey测试。

   但是monkey测试是没有准确目的的,更多时候属于负载测试,用来发现一些内存泄露或者崩溃等bug的。而钱学森弹道技术的特点中除了随机之外,还要有准确的目的地。

   那如果再给Monkey加上一个目的地,就变成了这样。从A页面,到E页面之间随机点点点,但是最终一定要到E页面。这个需求就需要随机且准确目的地,也就恰好契合了【钱学森弹道】。

   但是小伙伴又会问了:从A到E,中间随机,为什么会有这么奇怪的需求?这个需求的现实意义是什么?

   答:我换个说法,比如现在是一个民宿酒店房源下单流程,从页面详情页开始,到最终下单并确认成功。中间的路线是什么样的?有多少种路线?如果用户反复的下单取消订单,来回返回提交表单,刷新等操作,是否会引起bug?

   其实,如果你去那些专业薅羊毛群里,就会发现,好多人是专业来找到这个流程的bug的,靠的就是反复随机的操作去碰。【钱学森弹道】恰好能够覆盖这里的所有用例路线,那到底有多少种路线呢?

   答:相当之多,有些同样的步骤,反复快速操作几十次,bug就出来了...

   我再举个例子:测试游戏,角色需要从自家水晶走到大龙刷新点,中间有多少种走法?那是相当多了吧?是否会存在某个未知bug,某个路线,会最终导致去不了大龙点?或者去了之后伤害异常?这些都需要测试才能给出结论,那这个测试,你怎么做?随便选了个最短路线过去,没问题就完了?当然不是,而靠纯代码和逻辑推断出来的测试用例(比如运用流程图法,基本流、异常流)等等,去写用例并执行虽然靠谱,但成本颇高,远没有直接让角色随机选择路线(中间甚至还会走回头路的方式去目的地)自动去测试方便。

   再举个例子:很多第一人称射击游戏/角色扮演游戏大家都玩过吧?你们玩CF生化模式闯关的时候有试过来回在一个墙角移动就会卡进去的bug来过关么?试过永劫无间在秘宝洞穴某个墙外来回蹭就能直接卡进去么?这种bug不要太多,任何游戏都存在。但却几乎无法被测试覆盖到,那你想想为什么每次这种隐藏之深的bug都能被找到?那些专业去找这种bug的人他们是用了什么测试方案,就能在游戏公测第一天就能找到这几乎无法被发现的bug呢?答案就是大量的随机动作,并且设置了目的地:墙壁里、山体里、洞穴内等等,无数种随机的路线,来回移动,反复横跳的路线中,就会自动发现那一个bug。

   例子先不举了,太多了。

   言归正传,这种随机又有确定目标的测试技术,我就暂且叫做【钱学森弹道】测试法吧,如果你们有好听的名字可以留言哦。

   那这个技术的背景和意义,我们大致有画面了,但是如何实现呢?无数个随机事件,真的能在最终走向确定的目标么?

   欢迎继续收看【钱学森弹道】测试法的实现理论。

   明天更新...

相关文章
|
4天前
|
敏捷开发 测试技术 持续交付
探索自动化测试在敏捷开发中的应用与挑战
【5月更文挑战第31天】 随着敏捷开发模式的普及,软件开发周期不断缩短,快速迭代成为行业标准。在这一背景下,传统的软件测试方法面临重大挑战,无法满足敏捷开发的高效率要求。自动化测试作为一种提高测试效率和质量的手段,其在敏捷开发中的角色日益重要。本文将探讨自动化测试在敏捷开发中的应用,分析其优势、实施策略以及面临的挑战,为软件开发团队提供参考和指导。
|
5天前
|
测试技术
软件测试中的自动化测试技术应用
在当今快速发展的软件行业中,自动化测试技术正变得越来越重要。本文将探讨自动化测试技术在软件测试中的应用,包括其优势、常见工具及实施步骤。通过了解自动化测试技术的相关内容,读者可以更好地理解其在软件测试中的作用,提高测试效率和质量。
19 0
|
5天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试工具及其应用
传统的软件测试流程需要大量的人工投入,其效率低下且容易出现遗漏。而自动化测试工具的出现极大地提高了软件测试的效率和精度。本文将介绍几种常见的自动化测试工具及其应用,分析其优势和不足,并探讨在实际项目中的应用场景。
|
5天前
|
敏捷开发 自然语言处理 JavaScript
探索自动化测试框架的选择标准与实践应用
【5月更文挑战第30天】 在软件开发的复杂多变环境中,自动化测试已成为确保产品质量和加快上市速度的关键。本文深入探讨了选择自动化测试框架时需考虑的标准,并通过具体案例分析如何在项目中成功实施。我们将覆盖框架选择过程中的性能、可靠性、易用性及可维护性四个核心要素,并结合业界最佳实践,提出一套实用的框架评估与应用流程。
|
5天前
|
机器学习/深度学习 人工智能 大数据
自动化测试在软件开发中的重要性与应用
自动化测试是软件开发过程中不可或缺的一环,它通过编写脚本和工具来执行测试用例,提高了软件测试的效率和准确性。本文将探讨自动化测试在软件开发中的重要性、应用场景以及未来发展方向。
11 0
|
5天前
|
敏捷开发 机器学习/深度学习 监控
探索自动化测试在持续集成中的应用与挑战
【5月更文挑战第30天】 随着敏捷开发和持续集成(CI)实践的日益普及,自动化测试已成为确保软件质量和加速交付的关键工具。本文旨在分析自动化测试在持续集成环境中的作用,探讨其带来的优势及面临的挑战,并提出了相应的应对策略。通过实际案例分析和最新技术趋势的梳理,文章为软件开发团队如何高效实施自动化测试提供了参考和指导。
|
5天前
|
敏捷开发 测试技术
深入理解并应用测试驱动开发(TDD)
【5月更文挑战第30天】测试驱动开发(TDD)是一种先编写测试用例再写代码的方法论,核心是"先测试,后开发"。通过"红-绿-重构"的循环,确保代码正确性,提升简洁性和可维护性。TDD步骤包括编写测试用例、运行测试、编写实现代码、重构及循环迭代。它能提高代码质量,促进团队合作,降低维护成本,并适应敏捷开发。在开发实践中,应用TDD能有效提升效率和代码质量。
|
5天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习在图像识别中的应用及其挑战深入理解自动化测试中的数据驱动策略
【5月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经成为了计算机视觉领域的核心驱动力。尤其是在图像识别任务中,深度神经网络通过多层次的特征提取和学习,显著提升了系统的准确率和泛化能力。然而,深度学习模型在实际应用中仍面临众多挑战,包括数据偏差、计算资源消耗、模型可解释性等问题。本文将探讨深度学习技术在图像识别领域的应用现状,分析其面临的主要挑战,并对未来发展趋势进行展望。
|
6天前
|
敏捷开发 监控 Java
深入理解与应用软件自动化测试框架
【5月更文挑战第29天】在软件开发的快速迭代过程中,自动化测试已经成为保证产品质量和提升开发效率的重要手段。本文旨在探讨自动化测试框架的选择、搭建及优化实践,通过对现有自动化测试工具的分析以及真实案例的应用,为开发者和测试工程师提供一套高效、可靠的自动化测试策略。文中不仅介绍了几种主流的自动化测试框架,还详细讨论了如何根据项目需求定制测试脚本,并提出了持续集成中自动化测试的最佳实践。
|
6天前
|
敏捷开发 运维 监控
探索自动化测试在持续集成中的应用与挑战
【5月更文挑战第29天】 随着敏捷开发和持续集成(CI)实践的普及,自动化测试已成为确保软件质量和加快交付速度的关键因素。本文将探讨自动化测试在持续集成流程中的实施策略、面临的挑战以及解决方案。通过分析自动化测试的优势和局限,我们旨在为软件开发团队提供实用的指导和最佳实践,帮助他们在不断变化的技术环境中维持高效和稳定的软件发布周期。