软件测试相关简要记录

软件测试

编码和测试统称为实现。

通常在编写出每个模块之后就对程序做必要的测试,这叫做单元测试。模板的编写者和测试者是同一个人。

之后会进行其他综合测试,由专门的测试人员承担这份工作,也就是软件测试工程师。

软件测试的工作量往往占软件开发总工作量的40%以上。

编码

对于编码有如下要求:

1)程序内部的文档

2)数据说明

3)语句构造

4)输入输出

5)效率:程序运行时间、存储器效率、输入输出的效率

软件测试基础

一、软件测试的目标

1)测试是为了发现程序中的错误而执行程序的过程

2)好的测试方案极可能发现迄今为止尚未发现的错误的测试方案

3)成功的测试是发现了至今为止尚未发现的错误的测试

注:测试只能查找出程序中的错误,而不能证明测试中没有错误。

二、软件测试准则

1)所有的测试都应该能追溯到用户需求

2)应该远在测试开始之前就制定出测试计划

3)把Pareto原理(测试发现的错误中的80%很可能是程序中20%的模块造成的)应用到软件测试中

4)应该从“小规模”测试开始,并逐步进行“大规模”测试

5)穷举测试是不可能的

6)应该由第三方从事测试工作

三、测试方法

白盒测试和黑盒测试,先进行白盒测试,后进行黑盒测试。(随后会有补充)

四、测试步骤

1)模块测试(又被称为单元测试)

2)子系统测试(将经过单元测试的模块放到一起形成一个子系统)

3)系统测试(将经过测试的子系统装配成一个完整的系统来测试)

4)验收测试(将软件系统作为一个单一的整体,它是用户积极参与下进行的,验收测试也被称为确认测试)

5)平行运行(将新旧系统同时运行进行比较,目的是:1,可以在准生产环节中运行新系统而不冒风险;2,用户能有一个熟悉新系统的过程;3,可以验证用户指南和使用手册之类的文档;4,能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标)

五、测试阶段的信息流

输入的信息由两大类:

1)软件配置,包括需求说明书、设计说明书和源程序说明书清单等

2)测试配置,包括测试计划和测试方案,所谓测试方案不仅仅是测试时使用的输入数据(称为测试用例),还应该包括每组输入数据预定要检验的功能,以及每组数据预期应该取得的正确输出

(测试配置是软件配置的一个子集,也就是说最终交出的软件配置应该包括测试配置和测试的实际结果和测试的记录)

单元测试

一、测试重点

1)模块接口

包括:参数的数目、次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致

2)局部数据结构

常有局部数据说明、初始化、默认值等方面的错误

3)重要的执行通路

4)出错处理通路

错误常在:1 对错误的描述是难以理解的;2 记下的错误与实际遇到的错误不同;3 在对错误进行处理之前,错误条件已经引起系统干预;4 对错误的处理不正确;5 描述错误的信息不足以帮助确定造成错误的位置

5)边界条件

二、代码审查

三、计算机测试

为每个单元测试开发驱动软件和(或)存根软件

集成测试

一、自顶向下集成

二、自底向上集成

三、在软件结构的较上层使用自顶向下方法与软件结构中较下层使用的自底向上方法相结合。

四、回归测试

确认测试

确认测试也称为验收测试,它的目的是验证软件的有效性。

验证(verification)是指保证软件正确的实现了某个特定要求的一系列活动。

确认(validation)是指保证软件确实满足了用户需求进行的一系列活动。

软件有效性的定义:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。

一、软件测试的两种可能结果:

1)功能和性能与用户要求一致,软件是可以接受的。

2)功能和性能与用户要求有差距。

二、软件配置复查

三、Alpha和Beta测试

Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。也就是说Alpha测试是在受控的环境中进行的。

Beta测试由软件的最终用户在一个或多个客户场所进行。开发者通常不在场,也就是说是不受控的环境。用户记录在Beta测试中遇到的一切问题(真实的或想象的),并定期将这些报告给开发者。

也就是说,作为计算机/软件的用户而言,我们平常接触最多的Beta版的软件,而Alpha版的软件除了自己开发/测试的基本不会遇到。

白盒测试技术

一、逻辑覆盖

1)语句覆盖

2)判定覆盖

3)条件覆盖

4)判定/条件覆盖

5)条件组合覆盖

6)点覆盖

7)边覆盖

8)路径覆盖

二、控制结构测试

1)基本路径测试

主要是:1 根据过程设计结果画出相应的流图;2 计算流图的环形复杂度,环形复杂度定量度量程序的逻辑复杂性;3 确定线性独立的基本集合;4 设计可强制执行基本集合中每条路径的测试用例

环形复杂度计算方式:V(G)=P+1,P是流图中判定(if等)结点的数目。

2)条件测试

3)循环测试

主要包括:简单循环,嵌套循环,串接循环(也就是两个循环并列,而非包含关系,包含关系时为嵌套循环)

黑盒测试

一、黑盒测试力图解决的问题:

1)功能不正确或遗漏了功能

2)界面错误

3)数据结构错误或外部数据库访问错误

4)性能错误

5)初始化和终止错误

二、设计黑盒测试时应考虑的问题:

1)怎样测试功能的有效性?

2)哪些类型的输入可构成好测试用例?

3)系统是否对特定的输入值特别敏感?

4)怎样划定数据类的边界?

5)系统能够承受什么样的数据率和数据量?

6)数据的特定组合将对系统运行产生什么样影响?

三、等价划分

将输入域划分成若干个数据类,据此导出测试用例。

四、边界值复习

五、错误推测

调试

一、调试途径

1)蛮干法

2)回溯法

3)原因排除法

软件可靠性

软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率

错误的含义是开发人员造成的软件差错(Bug)

故障的含义是由错误引起的软件的不正确行为

一、估算平均无故障时间的方法

1)符号

ET——测试之前程序中错误总数

IT——程序长度(机器指令总数)

τ——测试(包括调试)时间

Ed(τ)——在0至τ期间发现的错误数

Ec(τ)——在0至τ期间改正的错误数

2)估计错误总数

植入错误发和分别测试法

时间: 2024-11-08 19:35:28

软件测试相关简要记录的相关文章

软件測试相关简要记录

软件測试 编码和測试统称为实现. 通常在编写出每一个模块之后就对程序做必要的測试,这叫做单元測试. 模板的编写者和測试者是同一个人. 之后会进行其它综合測试.由专门的測试人员承担这份工作.也就是软件測试project师. 软件測试的工作量往往占软件开发总工作量的40%以上. 编码 对于编码有例如以下要求: 1)程序内部的文档 2)数据说明 3)语句构造 4)输入输出 5)效率:程序执行时间.存储器效率.输入输出的效率 软件測试基础 一.软件測试的目标 1)測试是为了发现程序中的错误而执行程序的过

android 源码编译及其运行模拟器相关问题记录

最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想自己在编译一下源码,并且运行在模拟器中. 源码的版本不同,需要的jdk可能也有所不同,一切都参照官方给与的文档,下载源码的方法也参考官方文档. 注意点:1.环境变量要设置正确,不要出现错误 2.基本没有一次就能顺利编译源码的,多少都会出错,根据提示修改错误,安装一些包和库就可以搞定,具体问题具体查找,我遇到的问题也可多了,都是按官方文档解决的.有些问题可能和你的编译环境相关,这

CentOS 7.x 防火墙开放端口相关用法记录

CentOS 7.x 防火墙开放端口相关用法记录 前言 防火墙对服务器起到一定的保护作用,所以了解一些相关的操作是很有必要的. 在CentOS 7.x中,有了一种新的防火墙策略,FireWall , 还记得在6.x中用的还是iptables. 这几天一直在自己的服务器上瞎搞,由于关于这个防火墙的命令还没有烂熟于心,每次都需要google一下,所以就自己动手整理了一下,方便今后的使用也同时加强记忆. 基本命令 在CentOS 7.x中,防火墙的基本命令是 firewall-cmd 先通过man f

tiny210(S5PV210)LCD控制器RGB配置相关学习记录

最近在弄210LCD的配置,在这里记录下一些学习的东西,有错恳请指正,互相学习. datasheet里面有好多名词,先记录一下一些名词的大概意思: alpha blending:本来采用R.G.B三通道来表示颜色,但是显示控制器分为5个图层,故图层混合时需要按照一定的比例因子来混合以实现图层的透明度,而不至于将背景图层完全覆盖掉,现在增加alpha通道来作为那个颜色混合时的调节因子,配置相关的设置后,透过调节alpha值则可以实现图层间透明度的控制,而所谓的透明度,相当于是两图层的按照不同的合成

Yii2的相关学习记录,Gridview小部件使用及kartik-v/yii2-grid扩展(五)

现在记录下Gridview的相关内容,也是强迫症犯了,Yii2自带的Gridview虽然不错,但是过滤栏如果一些字段用不着,不会自动合并成一行,当然也可以过滤栏不用,而是在最上方自己写一些需要检索的数据,但是这样很麻烦,还要自己去规划样式,写检索什么的.正好在搜索将检索栏和标题合并时,看到了kartik-v/yii2-grid可以实现这些功能,而且还自带导出excel.csv等数据,所以也顺便试了下它的功能,调出了自己喜欢的样式.在用kartik-v的Gridview之前我们还是要了解Yii2自

Yii2的相关学习记录,前后台分离及migrate使用(七)

最近一直忙其它的(其实是懒!),将<深入理解Yii2>看了一遍,一些当初没明白的稍微明了了点,然后又看yii2的图片上传等处理.富文本.restful什么的,但由于没进行到这里,只看也不管用啊,所以还是按照步骤一步步来,先说说前后台分离.(其实普通的内容管理站点用不着下面所说的彻底分离什么的,看看也无妨) 个人感觉前后台的情况有这么几种,首先是前后台是否是用一个验证体系,其次是前后台是否共用一个数据表.一般来说下面三种比较常用吧: A.共用一个验证体系和一个数据表. B.两个验证体系和共用一个

Yii2的相关学习记录,安装Yii2(一)

原先学习过Yii1的相关知识,但是也是半懂不懂的,但稍微的结构是了解的.现在利用晚上的时间学习下Yii2的使用,这里记录下,以免自己以后忘记. 目前已看一部分Yii2的权威指南,虽然Yiiframework中文网站的权威,跟英文版本比较有些章节缺失内容,但也能大体了解,用的某功能时再仔细看.顺便看了慕课网上的“与Yii框架不得不说的故事”,讲的也不错的. 还有比较重要的是需要FQ用google,毕竟是国外的框架,中文的内容比较少,大部分解答都能在谷歌中搜索到,这里可以用XX-Net,具体的如何用

log4j配置文件简要记录

和大多数配置文件一样,log4j配置文件也有key-value形式和xml形式.这里主要记录一下key-value的形式 我们通过配置,可以创建出Log4j的运行环境.Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式. 一.直接看一个配置文件(log4j.properties) # 配置根log,第一个参数为你想要输出的日志的等级,后面的是自定义的输出源(appender) log4j.rootLogger = debug,console,I,E ###

Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用alert.confirm和dialog的小部件封装,当然了,本质上还是bootstrap3-dialog,可以用原生的方法,原生方法的用法点这里,而bootstrap3-dialog又是基于bootstrap3的modals做的封装.嗯,基本关系就是这样.在搜索这个相关知识时,经常会看到有人提到b