哈喽,大家好!我是码农二师兄。2024 年 5 月我通过了软考的系统架构设计师考试,成绩是综合基础知识 63 分,案例分析 51 分,论文 49 分。
今天我分享的范文是《论静态测试方法及其应用》。
考情分析
静态测试这个主题,在系统架构设计师论文科目中从来没有考过,在系统分析师论文科目中也只考察过一次,那就是 2021 年的试题二《论静态测试方法及应用》。试题内容如下:
2021 年系统分析师论文试题二:《论静态测试方法及其应用》
请围绕“静态测试方法及其应用”论题,依次从以下三个方面进行论述。
该要叙述你参与管理和开发的软件项目,以及你在其中所担任的主要工作。
详细论述静态测试主要方法的内容和过程。
结合你具体参与管理和开发的实际项目,说明如何进行静态测试,并说明如何选择合适的静态测试方法以及具体实施过程和效果。
虽然考察频率极低,但是我还是建议你要掌握一下静态测试的相关知识。
中国有句古话“君子以思患而豫防之。”,其出自于《周易·既济》,这里的“豫”通“预”,意思是预先、提前。这句话的大意是说,有智慧的人会思考可能出现的问题并在它们发生之前采取预防措施。即将成为架构师的你,肯定也是一个有大智慧的人,并拥有很好的风险管理能力,能迅速识别出软件开发过程中潜在的问题并把它们扼杀在摇篮之中。静态测试是一种像你这样有大智慧的人拿来管控风险的工具,让代码在生产环境中运行之前就发现并解决潜在的问题,不让有问题的代码上线,从而提升系统的各项质量指标,最终项目成功交付,你也升职加薪、迎娶白富美、走上人生巅峰。
好了,二师兄的废话比昨天更多了,一说起来就没完没了,太烦人了。我们还是言归正传,来看看下面这篇范文吧。
论静态测试方法及其应用
摘要
2023 年 3 月,我所在的公司承接了某油企智慧加油站平台的建设工作。该项目旨在帮助加油站提升运营效率、降低运营成本和提高销售额。我在该项目中担任系统架构设计师,负责整个项目的架构设计工作。
本文结合我在该项目中的实践,详细论述静态测试方法以及在该项目中的具体应用。在该项目中,我们采用的静态测试方法是代码评审。代码评审主要分为评审前、评审中、评审后三个阶段,其中评审前确保代码在提交前已经符合团队的代码风格和格式要求,评审中使用检查表提高代码评审的效率并记录评审结果以便追踪和改进,评审后使用项目管理软件来跟踪和管理评审中发现的问题。
整个项目历时 10 个月开发完成,并于 2023 年 12 月正式交付并稳定运行至今,各项功能和性能指标均达到了客户要求,得到了客户和各级领导的一致好评。
正文
项目背景
随着国内成品油零售行业竞争日益激烈,某油企为增强市场竞争力,决定建设一个智慧加油站平台,通过引入信息技术来优化运营管理,进一步提升加油站的管理水平和服务质量。我所在的单位成功中标该项目,并于 2023 年 3 月正式启动该项目的建设工作。我被任命为系统架构设计师,负责该项目的系统架构设计工作。
该项目的主要建设内容包括智慧支付、智慧营销、智慧运营等功能模块。其中智慧支付模块提供了对多种支付方式的支持,比如现金支付、油卡支付、微信支付、支付宝支付、云闪付支付、车牌付、人脸付、ETC 支付等,以确保顾客下单支付的便利性和安全性;智慧营销模块支持开展多种形式的营销活动,比如消费返券、趣味抽奖、积分任务、限时秒杀、充值优惠等,以提高顾客复购率;智慧运营模块涵盖了站务管理、运营数据统计分析等功能,以提高加油站运营效率。
该项目选用 Java 作为主要开发语言,采用基于 Spring Cloud Alibaba 的微服务架构进行构建。我们选择 MySQL 作为数据库,Doris 作为实时数仓,Redis 作为分布式缓存,RocketMQ 作为消息中间件,Flink 作为实时流式计算引擎,并最终在 Kubernetes 集群中部署运行。
要想高质量地完成该项目,通过静态测试尽早发现和解决系统中潜在的问题,以避免这些问题在后期变得更加复杂、增加修复成本从而影响项目的进度和质量。静态测试是指被测程序不在机器上运行,而采用人工检测和计算机辅助静态分析的方法对程序进行测试。
常见的静态测试方法主要有桌前检查、代码走查和代码评审。桌前检查是指由程序员检查自己编写的程序。桌前检查的过程是:程序员会逐行检查自己的代码,试图找出逻辑错误、语法错误或不符合编码标准的地方。代码走查是一种非正式的评审活动,通常涉及一个小组成员,而不仅仅是代码的编写者。代码走查的过程是:代码的作者会向团队解释代码的功能和实现细节,其他团队成员则根据预定的标准和指南来检查代码,提出问题和建议。代码评审是一种正式的评审活动,通常涉及到一组开发者、项目经理或质量保证人员,其目的不仅在于发现缺陷,还在于分享知识、改进编码实践以及确保代码符合项目标准。代码评审的过程包括提交代码、发起评审、执行评审、修改和反馈、批准与合并等步骤。
考虑到该项目对质量的要求,经过项目组成员充分讨论,我们一致决定通过代码评审来尽早发现并解决系统中潜在的问题,降低项目的风险。在该项目中,代码评审的过程包括评审前、评审中和评审后三个阶段。本文将结合我在该项目中的实践,详细论述这三个阶段。
评审前
在评审前,我们需要确保代码在提交前已经符合团队的代码风格和格式要求,从而使评审者更多地关注代码的核心逻辑和设计问题。在代码评审之前,开发者提交的代码可能存在格式和风格上的不一致,这些问题可能会分散评审者的注意力,导致他们忽视更重要的逻辑和设计问题。为了解决这个问题,我们使用了静态分析工具 Spotless 和 Checkstyle。我们使用 Spotless 实现代码的自动格式化,开发者在提交代码之前运行 mvn spotless:apply 命令,该命令将自动应用这些格式化规则,确保代码在提交前已经符合团队的格式要求。我们使用 Checkstyle 实现代码风格的检查,开发者在提交代码之前运行 mvn checkstyle:check 命令,该命令将自动检查代码风格,并生成 HTML 格式的检查报告,方便开发者进行整改。
通过 Spotless 和 Checkstyle 插件的运用,我们确保代码在提交前已经符合团队的代码风格和格式要求,从而使评审人可以更多地关注代码的核心逻辑和设计问题。
评审中
在评审中,我们使用检查表提高代码评审的效率,并记录评审结果以便追踪和改进。在评审中,我们面临的最大挑战是在代码评审过程中,如果缺乏统一的标准,可能会出现忽略重要问题的检查,例如,代码中可能存在性能问题、安全漏洞等情况,这些未被发现的问题可能导致系统上线后出现故障或安全漏洞,增加后期维护成本。为了应对这个挑战,我们设计了一个详细的检查表,确保覆盖所有重要的评审点。这个检查表涵盖代码风格和格式、逻辑和算法、性能、安全性和可维护性等方面。代码评审时使用检查表,可以减少遗漏重要问题的可能性,此外,通过提供明确的检查项,也可以提高评审效率,评审者可以更快地识别问题所在。
例如,由于该项目涉及到用户的车牌号、银行卡、手机号等敏感信息,如果这些信息泄漏出去,将会给用户和加油站带来严重的损失,因此我们额外注意这些敏感信息的保护。为了保护这些敏感信息,我们制定了一些检查项,并作为代码评审的必检项。在一次营销活动中,开发人员在营销活动的参与日志中记录了用户的真实姓名和手机号,后来评审人在使用检查表进行代码评审时注意到了日志记录语句中包含了用户的敏感信息。通过检查表,我们及时发现了潜在的安全漏洞,并采取措施修复了问题,避免了敏感信息的泄漏。
评审后
在评审后,我们使用项目管理软件禅道来跟踪和管理评审中发现的问题。在代码评审结束后,评审者可能会发现一些需要修复的问题或提出的改进建议。确保这些问题得到有效解决是至关重要的,因为未解决的问题可能会导致后期维护成本的增加。为了解决这个问题,我们采用了项目管理软件“禅道”来跟踪和管理评审中发现的问题。首先,在禅道中为评审中发现的每一个问题创建一个单独的任务或缺陷记录,并明确问题的描述、严重程度和优先级。然后,为每个问题分配责任人,确保每个人都知道自己需要负责解决哪些问题。接着,为每个问题设定一个合理的解决期限,以确保问题能够及时得到解决。在此过程中,我们会定期更新问题的状态,包括修复进度、测试结果等,并通过禅道的看板或仪表盘功能监控问题的解决进度。最后,当问题得到解决并通过测试后,我们会关闭问题记录。
通过使用禅道,团队成员可以清晰地了解自己需要解决的问题,并跟踪问题的解决进度。这种做法确保了评审中发现的所有问题都能够得到有效解决,减少了遗留问题的数量。
总结与感悟
通过静态测试,我们在代码实际运行之前发现并解决了系统潜在的问题,降低了项目的风险,为后续阶段工作的顺利进行提供了有利的支撑。最终,经过 10 个月的研发,该项目于 2023 年 12 月完成并交付上线,至今运行稳定,各项功能和性能指标均达到客户要求,得到了客户和各级领导的一致好评。虽然项目取得了成功,但我们也看到了一些不足之处,其中需求频繁变更导致项目团队经常加班是比较突出的问题。针对这个问题,我们采取了以下两个措施:一是规范需求变更流程,提升变更成本,以避免过度的需求变更;二是通过灵活的配置和架构设计,低成本响应需求变更。
通过该项目的开发,我在系统分析与设计方面积累了不少宝贵的经验,为我后续的工作提供了很大的帮助。这也激励着我不断学习,不断丰富自己的知识体系,为将来能够应对更复杂的工作做好准备。
如果这篇文章对你有所帮助,请不要吝啬你的点赞、关注、收藏和“在看”,如果特别喜欢,也可以赞赏。你们的认可是我持续创作的动力和源泉。
如果你有任何宝贵的建议或者想要私下交流的想法,欢迎留言或者添加我的微信号 happy_coder。让我们一起成长,携手前行!

