软件测试基础知识.docx

上传人:b****4 文档编号:27494862 上传时间:2023-07-02 格式:DOCX 页数:20 大小:149.06KB
下载 相关 举报
软件测试基础知识.docx_第1页
第1页 / 共20页
软件测试基础知识.docx_第2页
第2页 / 共20页
软件测试基础知识.docx_第3页
第3页 / 共20页
软件测试基础知识.docx_第4页
第4页 / 共20页
软件测试基础知识.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

软件测试基础知识.docx

《软件测试基础知识.docx》由会员分享,可在线阅读,更多相关《软件测试基础知识.docx(20页珍藏版)》请在冰豆网上搜索。

软件测试基础知识.docx

软件测试基础知识

第一章测试基础

软件测试的定义:

使用人工和自动的手段来运行或测试某个系统的过程。

其目的是检验它是否满足规定的需求或弄清预期结果与实际结果间的差别。

软件测试的目的:

证明检测预防

证明:

1)获取系统在可接受风险范围内可用的信心

2)尝试在非正常情况和条件下的功能和特性

3)保证一个工作产品是完整的且可用或可被集成的

检测:

1)发现缺陷,错误和系统不足

2)定义系统能力和局限性

3)提供组件、工作产品和系统的质量信息

预防:

1)通过将测试活动提前介入到软件生命周期中,尽早的发现并消除前期研发阶段引入的缺陷,以防止前期缺陷遗留并放大到后续环节

2)通过对发现的缺陷进行分析,找出导致这些缺陷产生的流程上的不足,通过改进流程,预防同类缺陷再次产生

软件生命周期:

计划->需求分析->概要设计->详细设计->编码->测试->运行维护

1)计划:

SDP(软件研发计划)UTP(单元测试计划)

SVVP(软件验证与确认计划)ITP(集成测试计划)

STP(系统测试计划)

2)需求分析:

SRS(软件需求规格说明)

根据研发类型,需求来源,则用户针对的具体对象分为两种:

针对产品的与针对项目的

3)设计:

HLD(HighLevelDesign概要设计)

LLD(LowLevelDesign详细设计)

4)编码:

写成以某个程序设计语言表示的源程序清单,使用RDBMS(RelationalDatabaseManagementSystem关系型数据库管理系统)工具建立数据库。

5)测试:

检验软件是否符合客户需求,达到质量要求。

按测试阶段分单元测试(UT)

集成测试(IT)

系统测试(ST)——最先介入,最晚结束

6)运行维护:

将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对其进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。

软件研发的相关要素:

人员过程工具

1)

人员组成

分析人员

设计人员

开发人员

测试人员

配置管理人员(CMO,SCM)

SQA(软件质量保证)

2)组架构

软件研发流程:

常见的软件研发流程:

瀑布模型,螺旋模型,RUP流程,IPD流程

软件缺陷和BUG(包括错误和不足):

缺陷的引入是随时的,不确定的。

缺陷可以归结为三类:

遗漏、错误、额外的实现。

 

附录:

1)SDP:

SoftwareDevelopPlan软件研发计划

2)SVVP:

SoftwareVerificationandValidationPlan软件验证与生效计划

第二章测试过程

划分为三阶段:

单元测试(UnitTesting)

集成测试(IntegrationTesting)

系统测试(SystemTesting)

*确认测试(ValidationTesting)

a)UT:

针对软件基本组成单元

目的:

检验软件模块对《详细设计说明书》的符合程度。

UT面向过程:

函数

面向对象:

类属性

方法

b)IT:

针对组装后功能及模块间接口是否正确

目的:

检验软件模块对《概要设计说明书》的符合程度。

c)ST:

针对硬件、外设、某些支持软件、数据和人员等

目的:

检验对《软件需求规格说明书》的符合程度。

d)VT:

纯系统测试,介于IT与ST之间

若该软件包括硬件外设等,则VT相当于IT。

若该软件为纯系统软件,则VT相当于ST。

 

UT,IT,ST的比较

UT

IT

ST

测试方法

白盒(某些情况下也可用黑盒测试)

灰盒

黑盒(某些情况下也可用白盒测试)

考察范围

数据结构、逻辑控制、异常处理

模块间接口组合后的功能

系统相对于需求的符合程度

 

评估标准

逻辑覆盖率

方法:

TDD(测试驱动开发)

接口覆盖率

方法:

1.每个接口被覆盖的程度

2.每个接口的等价类、边界值被覆盖的程度

测试用例对需求项的覆盖程度

方法:

1.等价类两两组合

2.边界值分析

3.业务流程法

4.状态迁移法

5.错误猜测法

6.输出域覆盖

回归测试(RegressionTesting)

目的:

验证缺陷得到正确的修复,同时对系统的修复没有影响以前的功能。

*回归测试可以发生在任何一个阶段

1)回归测试流程

a.制定策略

b.确定版本

c.按策略执行测试

d.

验收通过:

则关闭缺陷跟踪单

不通过:

返回缺陷跟踪单,开发人员重新修改,再次提交

2)回归测试策略

a.完全重复测试

覆盖修改法

b.选择性重复测试周边影响法:

比a更充分。

难点:

如何选取用例

指标达成法:

选择一个最小的测试用例集合

风险识别法:

选择重要级别高的用例

3)回归测试自动化

a.程序自动化:

功能测试自动化

b.自动配置:

Builder、ANT/NANT、BVT

c.测试用例、结果自动化:

测试管理工具QTP、Robot(基于GUI)

d.利用脚本语言:

TCL、Python、Perl

e.专用测试工具:

f.尽早考虑(可继承、推广):

其他测试阶段(针对用户):

1)验收测试项目型

验收依据:

合同、需求规格说明书、验收测试计划

2)

α测试

β测试产品型

γ测试

●α测试是用户在开发环境下,开发者或测试人员在用户旁,记录错误情况等,环境是受控的。

目的在于评价软件的FLURPS(即功能、局域化、可用性、可靠性、性能和技术支持)

●β测试是在实际使用环境下,开发者及测试人员不在测试现场。

●γ测试是产品正式发型的候选版,可能会是以后发行的正式版。

第三章软件质量

软件质量的定义:

实体(被测试系统)基于某些特性满足需求的程度。

实体特性需求

1)实体:

软件——被测对象

2)特性:

基于ISO9126分析SRS得出测试内容,分析测试内容的两种主要方法:

a.ISO9126分析方法优点:

国际标准

b.测试类型分析方法缺点:

无标准,实际应用中需要企业根据自身行业特点定义测试类型

*相同点:

成功经验复用,二者存在对应关系

3)需求:

质量三个层次

a.符合需求规格(内部要求)

b.用户显示需求(外部要求)

c.用户隐式需求(使用要求)

4)质量铁三角:

过程技术组织

软件质量管理体系质量管理理论:

第一阶段:

检验质量管理

第二阶段:

统计质量控制

TC质量评价(通过质量统计学得出)

100%

TCs/页SRS

需求覆盖

Defects/TC(每用例缺陷数)

第三阶段:

全面质量管理

测试前期发现严重缺陷数占总发现严重缺陷数比例

通过用例发现缺陷数占总发现缺陷数比例

流行的质量管理体系

1)ISO

a.三个核心

ISO9000管理理念和原则

Iso9001组织质量管理体系必须履行的的要求做了明确的规定

ISO9004组织持续改进的指南标准

b.八项质量原则

以顾客为中心*

发挥领导作用

全员参与

过程方法

管理的系统方法

持续改进

基于事实的决策方法*

互利的供方关系

2)CMM/CMMI(CapabilityMaturityModel)能力成熟度模型

a.起源:

美国国防部委托立项美国软件工程研究所(SEI)提出的模型

用来:

评估软件承包商能力

协助组织改进过程、提高过程能力

b.必要性

业界的实施标准

业界的交流语言

中国企业获取国际订单的门槛

向下采购的保障

降低软件生产风险的有力手段

c.特点及各级概要

初始级:

不可预测的、无序的、混乱的。

可重复级:

有纪律的,经验复用

已定义级:

标准的、一致的

已管理级:

可预测的

优化级:

不断改进的

3)六西格玛

软件质量模型:

质量模型:

一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础

 

第四章测试方法

UT阶段的工作

开发人员编码编译(测试)编码规则检查(测试)注释率检查(保证充分注释,计算方法:

注释行数/(代码行数+注释行数))代码走读(测试)UT执行

编码规则:

1)变量命名规则如:

gcount全局变量,pcount指针变量

2)If(x==1)应写成if(1==x)避免类似将if(x==1)错写成if(x=1)

UT计划、UT设计、UT实现

IT阶段工作

例如:

测试通信协议栈

层4

层3

层2

物理层

层内集成层间集成

IT计划、IT设计、IT实现

ST阶段工作

ST计划、ST设计、ST实现

搭建测试环境执行

黑盒、白盒例子

1.测试工程师VS医生

2.自动售货机

总结:

两部分信息都是做好测试需要的

使用黑盒测试方法需要了解软件的外部特性(如何使用)

使用白盒测试方法需要了解软件的内部构造和工作原理

针对不同产品如何测试

杯子:

信息外部:

外观、漏水、容量、使用者黑盒

内部:

材质、制造过程白盒

白盒测试方法的好处

1)能对代码进行覆盖

2)能有针对性的进行测试

3)发现及解决BUG的成本较低

控制流分析:

测试代码执行顺序

主要了解如何画控制流图(代码流程图)

代码(检查代码执行顺序控制流图--控制流矩阵二维数组a[6][6]:

a[0][0]=1

有无错误)

后一语句\前一结点

1

2

3

4

5

6

2

1

0

0

0

0

0

3

0

1

0

0

0

0

4

0

0

1

0

0

1

5

0

0

0

1

0

0

6

0

0

0

0

1

0

7

0

0

0

1

0

0

数据流分析:

测试变量的使用

数据流表:

列出每个语句变量的使用

包括变量的赋值(定义)和引用

a=b+c;赋值a,引用b,c

if(x==5);引用x

a=a+b+c;赋值a,引用a,b,c

根据代码得到数据流表,分析数据流表找到以下错误:

1)变量未定义但被引用;

2)变量定义但未被引用;

代码优化:

结构优化(可读性):

1个函数2个函数

效率优化(时间、空间):

1)时间:

高斯算法

2)空间:

可移植性优化:

软件

OS

软件

OSA(操作系统抽象)

OS

信息流分析:

语句与变量的对应其他测试方法

逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、路径覆盖、。

一般通过工具来进行检查

——借助插装技术(程序插装:

在程序中插入一些打印语句等)

3个语句构成if…else

y=5语句覆盖

y=0

有1个if...else判定语句判定覆盖

x>=1条件条件覆盖

if(x>=1)

y=5;

else

y=0;

插装

test.c覆盖工具testol.c(testol.exe)

白盒测试难点

1)看懂LLD,能读懂代码

2)编写测试代码

黑盒测试(无针对性)

两者相对应

质量特性:

反映软件质量的不同方面,从不同角度度量软件质量

测试:

从不同角度检测软件质量

灰盒测试

黑盒(外部、整体的信息)白盒(内部、细节的信息)

灰盒(两者都有)

例子:

IE网站

灰盒

网页能否打开

网页上功能的使用

网页打开原理(IE、网站之间的数据)

静态、动态

代码编译(检查语法错误):

静态编码规则检查:

静态 注释率统计:

静态走读代码:

静态UT执行:

动态

例子:

OsCommerce开源的电子商务网站

测试:

注册功能测试——要求网站必须运行:

动态

直接读代码来测试——不要求网站运行:

静态

静态测试:

不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。

(分为手工和自动)

静态分析技术

静态测试的三个方面:

检查代码、检查文档、检查代码和文档的一致性(code<->LLD)

手工静态测试——同行评审:

读文档、读代码

例子:

如函数:

检查所有定义的变量是否立即初始化。

自动化静态分析:

静态验证、语法分析器、符号执行器

动态分析技术

常用:

路径测试、分之测试、性能测试

1)覆盖率统计:

UT执行(覆盖率统计工具)

2)跟踪:

针对不好测试的一段代码通过设置断点使用单步运行的方式检查变量内存

调试:

定位错误、解决错误

3)调整:

内存、CPU占用,特别是检查是否有资源(内存)泄露

4)模拟

5)断言:

例子:

x=1;

…..

Assert(x==8);断言语句,当程序运行至此处时,X应等于8,若不等于,则报错。

人工、自动化测试相关活动

1)标识:

标识测试范围——对人的经验要求较高,一般由测试经理完成。

考虑内容:

时间、人力

2)设计:

设计测试用例

方法:

等价类、语句覆盖等,方法的使用比较灵活

3)建立:

建立测试环境,包括硬件和软件

例子:

4)执行:

执行测试用例(按照测试步骤)

5)

相同:

通过

不同:

提BUG

检查:

检查测试结果

输入(用例)被测试软件实际输出比较预期输出

适合自动化的活动:

自动化测试执行、自动化测试检查、自动化环境建立

自动化测试的意义

1)提高回归测试效率

a)对BUG修复的验证

b)在软件版本发布前(版本测试):

查看之前的用例是否能通过

迭代开发例子:

通话短信上网MP4

2)运行更多更频繁的测试

例子:

冒烟测试:

硬件通电如冒烟则说明根本无法使用

软件如基本功能无法使用,说明软件质量很差

每日构建(DailyBuild):

要求开发人员下班前将代码放入服务器,半夜时服务器会自动对最新的代码进行编译。

如果编译通过则进行冒烟测试。

(出报告)

3)可进行大量重复及集成操作

例子:

银行系统,测试查询时间,则利用工具注入一亿条数据

4)更好地利用资源

5)测试具有一致性和可重复性

人工的介入会有不确定因素(会造成不可重现的BUG),而自动化不会

6)复用性:

即函数化,脚本的复用

7)减少软件发布的时间:

提高效率

8)增加软件信任度:

提高测试质量

自动化测试的限制

1)只能提高效率,但不能提高有效性

2)没有手工测试发现的缺陷多

例子:

路由器——路线(Add、Del、Show)

3)依赖测试设计,设计不好会遗漏问题

4)依赖开发,开发的变更可能导致前面的测试完全失效

自动化测试引入的时机:

只有当软件比较稳定的情况下才引入

5)非智能

自动化测试的误区

1)用自动化取代手工

2)缺乏测试经验,则由手工转为自动化

3)期望自动化发现大量缺陷

4)安全性错觉

**手工测试是自动化测试的一个基础

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1