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

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

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

前言

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

   来看看官方的解释:

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

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

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

正文

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

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

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

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

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

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

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

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

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

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

   例子先不举了,太多了。

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

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

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

   明天更新...

相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
2月前
|
jenkins 测试技术 持续交付
探索自动化测试在持续集成中的应用与挑战
本文深入探讨了自动化测试在现代软件开发流程,特别是持续集成(CI)环境中的关键作用。通过分析自动化测试的优势、实施策略以及面临的主要挑战,旨在为开发团队提供实用的指导和建议。文章不仅概述了自动化测试的基本原理和最佳实践,还详细讨论了如何克服实施过程中遇到的技术难题和管理障碍,以实现更高效、更可靠的软件交付。
|
2月前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试框架在软件开发中的应用与挑战##
本文将深入探讨自动化测试框架在现代软件开发过程中的应用,分析其优势与面临的挑战。通过具体案例分析,揭示如何有效整合自动化测试以提升软件质量和开发效率。 ##
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
敏捷开发 监控 jenkins
探索自动化测试框架在敏捷开发中的应用与优化##
本文深入探讨了自动化测试框架在现代敏捷软件开发流程中的关键作用,分析了其面临的挑战及优化策略。通过对比传统测试方法,阐述了自动化测试如何加速软件迭代周期,提升产品质量,并针对实施过程中的常见问题提出了解决方案。旨在为读者提供一套高效、可扩展的自动化测试实践指南。 ##
47 9
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
34 4
|
2月前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
41 1
|
2月前
|
自然语言处理 安全 测试技术
基于大模型的应用的测试的一些注意事项
大模型应用测试需注意三大冲突:时间敏感性冲突,即模型数据可能随时间变得过时;数据真实性冲突,指训练数据中可能存在虚假信息,影响模型准确性;数据一致性冲突,表现为模型对语义相同但句法不同的输入反应不一。测试时应针对这些问题设计用例,确保模型性能。
72 4
|
2月前
|
Java 测试技术 API
软件测试中的自动化测试框架选择与应用##
在快速迭代的软件开发周期中,选择合适的自动化测试框架对于提高软件质量和开发效率至关重要。本文探讨了当前流行的几种自动化测试框架的特点和适用场景,旨在为软件开发团队提供决策依据。 ##
|
2月前
|
机器学习/深度学习 人工智能 安全
探索AI在软件工程中的最新应用:自动化测试与代码审查
探索AI在软件工程中的最新应用:自动化测试与代码审查