当前位置:文档之家› 软件测试基础知识

软件测试基础知识

第一章测试基础软件测试的定义:使用人工和自动的手段来运行或测试某个系统的过程。

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

软件测试的目的:证明检测预防证明:1)获取系统在可接受风险范围内可用的信心2)尝试在非正常情况和条件下的功能和特性3)保证一个工作产品是完整的且可用或可被集成的检测:1)发现缺陷,错误和系统不足2)定义系统能力和局限性3)提供组件、工作产品和系统的质量信息预防:1)通过将测试活动提前介入到软件生命周期中,尽早的发现并消除前期研发阶段引入的缺陷,以防止前期缺陷遗留并放大到后续环节2)通过对发现的缺陷进行分析,找出导致这些缺陷产生的流程上的不足,通过改进流程,预防同类缺陷再次产生软件生命周期:计划->需求分析->概要设计->详细设计->编码->测试->运行维护1)计划:SDP(软件研发计划)UTP(单元测试计划)SVVP(软件验证与确认计划)ITP(集成测试计划)STP(系统测试计划)2)需求分析:SRS(软件需求规格说明)根据研发类型,需求来源,则用户针对的具体对象分为两种:针对产品的与针对项目的3)设计:HLD(High Level Design概要设计)LLD(Low Level Design详细设计)4)编码:写成以某个程序设计语言表示的源程序清单,使用RDBMS(Relational Database Management System关系型数据库管理系统)工具建立数据库。

5)测试:检验软件是否符合客户需求,达到质量要求。

按测试阶段分单元测试(UT)集成测试(IT )系统测试(ST )——最先介入,最晚结束6)运行维护:将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对其进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。

软件研发的相关要素:人员过程工具1)人员组成分析人员设计人员开发人员测试人员配置管理人员(CMO,SCM )SQA (软件质量保证)2)组架构项目经理配置经理测试经理开发经理配置管理组软件测试组软件开发组SQA软件研发流程:常见的软件研发流程:瀑布模型,螺旋模型,RUP 流程,IPD 流程软件缺陷和BUG (包括错误和不足):缺陷的引入是随时的,不确定的。

缺陷可以归结为三类:遗漏、错误、额外的实现。

过程(流程)技术(工具)质量人(组织)附录:1)SDP:Software Develop Plan软件研发计划2)SVVP:Software Verification and Validation Plan软件验证与生效计划第二章测试过程划分为三阶段:单元测试(Unit Testing)集成测试(Integration Testing)系统测试(System Testing)*确认测试(Validation Testing)UT IT STVTa)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.输出域覆盖回归测试(Regression Testing)目的:验证缺陷得到正确的修复,同时对系统的修复没有影响以前的功能。

*回归测试可以发生在任何一个阶段1)回归测试流程a.制定策略b.确定版本c.按策略执行测试d.验收通过:则关闭缺陷跟踪单不通过:返回缺陷跟踪单,开发人员重新修改,再次提交2)回归测试策略a.完全重复测试覆盖修改法b.选择性重复测试周边影响法:比a更充分。

难点:如何选取用例指标达成法:选择一个最小的测试用例集合风险识别法:选择重要级别高的用例3)回归测试自动化a.程序自动化:功能测试自动化b.自动配置:Builder、ANT/NANT、BVTc.测试用例、结果自动化:测试管理工具QTP、Robot(基于GUI)d.利用脚本语言:TCL、Python、Perle.专用测试工具:f.尽早考虑(可继承、推广):其他测试阶段(针对用户):1)验收测试→项目型验收依据:合同、需求规格说明书、验收测试计划2)α测试β测试产品型γ测试●α测试是用户在开发环境下,开发者或测试人员在用户旁,记录错误情况等,环境是受控的。

目的在于评价软件的FLURPS(即功能、局域化、可用性、可靠性、性能和技术支持)●β测试是在实际使用环境下,开发者及测试人员不在测试现场。

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

第三章软件质量软件质量的定义:实体(被测试系统)基于某些特性满足需求的程度。

实体特性需求1)实体:软件——被测对象2)特性:基于ISO9126分析SRS得出测试内容,分析测试内容的两种主要方法:a.ISO9126分析方法优点:国际标准b.测试类型分析方法缺点:无标准,实际应用中需要企业根据自身行业特点定义测试类型*相同点:成功经验复用,二者存在对应关系3)需求:质量三个层次a.符合需求规格(内部要求)b.用户显示需求(外部要求)c.用户隐式需求(使用要求)4)质量铁三角:过程技术组织软件质量管理体系质量管理理论:第一阶段:检验质量管理第二阶段:统计质量控制第三阶段:全面质量管理流行的质量管理体系1)ISOa.三个核心ISO9000管理理念和原则Iso9001组织质量管理体系必须履行的的要求做了明确的规定ISO9004组织持续改进的指南标准b.八项质量原则以顾客为中心*发挥领导作用全员参与过程方法管理的系统方法持续改进基于事实的决策方法*互利的供方关系TC 质量评价(通过质量统计学得出)需求覆盖通过用例发现缺陷数占总发现缺陷数比例Defects/TC(每用例缺陷数)100%TCs/页SRS 测试前期发现严重缺陷数占总发现严重缺陷数比例2)CMM/CMMI(Capability Maturity Model)能力成熟度模型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有无错误)后一语句\前一结点1234562100000301000040010015000100600001071数据流分析:测试变量的使用数据流表:列出每个语句变量的使用包括变量的赋值(定义)和引用a=b+c;赋值a ,引用b ,cif(x==5);引用xa=a+b+c;赋值a ,引用a ,b ,c根据代码得到数据流表,分析数据流表找到以下错误:1)变量未定义但被引用;2)变量定义但未被引用;代码优化:结构优化(可读性):1个函数→2个函数效率优化(时间、空间):1)时间:高斯算法2)空间:可移植性优化:软件OS信息流分析:语句与变量的对应其他测试方法逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、路径覆盖、。

if(x>=1)y=5;软件OSA (操作系统抽象)OS3个语句构成if…elsey=5语句覆盖y=0有1个if...else 判定语句→判定覆盖x>=1条件→条件覆盖一般通过工具来进行检查——借助插装技术(程序插装:在程序中插入一些打印语句等)else y=0;test.c 覆盖工具testol.c (testol.exe)白盒测试难点1)看懂LLD ,能读懂代码2)编写测试代码黑盒测试(无针对性)质量特性:反映软件质量的不同方面,从不同角度度量软件质量测试:从不同角度检测软件质量灰盒测试黑盒(外部、整体的信息)白盒(内部、细节的信息)灰盒(两者都有)例子:IE网站网页能否打开网页上功能的使用网页打开原理(IE 、网站之间的数据)静态、动态代码→编译(检查语法错误):静态→编码规则检查:静态→注释率统计:静态→走读代码:静态→UT 执行:动态例子:OsCommerce 开源的电子商务网站测试:注册功能测试——要求网站必须运行:动态直接读代码来测试——不要求网站运行:静态静态测试:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。

相关主题