软件测试基础理论体系学习5-静态测试的理解

1 介绍

  • 静态测试包括包括代码检查、静态结构分析、代码质量度量等。
  • 它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
  • 动态测试在完成静态测试之后进行,这样,就需要设计一系列的测试用例来确保测试的完整性和有效性,而在测试用例的设计中,通常会把白盒测试和黑盒测试结合起来使用。

2 静态测试技术

静态测试是指不运行程序进行的测试–只是检查和审阅。静态测试包括包括代码检查、静态结构分析、代码质量度量等。

2.1 代码检查

  • 代码检查包括代码走查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;
  • 可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

2.1.1 代码走查

代码走查的一个问题是全部的代码是否都需要走查,在实践中,通常是不可行的,测试者必须找到那些必须要走查的代码,例如,由于在将来的版本中引入缺陷的风险,由于维护阶段的费用很高,将会留下一些代码或者随机检查,或者按照优先权次序。

代码走查过程中的最大的问题是劝说开发者要遵循一定的标准,开发人员对于代码走查可能会有这样的态度:我写的代码为什么要别人批评我写代码的方式。代码走查要采用一个公认的标准以便所有人都能够同意接受它的要求,所有这些都要小心选择并能够全面反映团队的工作环境。

正规的走查是把代码打印出来,邀请别的同行开会检查代码的缺陷。但这种方法太耗时间,所以一般在走查会议上各开发人员自己讲解自己的逻辑、写法,让别人提意见。在编码阶段这种会议有助于大家了解整个项目情况,也有助力于各开发人员及早发现问题。

2.1.2 编码风格与规范

在程序设计中要使程序结构合理、清晰,形成良好的编程习惯,对程序的要求不仅是可以在机器上执行,给出正确的结果,而且要便于程序的调试和维护,这就要求编写的程序不仅自己看得懂,而且也要让别人能看懂。有时候会出现过了一年半载,连编程者自己也读不懂程序的情况。程序如同一篇文章,应该易于被人看懂,读起来流畅,必要时又容易修改,可以从源程序代码中得到提示从哪里修改。好的程序设计风格有助于提高程序的正确性、可读性、可维护性、可用性。

好的风格对于好的程序设计具有关键性作用。写好一个程序,当然需要使它符合语法规则、修正其中的错误和使它运行得足够快,但是实际应该做的远比这多得多。一个写得好的程序比那些写得差的程序更容易读、更容易修改。经过了如何写好程序的训练,生产的代码更可能是正确的。

程序设计风格的原则根源于由实际经验中得到的常识,它不是随意的规则或者处方。代码应该是清楚的和简单的-------具有直截了当的逻辑、自然的表达式、通行的语言使用方式。

2.1.3 审查

2.1.3.1 代码审查和代码走查

在这里插入图片描述

代码审查是提高代码质量的良药。但良药苦口,也有很多问题。

没有习惯代码审查的开发员的心理抵触。当指出代码中的问题时,很多程序员会感到难堪。特别是不直接影响程序功能的代码,比如,不良代码风格。另外,现在的软件开发常常是多人维护的,如果不良代码是别人写的,总感觉象代人受过一样。这时,不得不反复说明,代码审查目的是帮助找到问题,而不是针对个人。

如果代码审查没有目标,则很容易使得代码审查变得很无趣,变成了程序逻辑报告会。通常,在代码审查之前,先确定一个审查目标,比如今天主要看代码风格,或安全问题等。这样容易找出问题。如果能事先通报一个检查列表,审查之前表态:今天主要审查这些条目,那会更有效。

2.1.3.2 代码审查清单

这个清单只对结构化编程测试具有意义,不包括特殊应用领域和面向对象软件的测试。

  • 数据引用错误

是指使用未经正确初始化用法和引用方式的变量、常量、数组、字符串或记录而导致的软件缺陷。如:变量未初始化、数组和字符串下标越界、对数组的下标操作遗漏[0]、变量与赋值类型不一致、引用的指针未分配内存。

  • 数据声明错误

数据声明软件缺陷产生的原因是不正确的声明或使用变量和常量。

  • 计算错误

计算或者运算错误是基本的数学逻辑问题。计算无法得到预期结果。如:不同数据类型或数据类型相同但长度不同的变量计算、计算过程中或计算结果溢出、赋值的目的变量上界小于赋值表达式的值、除数/模为0、变量的值超过有意义的范围(如概率的计算结果不在0-1范围内)。

  • 比较错误

小于、大于、等于、不等于、真、假。比较和判断错误很可能是边界条件问题。如:混淆小于和小于等于、逻辑表达式中的操作数不是逻辑值。

  • 控制流程错误

控制流程错误的原因是编程语言中循环等控制结构未按预期方式工作。通常由计算或者比较错误直接或间接造成。如:模块或循环无法终止、存在从未执行的代码、由于变量赋值错误而意外进入循环。

  • 子程序参数错误

子程序参数错误的来源是软件子程序不正确的传递数据。如:实际传送的参数类型或次序与定义不一致、更改了仅作为输入值的参数。

  • 输出错误

包括文件读取、接受键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。如:软件没有严格遵守外部设备读写数据的专用格式、文件或外设不存在或者为准备好的错误情况发生时没有相应处理、未以预期的方式处理预计错误、错误提示信息不正确/不准确。

  • 其他检查

软件是否使用其他外语?处理字符集的范围(ASCII或Unicode)?是否需要移植?是否考虑兼容性?编译时是否产生警告或提示信息?

2.2 静态结构分析

  • 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。
  • 函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;
  • 控制流图显示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。

2.3 代码质量度量

ISO/IEC 9126国际标准所定义的软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。


【特别说明】:知识来源于网络、各种资料、书本、网站等,本文仅用于学习使用,不做他用,如果涉及版权问题,请联系博主删除,谢谢

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
软件测试是指对软件的程序、数据和文档进行检查、验证和评估的过程,以确保软件的质量和正确性。软件测试贯穿于整个软件生命周期中,包括需求分析、设计、编码和维护阶段。软件测试的目的是发现软件中的错误和缺陷,并评估和提高软件的质量。 软件测试的充分性准则指出,对于任何软件都存在有限的充分测试集合。如果一个软件系统在一个测试数据集合上的测试是充分的,那么再多测试一些数据也应该是充分的。但即使对软件的所有成分都进行了充分测试,也并不表示整个软件的测试已经充分。同样,即使对软件系统整体的测试是充分的,也并不意味着软件系统中各个成分都已经充分地得到了测试软件测试的充分性与软件的需求和实现都相关,而且软件越复杂,需要的测试数据就越多。然而,进行越多的测试,进一步测试所能得到的充分性增长就越少。 软件测试可以根据不同的分类标准进行分类。其中,单元测试是对软件中的最小可测试单元进行检查和验证的测试,它需要从软件的内部结构出发设计测试用例。多个模块可以独立地进行测试。其他常见的软件测试分类包括集成测试、系统测试、验收测试等。 在软件测试过程中,还有一组测试原则可以参考。这些原则旨在寻找软件的错误和缺陷,评估和提高软件的质量。这些原则包括测试的目标明确、测试应该在代码编写之前开始、测试用例应该覆盖所有可能的情况、测试应该是可重复的、测试应该独立于开发团队、测试应该进行验证和验证等。这些原则有助于确保软件测试的有效性和全面性。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫无涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值