软件测试方法——静态测试与动态测试

2023-11-17

从测试方法的角度可以分为手工测试和自动化测试。

1、静态测试

    所谓静态测试static testing)就是不实际运行被测软件,而只是静态地检查程序代码界面或文档中可能存在的错误的过程。

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

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

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

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

    其中后两者的测试容易一些,只要测试人员对用户需求很熟悉,并比较细心就很容易发现界面和文档中的缺陷。而对程序代码的静态测试要复杂得多,需要我们按照相应的代码规范模板来逐行检查程序代码。那么我们从哪里获得这个规范模板呢?其实没有一个统一的标准,每个公司内部一般都有自己的编码规范,比如《c/c++编码规范》,你只需要按照上面的条目逐条测试就可以了。当然很白盒测试工具中就自动集成了各种语言的编码规范,比如parasoft公司的C++Test就集成了C/C++的编码规范,我们只要点击一个按钮,这些工具就会自动帮助我们检测代码中不符合语法规范的地方,非常方便。

    下面我们举一个实际的例子。

       C语言程序的静态分析和动态分析

#include <stdio.h>

Max(float x, float y)

{

float z;

z=x>y?x:y;

return(z);

}

Main()

{

float a, b;

int c;

scanf(“%f, %f”&a,&b);

c=max(a,b);

printf(“Max is %d\n”, c);

}

    这段C语言编写的小程序,比较简单,实现的功能为:在主函数里输入两个单精度的数ab,然后调用max子函数来求ab中的大数,最后将大数输出。

    我们现在就对代码进行静态分析,主要根据一些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,最后输出的结果就不是ab 中的大数,而是大数的整数部分。

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

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

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

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

程序修改如下:

#include <stdio.h>

float max(float x, float y)//返回两个单精度数中的大数

{

float z;

z=x>y?x:y;

return(z);

}

main()

{

float a;

float b;

int c;

 

scanf(“%f, %f”&a,&b);

c=max(a,b);

printf(“Max is %d\n”, c);

}

 

    根据上面的分析,我们来编写一个简单的C语言代码规范

规范编号

规范内容

是否通过

1

一行代码只做一件事情

 

2

代码行的最大长度控制在70-80字,否则不便于阅读和打印

 

3

函数和函数之间,定义语句和执行语句之间加空行

 

4

在程序开头加注释,说明程序的基本信息;在重要的函数模快处加注释,说明函数的功能

 

5

低层次的语句比高层次的缩进一个tab4个空格)

 

6

不要漏掉函数的参数和返回值,如果没有,用void表示

 

 

2. 动态测试

    动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。

    我们还是以刚才的那段代码为例,实际运行修改后的程序,输入1.2 和3.5两个实数,按回车,得到结果3.500000,与我们预期的相符合。

    这是一个动态测试的过程。可能有的读者会问,以上过程不也是黑盒测试的过程马?黑盒白盒、动态静态,它们之间有什么关系呢?

    它们只是测试的不同角度而已,同一个测试,既有可能是黑盒测试,也有可能是动态测试;既有可能是静态测试,也有可能是白盒测试。

    黑盒测试有可能是动态测试(运行程序,看输入输出),也有可能是静态测试(不运行,只看界面)

    白盒测试有可能是动态测试(运行程序并分析代码结构),也有可能是静态测试(不运行程序,只静态察看代码)

    动态测试有可能是黑盒测试(运行,只看输入输出),也有可能是白盒测试 (运行并分析代码结构)

    静态测试有可能是黑盒测试(不运行,只察看界面),也有可能是白盒测试(不运行,只察看代码)

转载于:https://www.cnblogs.com/pkfy314/p/5872556.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件测试方法——静态测试与动态测试 的相关文章

  • ASP中Utf-8与Gb2312编码转换乱码问题的解决方法

    asp程序在同一个站点中 如果有utf 8编码的程序 又有gb2312编码的程序时 在浏览utf 8编码的页面后 再浏览当前网站gb2312的页面 gb2312编码的页面就会出现乱码 出现这样的问题是当你浏览utf 8编码的时候 服务器默认

随机推荐

  • C++11多线程(三) lock_guard unique_lock

    文章目录 C 11多线程 三 lock guard unique lock 导读 Lock guard 示例代码 lock guard lt gt 的第二个参数 unique lock unique lock源码浅析 部分 unique l
  • Dart IDEA插件安装及工程创建

    安装插件 开打IDEA 选择 File Settings 选择左侧标签plugins 点击右侧下方的Install JetBrains plugin 在弹出的对话框搜索框中输入dart 等待搜索完成后就会列出Dart插件 选中 点击右侧的I
  • Oracle 高CPU SQL查找

    先top命令 找到PID 再在SQL界面用管理员权限查询 select sql text spid v session program process from v sqlarea v session v process where v s
  • 史上最全的CSS hack方式一览

    http blog csdn net freshlover article details 12132801
  • charge用法

    I mean I can stop charging anytime I want 老友记 第一季 第一集 我的意思是 我可以随时忍住挥霍 及物动词 vt 1 索价 对 索费 课 税 O1 for This store often char
  • socket超时设置 之 ioctlsocket 函数全面解析

    先看看MSDN标准解释 int ioctlsocket SOCKET s long cmd u long FAR argp Parameters s in Descriptor identifying a socket cmd in Com
  • SVN客户端安装及使用

    SVN客户端安装及使用 安装svn客户端 svn常用命令 将指定仓库checkout到当前目录 添加指定文件 添加所有文件 提交文件 更新文件 更新当前目录所有文件 更新指定文件 删除文件 查看修改记录 查看当前目录的修改记录 查看某个文件
  • 车险保单在线OCR识别,字段很全,可以可以

    快瞳科技 车险保单识别 在线测试后发现 保险公司名称 保单号或者合同号 总保费 保险期间 业务类型 车型保单类型 保单名称 被保人信息 被保险人 被保人姓名 被保人证件号码 被保人电话号码 被保人联系地址 车辆信息 车牌 车辆种类 车辆使用
  • 二分查找4 - 搜索旋转排序数组

    搜索旋转数组 1 题目 整数数组 nums 按升序排列 数组中的值 互不相同 在传递给函数之前 nums 在预先未知的某个下标 k 0 lt k lt nums length 上进行了 旋转 使数组变为 nums k nums k 1 nu
  • 秒天秒地!黑马王炸学科,均薪18k+,最高42000元!

    掌握AI的同学 握住了高薪密码 黑马北京校区人工智能开发 16 班的就业炸了 毕业仅 7 个工作日 班级就业率便达到 65 班级均薪高达 18340 9 元 最高薪资更是冲到了 42k 班级就业详情数据 滑动沾高薪喜气 看完这无敌的就业喜报
  • Three.js使用OrbitControls后修改相机旋转方向无效

    1 问题复现 在项目中添加了OrbitControls控制器来控制相机的旋转和平移 但是需要修改初始的相机角度 于是我把相机的角度进行修改 如下 const camera new THREE PerspectiveCamera 75 vie
  • linux nginx 配置

    http blog csdn net Colton Null article details 78439174 locationNum 8 fps 1 之前发布过一篇如何在Tomcat中配置二级域名 现在发现几个月前的我太年轻了 哎 过几个
  • Leetcode算法——63、不重复路径II(unique paths II)

    一个机器人位于一个m n的网格的左上角 它每次只能向下或向右移动一格 它试图到达网格的右下角 网格中有一些障碍物 机器人不能通过 求有多少种不重复的路径 备注 1 m 和 n 都不大于 100 2 障碍物和空地分别被标为 1 和 0 示例
  • 如何开发一个小程序游戏?

    小程序游戏开发需要开发人员具备以下几点能力 有一定的编程基础 例如 JavaScript TypeScript 至少熟悉一种游戏开发引擎 比如 Cocos Unity等 对游戏机制 游戏系统有一定的理解 有一定的 UI 界面审美 能够开脑洞
  • 字典树Trie和三叉搜索树Ternary Tree的学习总结

    字典树Trie和三叉搜索树Ternary Tree的学习总结 出处 西西整理 作者 西西 日期 2012 12 31 2 39 04 大 中 小 评论 0 我要发表看法 Trie树 又称字典树 单词查找树或者前缀树 是一种用于快速检索的多叉
  • 第38讲 Android Camera2 API 通过CropRegion控制Zoom缩放

    本讲是Android Camera专题系列的第38讲 我们介绍Android Camera2 API专题的通过CropRegion控制Zoom缩放 包括如下内容 Android Zoom简介 如何查询当前Camera支持的Zoom能力 通过
  • pycharm中from,import文件/模块出现问题(最全方法)

    1 引用本地文件 如上图所示 在pycharm中可能会出现引用 本地项目文件夹中的 py文件出现问题的时候 这时我们需要考虑是否是IDE环境未将项目路径设置到引用环境变量中 有一下几种方法可以解决 1 这时可以通过sys path inse
  • iOS开源系列——OC框架排名列表

    Objective C框架排名 快点我
  • PRD文档范例,产品经理值得收藏的写作手册

    2015年 我写了一篇梳理PRD的文章 PRD到底该怎么写 获得3 5万次阅读 423次收藏 至今已过去5年 在这5年里 我一直从事产品产品相关的工作 也经历过一次完整的创业 对PRD又有了一些新的思考 这篇文章是 PRD怎么写 的升级版
  • 软件测试方法——静态测试与动态测试

    从测试方法的角度可以分为手工测试和自动化测试 1 静态测试 所谓静态测试 static testing 就是不实际运行被测软件 而只是静态地检查程序代码 界面或文档中可能存在的错误的过程 从概念中我们可以知道 其包括对代码测试 界面测试和文