摘要:

软件测试作为软件开发中的重要环节,其重要程度不言而喻,从需求定制到软件交付,不仅要保证软件在功能上的要求,同时也要满足性能需求。毕竟,客户体验才是软件赖以生存的基石。本篇文章主要讲述了如何使用 SourceMonitor 这款软件完成最基本的静态测试,整个流程比较简单。


一、软件安装

由于本次实验是基于SourceMonitor这款软件完成的,所以需要先下载相应的安装包,网上搜索一下就很容易找得到。

如果懒得找,小编将其上传到了我们的博客平台,里面不仅有软件的安装包,还有一套基于C++的源码,非常划算,这里放一下资源的链接:https://download.csdn.net/download/qq_37372196/11130535。

软件的整个安装过程基本没什么问题,不认识的英文单词查一下即可解决。


二、认识软件

尽管软件的安装比较简单,但是其使用对于初学者来说还是比较迷茫的。

个人觉得有两大原因:其一是软件的界面为全英文,辨识起来比较费力;其二是我们对于软件测试的理解不够深刻,远远没有掌握到软件测试这门技术的本质。

软件的初始界面较空,其创建项目时的界面如下:


三、使用软件

我们依次进行以下步骤即可:选择测试文件类型,设置项目名称和路径,选择我们将要测试的目录,项目保存的格式。

而后我们会到达如下界面,这时我们设置一下 项目名称 和 项目路径 就可以了。

接下来我们需要选择要进行测试的 文件列表 了,既然是文件列表,那自然是可以选择一个或多个文件。(这里我们暂时先将项目目录里所有的文件都选中)

最后点击ok,我们的操作步骤就算是基本完成了。


四、结果分析

前面我们提到过此软件的 两大难点 ,我们既然已经操作完成了,那么也就相当于解决了其一。

那其二怎么解决?我想,答案就在我们对于实验结果的分析和理解了。

在进行完上述操作后,我们看到的应该是如下界面:

这样一个界面,只有一行,因为我们只选择了一个项目目录。我们先简单对这个结果进行分析一下:

第一项为Checkpoint Name,也就是检查点的名称,其值为Baseline,为什么值是这个呢?因为这是我们自己之前设置的,看一下步骤三的第二张图片就清楚了;

第二项为项目创建时间,第三项为项目目录下的文件,比较简单,这里不再展开解释;

第四项为Lines,代表此项目目录下所有文件的行数之和,其值为428,说明我们选择的项目目录下四个文件的行数加起来是428。究竟是不是这样呢,小编计算了一下:329+37+35+27=428,刚好吻合

后面的指标相对来说更加重要,我们就不分析总的这部分了,因为点进去以后我们可以看到每个文件的详细情况,以进行更加精准的分析。

点进去后我们会看到这样一个界面:

很明显这样一个界面是把测试单位由项目转变为了单个文件,接下来我们逐个进行分析:

(1)Lines,代表此文件代码的行数(包括空行);

(2)Statements,代表此文件所拥有的语句数;

在C++中,语句是以分号结尾的。分支语句if,循环语句for、while,跳转语句goto都被计算在内,预处理语句#include、#define和#undef也被计算在内,对其他的预处理语句则不作计算,在#else和#endif、#elif和#endif之间的语句将被疏忽;

(3)%Branches,完整的写法是Percent Branch Statements,代表分支语句占语句数目的比例。

这里的“分支语句”指的是使程序不顺序履行的语句,包括if、else、for、while、break、continue、goto、switch、case、default和return。需要注意的是,do不被计算在内,由于其对应的while已计算了。另外,异常处理的catch也被作为1个分支计算;

(4)%Comments,完整的写法是Percent Lines with Comments,代表注释的比例。

该值是注释行(包括/*……*/和//……形式的注释)占总行数的比例。一般公司会对每一个文档的header或footer部份进行特殊的声明注释,可以在工程属性中设置过滤,不计算在内;

(5)Class Defs,代表类的个数。

包括class,struct和template在内的个数;

(6)Methods/Class,完整的写法是Methods per Class,代表平均每一个类的方法数。

即包括内联和非内联的,template函数在内的类方法数除以所有类的个数;

(7)Avg Stmts/Method,完整的写法是Average Statements per Method,代表平均每一个函数包括的语句数目。

由总的函数语句数目除以函数数目得到该值;

(8)Max Complexity,代表最大圈复杂度。

圈复杂度是1个函数可履行路径的数目,以下语句为圈复杂度的值贡献1:if/else/for/while语句,3元运算符语句,if/for/while判断条件中的"&&"或“||”,switch语句,后接break/goto/return/throw/continue语句的case语句,catch/except语句等。对应有最大圈复杂度(Max Complexity)和平均圈复杂度(Avg Complexity);

(9)后面的几个指标:Max Depth、Avg Depth、Avg Complexity、Functions,依次代表:最大函数深度、平均函数深度、平均圈复杂度、函数数目。

这几个指标看名字基本就知道意思,这里不再赘述。

(10)其实接下来还有更详细的内容,我们双击“Main.cpp”文件,会看到如下窗口:

这里的指标我们很多都已经分析过了,这里的一个亮点就是将相关指标进行了一定程度上的联合分析,并做出了雷达图与三维柱状图,将数据进行可视化,有利于我们更直观的获取数据特征,有时甚至更容易获取潜在的比较有价值的信息,帮助我们提高软件测试的效率(其实主要是静态测试的效率)。


小结:

初次使用一定的工具进行了软件测试相关的实验。个人觉得,不仅是学会了一个工具的使用这么简单,更重要的是,加深了对于软件测试的一个整体的理解和认识。

小编目前只是博客新人,在校生一名,如果读者对小编写的还比较满意,欢迎关注支持!

如果有什么问题,也可以加小编的QQ进行交流,不过记得备注自己的信息。(QQ:1329924827)

使用SourceMonitor完成静态测试相关推荐

  1. 试用了一下sourceMonitor有点不知所云..

    http://www.campwoodsw.com/sourcemonitor.html 转自 http://blog.csdn.net/summerfang/article/details/1176 ...

  2. 软件测试桌面检查,静态测试的主要方法 - 测试天下,梦寻人生 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    静态测试主要指针对文档,而不是程序代码,进行测试. 静态测试的主要方法有: 桌面检查(Desk checking) 桌面检查是最不正式,也是最省时的静态测试技术.在所有的技术中,桌面检查是唯一一个被鼓 ...

  3. 静态检查------SourceMonitor的学习和使用

    引言 我们提倡编写功能单一.结构清晰.接口简单的函数,因为过于复杂的函数会给我们带来很多问题:加深其他开发人员理解代码的难度:不方便测试人员对其编写测试用例:容易隐藏错误:出现问题难以定位--怎样的函 ...

  4. 什么是静态测试?什么是动态测试?

    如果从被测试对象是否被运行的角度来划分,测试可以分为静态测试和动态测试两种. 静态测试是指不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术.例如:代码走读.文档评审.程 ...

  5. 静态测试 vs 动态测试

    静态测试: 静态测试又可分为代码走查(Walkthrough),代码审查(Inspection),技术评审(Review). 代码走查(Walkthrough) 开发组内部进行的,采用讲解.讨论和模拟 ...

  6. 来聊聊软件测试-静态测试

    在软件测试技术之中,静态测试是经典的测试技术一类.这里我们要概要解释和说明一下静态测试技术,静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否 ...

  7. 软件质量保证与测试技术实验报告(三)静态测试

    1.实验名称--静态测试 2.实验目的 掌握单元测试中的静态测试技术. 3.实验内容 题目:对学生宿舍管理系统(代码见附录B)完成静态测试中的代码测试. 4.实验过程 汇总表: 5.实验心得 通过本次 ...

  8. 软件测试 中静态测试与动态测试的区别

    1.测试部分的不同 静态测试是指测试不运行的部分:只是检查和审阅,如规范测试.软件模型测试.文档测试等.动态测试是通常意义上的测试,也就是运行和使用软件. 2.测试方式不同 静态测试,通过评审文档.阅 ...

  9. 动态测试与静态测试--手工测试和自动化测试

    1.什么是动态测试? 答:指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试唯一的标准就是看是否运行程序. 2.什么是静态测试? 答:不 ...

最新文章

  1. 一b变频器说明书参数一览表_电工常见的23个变频器问题整理,附专业解答
  2. SolverParameter
  3. 计算机动画制作 实验要求,有关计算机动画设计课程教学的对比试验
  4. python不好的地方_Python 语言中经常有疑惑的地方
  5. 解决Eclipse查看源代码出现Source not found的问题
  6. SAP的client概念
  7. QT练习9 Dialog学习
  8. lambda表达式的语法精简
  9. 写论文引用参考文献详细教程
  10. VScode插件管理(C/C++)
  11. python 使用selenium下载文件时,chrome会提示是否下载多个文件(Download multiple files)
  12. 60分钟吃掉嘎嘣脆的DeepCross模型
  13. r语言worldclim数据_MAXENT数据准备:气候数据与高程数据格式的统一
  14. 游戏思考30:技能碰撞检测分类枚举及逆水寒魔兽老兵服副本攻略(英雄武林风云录,后续更新舞阳城、扬州、清明等副本攻略)
  15. win8.1CPU使用率过高、卡顿、破音问题整理
  16. yeezy350灰橙_海外媒体指明某平台Yeezy350灰橙的补货为Fake!但这事没那么简单
  17. 无符号整数--拼数字
  18. wps一直显示正在备份怎么办_wps怎么设置和取消自动备份功能
  19. HTG评论Amped无线TAP-EX Wi-Fi扩展器:2.4Ghz频段的强大功能
  20. C++ 获取时间戳:下周一、月初、月中、月末

热门文章

  1. Hey UI源码市场
  2. 自定义TabLayout
  3. Python爬虫天涯论坛美图
  4. ggplot2-条形图和折线图
  5. 10-113 A1-7在产品表中找出库存量小于订购量的产品信息
  6. CC-Proxy配置网络代理服务器
  7. MySQL的定时任务详解
  8. 糖友低碳水、高蛋白饮食可行吗
  9. matlab中传递函数的离散化
  10. 对日软件开发过程中的质量管理