含测试点归纳

2023-11-10

小编提示:本文含静态测试主要检查点,纯干货,看官们可先收藏后阅读。

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


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

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

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

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

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

2) 缩短产品上市时间;

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

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

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

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

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

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

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

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

03/如何进行静态测试?

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

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

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

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

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

48_2062_65fffcc92ab0a56.png

 

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

1) 界面测试:见表2

48_2062_c1ea944899a085a.png

48_2062_c04ac23db80ac81.png48_2062_7a74909cebdd2c2.png48_2062_94fcc322f12acfb.png48_2062_9ab9debc769593e.png

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

2) 文档测试

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

3) 代码测试

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

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

48_2062_5d6470d59586218.png 

48_2062_066c3e57b81ae38.png

 

这段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) 程序适当加些空行。空行不占内存,会使程序看起来更清晰。

48_2062_22761ed4860a17e.png 
04/总结

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

 

恒生开发者社区 - 恒生电子面向所有开发者提供服务分享、技术交流和互联共通等一站式服务平台。

转载于:https://my.oschina.net/u/3052891/blog/863182

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

含测试点归纳 的相关文章

  • 开发中遇到的问题

    1 当写一个导出功能时 因为编码写URL地址 参数的时候 用反转字符串的时候换行了 造成地址拼接不成 一直报错 后来发现是编码格式造成的 已解决 解决方案 不换行或者用 拼接 2 当本地项目起两个终端的时候 会有两个地址 如http loc

随机推荐

  • CSS !important 规则

    CSS important 规则 那么什么是 important呢 CSS中的 important 规则用于向属性 值添加比正常值更重要的内容 事实上 如果你用 important 规则 它将覆盖该元素上该特定属性的所有以前的样式设置规则
  • 利用Matlab实现贝叶斯优化卷积神经网络进行数据回归预测

    利用Matlab实现贝叶斯优化卷积神经网络进行数据回归预测 概述 数据回归预测是一项重要的任务 可以通过建立卷积神经网络 Convolutional Neural Network CNN 来实现 然而 在模型参数调优方面存在着挑战 为了解决
  • http请求参数编码问题

    给某api发送http请求 结果查不到数据 而api开发者自测可以查到数据 僵持不下 经过分析发现 我的url是经过urlencode编码的 传出去的中文变成 E5 B2这种 而api开发者的url是明文传输中文 我通过httpclient
  • 构造原生单选或者多选下拉框

    function getRadioList tag pageNum pageSize ajaxHelper ajaxFun type post url data data contentType application json async
  • 急速安装git lfs

    什么是git LFS LFS是large File Storage的缩写 专门用来帮助git管理大型文件 一 curl s https packagecloud io install repositories github git lfs
  • 【问题解决】eclipse ‘Launching Hello'has encountered a problem

    问题 删除eclipse很多项目后 再次运行某一个项目 就会出现错误 eclipse Launching Hello has encountered a problem 解决方案 点此启动此项目 即可 原因 看网上答案 原来点 run 时是
  • 3D 智慧农场可视化——解锁绿色生态田园

    何为 无人农场 中国工程院院士罗锡文用五句话高度概括 耕种管收生产环节全覆盖 机库田间转移作业全自动 自动避障异况停车保安全 作物生产过程实施全监控 智能决策精准作业全无人 随着新一代信息技术飞速融入传统产业 农业数字化 网络化 智能化逐步
  • 聊天室--javaWeb

    文章目录 一 简介 项目说明 实现的主要功能 系统架构 二 项目代码和demo地址 项目代码 项目demo地址 三 具体的功能实现 登录功能 单点登录 聊天功能的实现 踢人功能 简单的分权限 四 补充说明 关于代码 关于项目部署 一 简介
  • 方舟官方服务器怎么显示血量,方舟端游怎么显示血量

    解决方舟如何显示伤害数字 在ARK ShooterGame Saved Config WindowsNoEditor文件夹下的GameUserSetting文件的 ServerSettings 的最后一行中添加命令 ShowFloating
  • array_filter函数的简单使用

    array filter函数 学习笔记 代码 function test odd var 先创建一个方法 方法是调动test odd函数 return var 1 返回条件 取奇数 a1 array a b c 2 3 4 11 23 ec
  • #vue# vue锚点定位,滚动到具体位置

    需求 点击导航栏的各个tab 跳转 滚动 到当前页面的具体位置 步骤 1 首先在导航栏的版块里面加入方法goToAnchor 以及 跳转的id类名 div class nav item center div About div div To
  • 查看.o, .obj文件符号列表,强大的nm命令

    nm命令可以查看 linux以及windows下的 o obj文件中的符号列表 其中 o文件可以由gcc g 编译得到 obj由vc编译得到 太爽了 以后遇到undefined reference错误的时候就可以这个命令搞定了 举一例子 在
  • 【java笔记】常用接口(2):Consumer接口

    Consumer接口是一个消费型接口 泛型指定什么类型 就可以使用accept消费什么类型数据 直接输出 public class Demo public static void main String args method asd na
  • 高德地图弹窗使用vue模板

  • android 遍历assets下的文件

    在AssetManager中有个list 方法 传入你的子文件名称即可 String flLists this getAssets list your subdir 如果是根目录 那么就是这么写 AssetManager assetMana
  • 集合框架的简要介绍

    目录 集合和数组的区别 Collection接口 ArrayList实现类 ArrayList的创建和使用 linkedList Set接口及其实现类 Set接口特点 HashSet实现类 HashSet特点 HashSet避免对象重复的规
  • Service能够创建界面(addView)吗?

    一个Service能够创建界面 addView 吗 一个app 只有Service 没有Activity 能够通过WindowManager调用addView 添加可视界面吗 答案是可以 但是能够创建的界面类型 WindowManager
  • 虚拟化原理介绍

    什么是虚拟化 一台PC机的组成包括 Keyboard 键盘 Monitor 显示器 CPU RAM I O Disk Network 这是基本的五大部件 虚拟化就是在这些基础物理设备上运行多个OS 虚拟化面临的重要问题概述 CPU RAM
  • Android :提取字符串当中的数字

    String a String regEx 0 9 Pattern p Pattern compile regEx Matcher m p matcher fl System out println m replaceAll trim 结果
  • 含测试点归纳

    小编提示 本文含静态测试主要检查点 纯干货 看官们可先收藏后阅读 从是否执行被测试软件来进行分类 测试可以分为静态测试和动态测试 软件本身包含了各种代码 如果只是检查代码和文档 而不执行被测试的软件 此时所进行的就是静态测试 反之 如果在测