51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1707|回复: 0
打印 上一主题 下一主题

[转贴] 含测试点归纳 | 浅谈软件测试之静态测试

[复制链接]
  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 527 天

    连续签到: 4 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-8 15:19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    从是否执行被测试软件来进行分类,测试可以分为静态测试和动态测试。软件本身包含了各种代码,如果只是检查代码和文档,而不执行被测试的软件,此时所进行的就是静态测试。反之,如果在测试过程中执行被测试的软件,则所进行的就是动态测试。本文从什么事静态测试、为什么进行静态测试以及如何进行静态测试三个方面进行讲解,和大家分享下个人对于静态测试的一些经验总结。


    01/什么是静态测试?
    静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量
    程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。

    02/为什么要进行静态测试?

    静态分析潜在收益是很高的: 在软件开发生命周期中,越是后来发现的缺陷,其去除成本呈指数上涨,所以缺陷越早发现越好。静态分析是所有测试中可以最先发现缺陷的方法,极大的降低了软件的修复成本。

    对软件经理,静态分析有助于:

    1) 减少部署后存在错误的风险,去除此时发现的错误是非常昂贵的;

    2) 缩短产品上市时间;

    3) 减少代码审查和测试的成本和时间;

    4) 自动化(部分)审查,没有或多个有限的人工检查;

    5) 消除明显的错误以便改善测试的速度和重点;

    6) 提高代码质量(坚持编码标准);

    7) 实现更高的覆盖率(更多的代码检查):与测试覆盖率相关但并不完全一样,因为重点不同。


    对软件开发人员,静态分析有助于:

    1) 提早找到/阻止错误(在错误变得很难处理之前):工具可用作开发周期的一部分,像编译器;更直接,明显的反馈。

    2) 发现/阻止“难以测试”的错误:例如,静态分析善于检测潜在的内存泄露和缓冲区溢出,从而使开发人员更高效,花费更少的时间调试。


    03/如何进行静态测试?

    从概念中我们可以知道,静态测试包括对代码测试、界面测试和文档测试三个方面:

    1) 对于代码测试,主要测试代码是否符合相应的标准和规范。

    2) 对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。

    3) 对于文档测试,主要测试用户手册和需求说明是否符合用户的实际需求。


    静态测试主要检查点:见表1



    下面分别从代码、界面、文档三个方面进行详细说明每一部分应该如何进行测试。

    1) 界面测试:见表2



    主要从联机功能、接口测试、报表测试和批量测试几个方面进行阐述。


    2) 文档测试

    主要是需求文档与实际设计和实现是否相符,可以根据界面测试中的点进行测试。


    3) 代码测试

    程序代码的静态测试要复杂得多,需要我们按照相应的代码规范模板来逐行检查程序代码。

    对代码的检查我们推荐使用现有的工具进行。那么我们从哪里获得这个规范模板呢?其实没有一个统一的标准,每个公司内部一般都有自己的编码规范,比如《c/c++编码规范》,你只需要按照上面的条目逐条测试就可以了。



    这段C语言编写的小程序,比较简单,实现的功能为:在主函数里输入两个单精度的数a和b,

    然后调用max子函数来求a和b中的大数,最后将大数输出。我们现在就对代码进行静态分析,主要根据一些C语言的基础知识来检查。

    我们把问题分为两种,一种必须修改的,另一种建议修改的。


    必须修改的问题有三个:

    1) 程序没有注释。

    注释是程序中非常重要的组成部分,一般占到总行数的1/4左右。程序开发出来不仅是给程序员看,其他程序员和测试人员也要看。有了注释,别人就能很快地了解程序实

    现的功能。注释应该包含作者,版本号、创建日期等,以及主要功能模块的含义。


    2) 子函数max没有返回值的类型。

    由于类型为单精度,我们可以在max()前面加一个float类型声明。


    3) 精度丢失问题。

    大家注意“c=max(a,b)”语句,我们知道c的类型为整型int ,而max(a,b)的返回值z为单精度float, 将单精度的数赋值给一个整型的数,c语言的编译器会自动地进行类型转换,将小数部分去掉,比如z=2.5,赋给c则为2,最后输出的结果就不是a和b 中的大

    数,而是大数的整数部分。


    建议修改的问题也有三个;

    1) Main函数没有返回值类型和参数列表。

    虽然main函数没有返回值和参数,但是我们将其改为void main(void),来表明main函数的返回值和参数都为空,因为在有的白盒测试工具的编码规范中,如果不写void会认为是个错误。

    2) 一行代码只定义一个变量。

    3) 程序适当加些空行。空行不占内存,会使程序看起来更清晰。



    04/总结

    软件测试技术是一门很深的学问,需要测试人员不断去摸索总结,本文只是我对于静态测试的一些看法与总结,希望能够给大家带来帮助。



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 06:39 , Processed in 0.061415 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表