软件测试与质量补充docx.docx
- 文档编号:30407125
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:16
- 大小:259.32KB
软件测试与质量补充docx.docx
《软件测试与质量补充docx.docx》由会员分享,可在线阅读,更多相关《软件测试与质量补充docx.docx(16页珍藏版)》请在冰豆网上搜索。
软件测试与质量补充docx
软件测试与质量补充
1、图覆盖问题
图是测试中最常用到的结构,测试通常打算以某种方式去“覆盖”图。
1、图的定义:
(1)节点的集合N,N为非空
(2)起始结点的集合N0,N0非空
(3)终止节点的集合Nf,Nf非空
(4)边的集合E,每个边表示从一个节点连到另一个;(ni,nj),i是前驱,j是后继
2、与图相关的概念:
(1)路径:
一个节点序列[n1,n2,…,nM],任何一组相邻的节点都表示一条边
(2)长度:
路径中边的个数,一个单独节点的路径长度是0
(3)子路径:
路径p中的一个由若干个节点组成的自序列叫做p的子路径
(4)可达(n),Reach(n):
从节点n开始,有子路径可以达到某个节点,就程那个节点从n节点可达
(5)测试路径:
一个从起始节点出发到达终止节点的路径。
测试路径表示了测试用例的执行:
一些测试路径会被许多测试执行;一些测试路径不会被任何测试执行
(6)SESE图:
所有的测试路径都从唯一的一个节点出发,到另一个节点终止。
1)单一入口,单一出口
2)N0和Nf分别是有且只有一个
(7)访问&遍历
1)Visit(访问):
如果n在路径p中,那么测试路径p访问了节点n
2)Tour(遍历):
如果边e在路径p中,那么测试路径p访问了边e
(8)测试&测试路径
1)path(t):
测试t所执行的路径
2)path(T):
由测试集T执行的测试路径集
3)每一个测试执行且仅执行一条测试路径。
4)如果图中有一个边的序列表示从一个地址到另一个地址,那么就说这个地址(节点或者边)可以从另外一个地址可达。
1、Syntacticreach(语义可达):
图中存在某个子路径
2、Semanticreach(实际可达):
一个测试可以执行这个子路径
3、确定性软件(Deterministicsoftware)–测试总是执行同一个路径
4、不确定性软件(Non-deterministicsoftware)–测试执行不同路径
(9)测试&图覆盖
1)在测试中,我们按一下方法使用图
2)测试需求(TR):
描述了测试路径的属性
3)测试准则:
规定和定义了测试的需求
1、StructuralCoverageCriteria(结构化覆盖准则):
只是按照节点和边来定义图
2、DataFlowCoverageCriteria(数据流覆盖准则):
要求一个图用变量的引用来注解
3、节点覆盖与边覆盖
(1)节点覆盖(NC):
测试集T满足对图G的节点覆盖当且仅当对于N中每一个语义可达的节点n,path(T)中都有一些路径p可以访问到。
即,TR包含图G中每一个可达的节点
(2)边覆盖(EC):
TR包含了图G中每一个可达的长度最多为1的路径(“长度最多为1”允许只有一个节点和一条边的图的存在)
(3)边覆盖比节点覆盖稍强
(4)NC和EC只是当两个节点之间有不同的字路径连接时不同(比如说“if-else”语句)
4、多边覆盖:
(1)边对覆盖(EPC):
TR包含了图G中每一个长度最多为2的可达路径(“长度最多为2”表示包括含有少于2条边的图)。
边对覆盖要求一对边,或者说长度为2的所有子路径都要被覆盖
(2)全路径覆盖(CPC):
TR包含图G中的所有路径。
逻辑的延伸时要求多有的路径都被覆盖
(3)具体路径覆盖(SPC):
TR包含了一个测试路径集合S,S被看作是一个参数
5、图中的循环:
(1)如果一个图包含了一个循环,那么它便有了无数多个路径。
所以,CPC是不可行的;SPC不甚理想,因为这个结果是主观的,因测试人员而异
(2)SimplePath(简单路径):
一个从节点ni到nj的路径,当它除了第一个和最后一个节点相同的时候,没有其他节点出现次数多于1次,那么这个节点是简单路径。
1)没有内部循环
2)包含了其他所有的子路径
3)一个循环是一个简单路径
(3)PrimePath(基本路径):
一个简单路径,满足其不会是任何其他简单路径的子路径。
(4)基本路径覆盖:
TR包含了图G中的所有基本路径
1)要求循环被执行而且可以被跳过的一种简单的、优雅地、有限的规则
2)可以遍历长度为0、1…的所有路径。
即,它包含了节点覆盖和边覆盖
(5)Round-TripPath:
一个起点和终点是同一个节点的基本路径
1)SimpleRoundTripCoverage(SRTC):
对于图G中每一个可达的节点,TR包含了至少一个这个节点的round-trip路径
2)CompleteRoundTripCoverage(CRTC):
对于图G中的每一个可达的节点,TR包含了所有round-trip路径
3)这个规则忽略了不再roundtrip中的节点。
即,他们不包括边对覆盖、边覆盖和节点覆盖
(6)Touring、Sidetrips&Detours
1)基本路径中不包括内部循环,但是测试路径中有可能会有内部循环的存在
2)TourWithSidetrips(旁道遍历):
测试路径p旁道遍历子路径q如果p和q边序列顺序相同,只要测试路径可以返回到同一个节点,那么便可以使用旁道遍历
3)TourWithDetours(绕道遍历):
测试路径p旁道遍历子路径q如果p和q节点序列顺序相同,只要测试路径可以返回到之前节点的后面一个节点,那么便可以使用绕道遍历
6、图的种类:
控制流图、设计结构图、有限状态机和状态图、用例图
7、不可施行的测试需求:
(1)不可施行的测试需求不可能被满足
1)不可达的语句
2)只有当一组相互矛盾的条件满足的时候,才可能被执行的语句
(2)大多数准则包含着不可施行的测试需求
(3)许多时候需求是否可施行难以判断
(4)当不允许使用旁道遍历时,会产生更多的不可施行测试需求;但是一直允许旁道遍历会弱化测试准则
2、代码覆盖
1、基本概念回顾:
(1)图:
通常是控制流图(CFG)
(2)节点覆盖:
执行每一条语句
(3)边覆盖:
执行每一个分支
(4)循环:
循环结构,如for循环、while循环等等
(5)数据流覆盖:
CFG的增强版
1)Defs(定义)指的是为变量分配数值的语句
2)Uses(使用)指的是使用变量的语句
2、控制流图(CFG):
一个CFG通过控制结构模型化了一个方法的执行过程
(1)节点:
语句或者语句序列(基本块)
(2)边:
控制的转移
(3)基本块:
一个语句序列,表示的是如果第一个语句被执行,所有的语句都会被执行(没有分支)
(4)CFG通常还会注有其他的信息:
分支判断、变量定义、变量使用
3、将语句转化为图的规则:
(1)If语句:
(2)if-Return语句:
(3)while循环和for循环:
循环允许添加“额外”的节点,不表示语句或者基本块的节点
(4)do循环,break和continue:
(5)case(switch)结构
4、路径覆盖的特征:
(1)在以路径为特点的软件程序代码中的起点和终点之间经常会有许多可能路径。
(2)每一个决策都会使潜在的路径数量变成原先的两倍;
(3)每一个Case语句都会使潜在的路径数量变为原先的数量乘以Case的分支数量;
(4)每一个循环都会使潜在的路径数量变为原先数量乘以循环中迭代器可能值的个数那么多
5、基本路径测试:
基本路径测试是路径测试和分支测试的结合,这类测试满足了分支测试的需求,并且测试了在这个计算机程序中所有被用来构建任何随机路径的独立路径
(1)基本路径测试过程:
1)画出一个控制流图
2)计算圈复杂度
3)选择一个路径的“基本集”
4)生成测试用例去执行每一个路径
(2)控制流图:
1)用于控制流或者数据流测试
2)图中每个点代表程序中的一系列序列运算,而每条边,代表两个节点之间的一个转移
3)CFG上的路径:
点的序列或者边的序列的完整路径
4)对于一个测试集合来说,如果流图中的任意一个完整路径都是测试集合的线性组合,那么这个测试集合满足基本路径覆盖
(3)圈复杂度
1)计算方法:
V(G)=e–n+2=d+1
2)理论推导结果:
1、若CFG中的所有路径都是可行的,则存在V(G)条线性独立的完整路径,且其它路径可由这些路径线性表示。
2、若CFG中的存在不可行的路径,那么判断程序是否存在V(G)条基本路径是不可判定的。
3)各种测试强度比较:
PathTesting>=BPT>=BranchTesting
6、源代码的数据流覆盖
(1)数据的定义:
将一个数值存在内存中一个存储单元的过程
特征:
1)变量x出现在赋值符号的左边
2)变量x作为实参传入一个方法中,并且在函数中它的值被改变
3)变量x是函方法的一个正式参数(在方法开始时被隐式定义)
4)变量x是程序的一个输入
(2)数据的使用:
访问变量数值时访问某个内存地址的过程
1)变量x在赋值符号的右边
2)变量x出现在条件判断中
3)变量x是一个方法的实际参数
4)变量x是程序的输出
5)变量x是方法中return语句中返回的值
(3)def(n)或def(e):
一组变量在节点或者边中被定义
use(n)或use(e):
一组变量在节点或者边中被使用
(4)DUPairs和DUPaths:
1)DUpair(定义-使用对):
一对代码地址(li,,lj),变量v在li中被定义,在lj中被使用
2)Def-clear:
一个从li到lj的路径,对于变量v来说,如果在从li到lj的过程中的任何节点和任何边中,变量v没有被重新赋值,那么就认为从li到lj的路径是def-clear的
3)Reach(到达):
如果变量v有一个从li到lj之间def-clear的路径,那么就说在li处对变量v的定义可以到达lj
4)Du-path:
对于变量v,从v被定义到v被使用过程中的一个def-clear的简单子路径
5)du(ni,nj,v):
从ni节点到nj节点之间所有DUpath的集合
6)du(ni,v):
从ni节点出发的所有DUpath的集合
7、数据流准则
(1)覆盖类别:
1)All-defscoverage(ADC):
对于du-path的每一个集合S=du(n,v),TR包含了S中的至少一条路径d(确保了所有被定义的变量被使用)
2)All-usescoverage(AUC):
对于du-path的每一个要被使用的集合S=du(ni,nj,v),TR包含了S中的至少一条路径(确保每个定义能够到达所有可能的使用)
3)All-du-pathscoverage(ADUPC):
对于每个集合S=du(ni,nj,v),TR包含了S中的所有路径(覆盖定义和使用之间的所有路径)
3、测试工具
1、测试工具简介
(1)LR:
LoadRunner,是一种预测系统行为和性能的负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。
LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。
此外,LoadRunner能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。
(2)QTP:
QuickTestProfessional,是一种自动测试工具。
使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。
因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。
目前已经被惠普收购,正式名字为HPQuickTestProfessionalsoftware。
HPQuickTestProfessional提供符合所有主要应用软件环境的功能测试和回归测试的自动化。
采用关键字驱动的理念已简化测试用例的创建和维护。
它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。
专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。
QTP进行功能测试的测试流程[制定测试计划]——>[创建测试脚本]——>[增强测试脚本功能]——>[运行测试]——>[分析测试结果]大致五个步骤。
(3)QC:
QualityCenter是一个基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷,如下图所示。
此外,通过QualityCenter还可以创建报告和图来监控测试流程。
QualityCenter是一个强大的测试管理工具,合理的使用QualityCenter可以提高测试的工作效率,节省时间,起到事半功倍的效果。
利用HP-MercuryQualityCenter,您可以:
1.制定可靠的部署决策。
2.管理整个质量流程并使其标准化。
3.降低应用程序部署风险。
4.提高应用程序质量和可用性。
5.通过手动和自动化功能测试管理应用程序变更影响。
6.确保战略采购方案中的质量。
7.存储重要应用程序质量项目数据。
8.针对功能和性能测试面向服务的基础架构服务。
9.确保支持所有环境,包括J2EE、.NET、Oracle和SAP。
(4)TD:
TestDirector是全球最大的软件测试工具提供商MercuryInteractive公司生产的企业级测试管理工具,也是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。
通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。
TestDirector能消除组织机构间、地域间的障碍。
它能让测试人员、开发人员或其它的IT人员通过一个中央数据仓库,在不同地方就能交互测试信息。
TestDirector将测试过程流水化——从测试需求管理,到测试计划,测试日程安排,测试执行到出错后的错误跟踪——仅在一个基于浏览器的应用中便可完成,而不需要每个客户端都安装一套客户端程序。
程序的需求驱动整个测试过程。
TestDirector的Web界面简化了这些需求管理过程,以此您可以验证应用软件的每一个特性或功能是否正常。
通过提供一个比较直观的机制将需求和测试用例、测试结果和报告的错误联系起来,从而确保能达到最高的测试覆盖率。
(5)BugFree:
BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理系统。
简单实用、免费并且开放源代码(遵循GNUGPL)。
命名BugFree有两层意思:
一是希望软件中的缺陷越来越少直到没有,Free嘛;二是表示它是免费且开放源代码的,大家可以自由使用传播。
(6)QALoad:
QALoad
(1).测试接口多;
(2)可预测系统性能;(3)通过重复测试寻找瓶颈问题;(4)从控制中心管理全局负载测试;(5)可验证应用的扩展性;(6)快速创建仿真的负载测试;(7)性能价格比较高。
此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQLServer等。
只要它支持的协议,都可以测试。
(7)JMeter:
JMeter是一个专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。
原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。
它和HTTP和SQL(使用JDBC)的模块一起运行。
它可以用来测试静止或活动资料库中的服务器运行情况,可以用来模拟服务器或网络系统在重负载下的运行情况。
它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。
(8)WAS:
WAS是Microsoft提供的免费的Web负载压力测试工具,应用广泛。
WAS可以通过一台或者多台客户机模拟大量用户的活动。
WAS支持身份验证、加密和Cookies,也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。
(9)ACR:
ACT或称MSACT,它是微软的VisualStudio和VisualS带的一套进行程序压力测试的工具。
ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读叶很方便,是一套较理想的测试工具。
(10)OpenSTA:
OpenSTA它的全称是OpenSystemTestingArchitecture。
OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。
但是,这些设置大部分需要通过scrīpt来完成,因此在真正使用这个软件之前,必须学习好它的scrīpt编写。
如果需要完成很复杂的功能,script的要求还比较高。
当然这也是它的优点,一些程序员不会在意编写script的。
(11)PureLoad:
PureLoad一个完全基于Java的测试工具,它的script代码完全使用XML。
所以,编写script很简单。
它的测试包含文字和图形并可以输出为HTML文件。
由于是基于Java的软件,因此PureLoad可以通过JavaBeansAPI来增强软件功能。
(12)WinRunner:
WinRunner企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作,从而缩短测试时间。
通过自动录制、检测和回防用户的应用操作,从而提高测试效率。
(13)RationalRobot:
RationalRobot我经常使用的测试工具,属于RationalTestSuite中的一员,对于Visualstudio6编写的程序支持的非常好,同时还支持JavaApplet、HTML、OracleForms、PeopleTools应用程序的支持。
要支持Delphi程序的测试还必须下载插件。
RationalRobot的语法使用Basic语法,它的语言使用SQABasic。
(14)FunctionalTester:
FunctionalTester它是Robot的Java实现版本,在Rational被IBM收购后发布的。
在Java的浪潮下,Robot被移植到了Eclipse平台,并完全支持Java和.net。
可以使用VB.net和Java进行脚本的编写,当然了录下脚本让后做做修改是最爽的事情了。
由于支持Java,那么对测试脚本进行测试也变成了可能。
(15)JUnit:
JUnit是由ErichGamma和KentBeck编写的一个回归测试框架(regressiontestingframework)。
Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。
他是用于单元测试框架体系xUnit的一个实例(用于java语言)。
它包括以下特性:
1、用于测试期望结果的断言(Assertion);2、用于共享共同测试数据的测试工具;3、用于方便的组织和运行测试的测试套件;4、图形和文本的测试运行器。
2、漏洞检测工具
(1)SSS:
一款俄罗斯出的专业的安全漏洞扫描软件(ShadowSecurityScanner)来自俄罗斯的安全扫描工具,来自俄罗斯的老牌安全扫描软件.这是一款非常专业的安全漏洞扫描软件,功能非常强大,是网络安全人员必备软件之一.能扫描服务器各种漏洞,包括很多漏洞扫描、账号扫描、DOS扫描...而且漏洞数据可以随时更新.SSS(ShadowSecurityScanner)在安全扫描市场中享有速度最快,功效最好的盛名,其功能远远超过了其它众多的扫描分析工具.可以对很大范围内的系统漏洞进行安全、高效、可靠的安全检测,对系统全部扫面之后,-可以对收集的信息进行分析,发现系统设置中容易被攻击的地方和可能的错误,得出对发现问题的可能的解决方法。
-使用了完整的系统安全分析算法-intellectualcore(智能核心),该算法已经申请了专利。
-其系统扫描的速度和精度足以让你敢和专业的安全机构和那些想侵入你网络的黑客叫板。
-不仅可以扫描Windows系列平台,而且还可以应用在UNIX及Linux、FreeBSD、OpenBSD、NetBSD、Solaris等。
-由于采用了独特的架构,SSS是世界上唯一的可以检测出思科,惠普及其它网络设备错误的软件,而且它在所有的商用软件中还是唯一能在每个系统中跟踪超过4000个审核的软件。
(2)NAMP:
Namp是一款针对大型网络的端口扫描工具,尽管它也适用于单机扫描。
在不同情况下,你可能需要隐藏扫描、越过防火墙扫描或者使用不同的协议进行扫描,比如:
UDP、TCP、ICMP等)。
它支持:
VanillaTCPconnect扫描、TCPSYN(半开式)扫描、TCPFIN、Xmas、或NULL(隐藏)扫描、TCPftp代理(跳板)扫描、SYN/FINIP碎片扫描(穿越部分数据包过滤器)、TCPACK和窗口扫描、UDP监听ICMP端口无法送达扫描、ICMP扫描(狂ping)、TCPPing扫描、直接RPC扫描(无端口映射)、TCP/IP指纹识别远程操作系统,以及相反身份认证扫描等。
Namp同时支持性能和可靠性统计,例如:
动态延时计算,数据包超时和转发,并行端口扫描,通过并行ping侦测下层主机。
该版本需要WinpcapV2.1以上支持。
(3)MBSA:
Microsoft基准安全分析器(MBSA)可以检查操作系统和SQLServer更新。
MBSA还可以扫描计算机上的不安全配置。
检查Windows服务包和修补程序时,它将Windows组件(如Internet信息服务(IIS)和COM+)也包括在内。
MBSA使用一个XML文件作为现有更新的清单。
该XML文件包含在存档Mssecure.cab中,由MBSA在运行扫描时下载,也可以下载到本地计算机上,或通过网络服务器使用。
(4)NBSI:
NBSI是网站漏洞检测工具,ASP注入漏洞检测工具,特别在SQLServer注入检测方面有极高的准确率。
(5)X-SCAN:
X-Scan是国内最著名的综合扫描器之一,它完全免费,是不需要安装的绿色软件、界面支持中文和英文两种语言、包括图形界面和命令行方式。
主要由国内著名的民间黑客组织“安全焦点”完成,从2000年的内部测试版X-ScanV0.2到目前的最新版本X-Scan3.3-cn都凝聚了国内众多黑客的心血。
最值得一提的是,X-Scan把扫描报告和安全焦点网站相连接,对扫描到的每个漏洞进行“风险等级”评估,并提供漏洞
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 质量 补充 docx