




已阅读5页,还剩60页未读, 继续免费阅读
(控制理论与控制工程专业论文)面向对象软件测试及软件可靠性评估研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ad i s s e r t a t i o ns u b m i t t e dt og u a n g d o n g u n i v e r s i t yo f t e c h n o l o g yf o rt h ed e g r e eo f m a s t e ro fe n g i n e e r i n gs c i e n c e r e s e a r c ho fo b j e c t o r i e n t e ds o f t w a r et e s t i n ga n d s o f t w a r er e l i a b i l i t ye v a l u a t i o n m ac a n di d a t e c h a iz h e l i s u p e r v i s o r p r o f t a n gp i n g m a y 2 0 10 f a c u l t yo fa u t o m a t i o n g a u n g d o n gu n i v e r s i t yo ft e c h n o l o g y g u a n g z h o u g u a n g d o n g p r c h i n a 5 10 0 0 6 摘要 摘要 软件测试是软件工程领域必不可少的过程 在软件生存周期中占有非常重要的位 置 随着软件应用的日益广泛 软件复杂度越来越高 人们对软件的稳定性 可靠性 等的要求也逐步提高 软件测试是保证和提高软件质量的重要工作 受到普遍的重视 面向对象编程使人们的编程与实际的世界更加接近 所有的对象被赋予属性和方法 更加富有人性化 但由于面向对象程序设计的继承 数据抽象 信息隐藏等特点 给 面向对象软件测试带来极大的困难 有效而可行的面向对象软件测试受到广泛关注 同时 软件可靠性是评价软件质量的重要指标 是评估软件的重要途径 本课题的主要内容和和创新点在于以下几个方面 一 综述了软件测试的概念 软件测试方法以及软件测试自动化技术 并与面向 对象软件测试结合 分析各软件测试方法在面向对象软件开发过程中的应用 并阐述 影响软件可靠性的原因 二 基于面向对象程序设计的开发过程 提出面向对象软件测试模型 使得面向 对象的软件测试全面涉及至项目开发的各个阶段 并在每个阶段建立测试层次模型 分为类 类簇 系统测试三个层次 并详细阐述整个测试过程的实施和管理 三 以贝叶斯统计理论为依据 在对随机测试过程分析的基础上建立了基于输入 域的测试过程的形式化描述 根据随即输入域的结果满足二项分布的数学特征 确定 了测试分布的总体信息 从而得到待估计变量的先验分布 对软件可靠性得到量化的 估计 克服了软件测试可靠性评估过程复杂且计算量较大的问题 四 依据本课题研究内容 以c i n o w o 中文学习平台为例 阐述了在面向对象测 试过程中类测试 类簇测试 系统测试的方法和注意事项 以项目的测试数据为依托 对该项目的软件可靠性得出量化评估 关键词 软件测试 面向对象 软件可靠性 贝叶斯理论 广东工业大学硕士学位论文 a bs t r a c t s o f t w a r et e s t i n gi se s s e n t i a lt ot h ep r o c e s so fs o f t w a r ee n g i n e e r i n ga n dv e r yi m p o r t a n ti n s o f t w a r el i f ec y c l e w i 也t h ei n c r e a s i n g l yw i d er a n g eo fs o f t w a r ea p p l i c a t i o n sa n ds o f t w a r e c o m p l e x i t yi n c r e a s i n g t h es t a b i l i t yo ft h es o f t w a r eh a sb e c o m ei n c r e a s i n g l yd e m a n d i n gh i g h r e l i a b i l i t y s o f t w a r et e s ti sa l li m p o r t a n tw o r kt oi m p r o v es o f t w a r ea n dq u a l i t ya s s u r a n c e o b j e c t o r i e n t e dp r o g r a m m i n gw h i c ha l lo ft h eo b j e c tp r o p e r t i e sa n dm e t h o d sa r eg i v e n m a k e sp r o g r a m m i n gc l o s e rt ot h er e a lw o r l da n dh a sm o r eh u m a n i t y b u tb e c a u s eo ft h e i n h e r i t a n c eo fo b j e c t o r i e n t e d p r o g r a m m i n g d a t aa b s t r a c t i o n i n f o r m a t i o nh i d i n g e t c o b j e c t o r i e n t e d c r e a t e g r e a t d i f f i c u l t i e sf o rs o f t w a r et e s t e f f e c t i v ea n df e a s i b l e o b j e c t o r i e n t e ds o f t w a r et e s ta r er e c e i v e de x t e n s i v ea t t e n t i o n b e s i d e s s o f t w a r er e l i a b i l i t yi s a ni m p o r t a n ti n d i c a t o ro fs o f t w a r eq u a l i t ye v a l u a t i o na n da ni m p o r t a n tw a yt oe v a l u a t et h e s o f t w a r e t h ei n n o v a t i o no ft h i st o p i ca n dt h em a i nc o n t r i b u t i o ni sa st h ef o l l o w i n g 1 r e v i e wt h ec o n c e p to fs o f t w a r et e s t i n g s o f t w a r et e s ta u t o m a t i o nt e c h n i q u e s t h e a p p l i c a t i o no fs o f t w a r et e s t i n gm e t h o d sm e n t i o n e da r ea n a l y z e di no b j e c t o r i e n t e d s o f t w a r e t e s t i n g b e s i d e s t h ei m p a c to fs o f t w a r er e l i a b i l i t yr e a s o n si sa n a l y z e d 2 b a s e do np r o c e s so fo b j e c t o r i e n t e dp r o g r a m m i n g a no b j e c t o r i e n t e dm o d e lo fs o f t w a r e t e s t i n gi sp r o p o s e d s o f t w a r et e s t i n gi si n v o l v e da l ls t a g e so fp r o j e c td e v e l o p m e n ta n de a c h s t a g ei sd i v i d e di n t oc l a s s e s t h ec l a s sc l u s t e r s y s t e mt e s t i n g t h et e s t i n gp r o c e s sa n d m a n a g e m e n ti sd e t a i l l yi n t r o d u c t e d 3 am o d i f i e dm e t h o da b o u te v a l u a t i o no fs o f t w a r er e l i a b i l i t yi sp r e s e n t e db a s e do nb a y e s f o r m u l a a c c o r d i n gt ot h ep r o b a b i l i t y d e n s i t yf u n c t i o no ft h ec o r r e c t n e s so ft h es o f t w a r ea n d m a t h e m a t i c a lc h a r a c t e r i s t i c so ft h en u m b e ro ft e s tc a s e sp a s s i n gs o f t w a r eo b e y i n gb i n o m i a l d i s t r i b u t i o n p r o b a b i l i t yd i s t r i b u t i o nf u n c t i o no ft h ec o r r e c t n e s so ft h es o f t w a r ec o u l db e d e d u c e d c o m p a r e d 晰t 1 1t h ep r o c e s se v a l u a t i n gs o f t w a r er e l i a b i l i t yb yd e f i n i n gp a r a m e t e r s t h em o d i f i e dm e t h o di sm o r es i m p l ya n dh a sl e s sc a l c u l a t e da m o u n t 4 b a s e do nt h es t u d yu n d e rt h i sd i s s e r t a t i o n o nc i n o w oc h i n e s el e a r n i n gp l a t f o r m t h e t e s t i n gp r o c e s si no b j e c t o r i e n t e dc l a s st e s t i n g c l u s t e rc l u s t e r i n gt e s t i n g s y s t e mt e s t i n g m e t h o d sa n dp r e c a u t i o n sa r ed e s c r i b e d aq u a n t i t a t i v ea n da s s e s s m e n ts o f t w a r er e l i a b i l i t yo f a b s t r a c t t h ep r o j e c ti sm a d eb a s e do nt h es o f t w a r et e s t i n gd a t a k e yw o r d s s o f t w a r et e s t i n g o b j e c t o r i e n t e dp r o g r a m m i n g s o f t w a r er e l i a b i l i t y b a y e s i a nt h e o r y i u 广东 y 业大学硕士学位论文 目录 摘要 i a b s t r a c t i i 目录 c o n t e n t s v i i 第一章绪论 1 1 1 课题的背景 研究意义 1 1 2 本领域的发展历史及研究现状 j 2 1 2 1 软件测试的发展与现状 2 1 2 2 软件可靠性研究的发展与现状 2 1 2 3 面向对象软件测试的发展与现状 3 1 3 本文的主要工作 4 第二章软件测试与可靠性分析 5 2 1 软件测试 5 2 1 1 软件测试方法 5 2 1 2 软件测试自动化技术 9 2 2 软件可靠性 10 2 2 1 软件可靠性概述 1 0 2 2 2 影响软件可靠性的原因分析 1 2 2 3 本章小结 1 3 第三章面向对象的软件测试模型研究及测试过程分析 1 4 3 1 面向对象测试模型 1 4 3 2 面向对象的软件测试内容及层次 1 5 3 2 1 面向对象软件测试层次 1 5 3 2 2 类测试 1 6 3 2 3 类簇测试 1 8 3 2 4 面向对象的系统测试 1 9 3 3 测试过程 19 i v 目录 3 3 1 过程模型 1 9 3 3 2 人员组织 2 0 3 3 3 测试实施和管理 2 1 3 3 4 测试实施 2 2 3 4 本章小结 2 3 第四章基于贝叶斯理论的软件可靠性评估研究 2 5 4 1 贝叶斯统计推断理论 2 5 4 2 贝叶斯统计推断理论在软件可靠性评估中的应用 2 6 4 3 贝叶斯网络建模 2 7 4 3 1 贝叶斯网络的数学描述 2 7 4 3 2 软件测试效果评估模型 2 7 4 4 基于贝叶斯统计推断的可靠性评估方法 2 9 4 4 1 软件的数学方法 2 9 4 4 2 随机测试过程的形式化表示 2 9 4 4 3 服从二项分布的软件可靠性评估 3 0 4 5 本章小结 3 2 第五章软件测试及可靠性评估实例 3 3 5 1c 玳0 w o 中文学习平台测试过程以及测试数据 3 3 5 1 1c i n o w o 中文学习平台架构简介 3 3 5 1 2c 烈o w o 中文学习平台测试过程 3 4 5 1 3c i n o w o 中文学习平台测试报告的部分测试数据分析 3 7 5 2 软件可靠性评估 3 8 5 2 1 依据经验计算测试可靠性 3 8 5 2 2m a t l a b 计算软件正确性的概率分布密度 3 9 5 2 3m a t l a b 计算软件正确性的概率 4 1 5 2 4 对比分析 4 2 5 3 本章小结 4 2 总结与展望 4 4 参考文献 4 6 v 广东工业大学硕士学位论文 攻读硕士学位期间发表的论文 4 9 攻读硕士学位期间参与的科研项目 5 0 独创性声明 51 致谢 5 2 v l c o n t e n t s c o n t e n t s a b s t r a c t c h i n e s e 1 a b s t r a c t e n g l i s h i i c o n t e n t s c h i n e s e i v c o n t e n t s e n g l i s h v i i c h a p t e r 1i n t r o d u c t i o n 1 1 1b a c k g r o u n d s i g n i f i c a n c eo ft h ed i s s e r t a t i o n 一1 1 2n l eh i s t o r ya n dr e s e a r c hs t a t u si nt h ef i e l dr e s e a r c h 2 1 2 1d e v e l o p m e n ta n ds t a t u so fs o f t w a r et e s t i n g 2 1 2 2s o f t w a r er e l i a b i l i t yr e s e a r c hd e v e l o p m e n ta n ds t a t u s 3 1 2 3o b j e c t o r i e n t e dp r o g r a m m i n gs o f t w a r et e s td e v e l o p m e n ta n ds t a t u s 3 1 3t h em a i nw o r ko f t h ed i s s e r t a t i o n 4 c h a p t e r2s o f t w a r et e s t i n ga n dr e l i a b i l i t ya n a l y s i s 5 2 1s o f t w a r et e s t i n g 5 2 1 1s o f t w a r et e s t i n gm e t h o d s 一5 2 1 2s o f t w a r et e s t i n ga u t o m a t i o n 9 2 2s o f t w a r er e l i a b i l i t y 1 0 2 2 1s o f t w a r er e l i a b i l i t yo v e r v i e w 一10 2 2 2a n a l y s i so f i m p a c to f s o f t w a r er e l i a b i l i t y 1 2 2 3s u m m a r y 13 c h a p t e r 30 b j e e t o r i e n t e dm o d e lo fs o f t w a r et e s t i n ga n dt e s tp r o c e s s 14 1o b j e c t o r i e n t e dt e s tm o d e l 1 4 3 2o b j e c t o r i e n t e ds o f t w a r et e s t i n gc o n t e n ta n dl e v e l 1 5 3 2 1l e v e lo f o b j e c t o r i e n t e ds o f t w a r et e s t i n g 1 5 3 2 2c l a s st e s t i n g 1 6 3 2 3c l a s sc l u s t e rt e s t i n g 1 8 3 2 4s y s t e mt e s t 1 9 3 3t e s t i n gp r o c e s s 19 1p r o c e s sm o d e l 1 9 v t l c h a p t e r5e x a m p l e so fs o f t w a r et e s t i n ga n dr e l i a b i l i t ya s s e s s m e n t 3 3 5 1c i n o w oc h i n e s el e a r n i n gp l a t f o r m t h et e s t i n gp r o c e s sa n dt e s td a t a 3 3 5 1 1c i n o w oc h i n e s el e a r n i n gp l a t f o r mi n t r o d u c t i o n 3 3 5 1 2t e s tp r o c e s so fc i n o w oc h i n e s el e a r n i n gp l a t f o r m 3 4 5 1 3c i n o w oc h i n e s el e a r n i n gp l a t f o r mt e s tr e p o r to fs o m eo ft h et e s td a t a a n a l y s i s 3 7 5 2s o f t w a r er e l i a b i l i t y 3 8 5 2 1c a l c u l a t i o nb a s e do ne x p e r i e n c e t e s tr e l i a b i l i t y 3 8 5 2 2m a t l a b c o m p u t i n g s o f t w f l i ec o r r e c t n e s so ft h e d e n s i t yp r o b a b i l i t y d i s t r i b u t i o n 3 9 5 2 3c a l c u l a t et h ep r o b a b i l i t yo ft h ec o r r e c t n e s so fm a t l a bs o f t w a r e 41 1 2 4c o m p a r a t i v e a n a l y s i s 4 2 5 3s u m m a r y 4 2 c o n c l u s i o na n d0 u t l o o k 4 4 r e f e r e n c e s 一 4 6 v i i i c o n t e n t s p u b l i s h e dp a p e r ss t u d y i n g 4 9 s c i e n t i f i cr e s e a r c hp r o j e c t sd u r i n gs t u d y i n gf o rm a s t e rd e g r e e 5 0 a n n o u e eo fo r i g i n a lc r e a t i o n 51 a c k n o w l e d g e m e n t 5 2 i x 第一章绪论 第一章绪论 1 1 课题的背景 研究意义 随着现代信息技术的发展 计算机的应用己经渗透到社会生活的各个方面 甚至 人类生活的各个领域 软件在航空 航天 核能 通讯 交通 金融等关键领域的应 用也日益广泛 这些领域对软件可靠性和安全性都有很高的要求 为保证软件能够安 全 可靠的运行 必须选择合适的测试方法对软件进行充分的测试 面向对象的软件范型在软件开发过程中受到了越来越多的程序员的喜爱 面向对 象的基本概念也逐渐被应用到软件的分析和设计阶段 近年来 国内外对面向对象软 件测试进行了大量的研究 但目前该领域还处于百家争鸣的阶段 还未形成一套较为 成熟与完善的软件测试理论与方法 面向对象的一些基本特点使得测试面向对象软件 与测试传统软件有许多不同的特点 因而导致了许多新问题 甚至 有些测试人员甚 至认为面向对象软件是不可测试的 面向对象软件测试模型以及测试过程亟待解决 随着软件应用的日益广泛及其重要性的不断增加 人们对软件质量的要求也越来 越高 可靠性作为衡量软件质量的一个重要特性 其定量的评估和预计受到越来越多 的关注 软件可靠性评估是软件可靠性工程的核心内容 根据i e e e 的定义和国军标g j b 6 5 1 定义 软件可靠性可以从定性和定量两个方面进行评估 1 2 1 定量的评估是指在给定的 时间内 特定的环境下软件无故障运行的概率 对软件产品来讲 软件可靠性评估可 以使用户对软件产品的可靠性有一个明确的认识 增强用户对软件的信心 在软件开 发过程中的软件可靠性评估可以协助软件工程实施准则的制定 协助确定软件产品的 发布时间 实现对测试过程的控制 有助于监控软件操作性能 控制软件系统的设计 改变和功能的添加 有助于管理人员更好的了解产品和软件开发过程 利于决策的实 施 实践证明 只用充分的测试才能保证软件质量 通过测试可以尽可能早地和尽可 能多的发现软件错误 及时进行修改和弥补 从而提高软件的质量 软件开发过程中 的软件可靠性评估技术的应用对提高软件质量 控制软件开发过程有着重要的意义 软件可靠性定量评估与预测是软件可靠性工程的重要组成部分 广东工业大学硕士学位论文 1 2 本领域的发展历史及研究现状 1 2 1 软件测试的发展与现状 正如同任何事物一样 软件产品也有一个孕育 诞生 成长 成熟 衰亡的生存 过程 称这个过程为软件的生存周期 软件测试的生存周期伴随着软件的整个生存周 期 2 根据软件测试的生存周期模型可以看出 软件测试开始与软件的制定规划阶段 并贯穿与整个软件生存周期中 软件测试的策略 整体可以分为白盒测试和黑盒测试 w e y u k e r 的测试充分性公理系统 有了较一致的测试层次划分法 单元测试 集成测 试 确认测试 系统测试 3 j h a r t m a n n 等对系统测试阶段的形式化测试方法进行了讨 论 该方法是建立在u m l 状态图的基础上 对系统集成过程中的组件间的接口进行测 试 6 1 在国内 整个软件行业还处于一个比较初级的阶段 国内甚至目前为止还没有一 个独立的第三方测试公司 随着国内软件行业的发展 软件测试的地位逐步得到了相 关专业人员的认识 也相应的做了大量的研究 对面向对象的软件测试也提出了不少 的测试方法以及测试算法 均匀设计 u m l 基于u m l 的c p n 模型都被尝试用于面 向对象软件测试过程中1 2 2 2 4 1 但是 以上的面向对象测试方法都是针对面向对象软件的 某一特征提出的 没有综合解决面向对象软件开发过程中整个项目的测试 1 2 2 软件可靠性研究的发展与现状 软件可靠性的评估过程一般是通过后验概率预测先验概率的过程 m i l l e r 等提出基 于输入域的软件可靠性评估的贝叶斯方法 2 5 1 b o j a n c u k i e 等讨论了在利用或不利用对 系统可靠性的主观认识的情况下 采用贝叶斯理论对可靠性进行评估的方法 2 9 3 0 1 k n 0 i k o n o m o u 和l p h a m 等都提出了基于软件失效时间的软件可靠性估计的贝 叶斯方法 2 7 2 s 中国科学技术研究院提出了基于贝叶斯理论评估软件测试可靠性过程中 参数选取的依据 2 6 3 1 3 2 1 这些方法以软件的失效时间作为总体信息来描述软件测试的行 为 由于难以有效地收集与表示软件失效时间数据 从而限制了这些方法在可靠性评 估中的应用 本课题以软件的测试次数作为总体信息 为基于输入域的软件测试可靠 性评估提供理论的依据 解决软件可靠性评估过程中参数难以确定的问题 2 第一章绪论 1 2 3 面向对象软件测试的发展与现状 面向对象 o b j e c t o r i e n t e d 技术己成为当今流行的一种软件开发技术 并正在继 续代替曾被广泛使用的面向过程开发方法 被看成是解决软件危机的新有效手段 由 面向对象技术开发出的程序具有更好的系统结构 更规范的编程风格 极大地优化了 数据使用的安全性 提高了程序代码的重用 一些人就此认为面向对象技术开发出的 程序无需进行测试 事实上 尽管面向对象技术的基本思想保证了软件有更高的质量 但是编程人员 的错误还是不可避免的 而且由于面向对象技术开发的软件代码重用率高 更需要严 格测试 避免错误的繁衍 因此 软件测试并没有面向对象编程的兴起而丧失掉它的 重要性 对于面向对象的软件测试 有关文献主要讨论的是把过程性的测试方法应用 于面向对象的方法中 o 面向对象的开发模型突破了传统的瀑布模型 5 q 将开发分为面向对象分析 o o a 面向对象设计 o o d 和面向对象编程 o o p 三个阶段 面向对象的软件测试模型以及测 试策略相应的与传统软件测试有较大的区别 h y c h e n 和t h t s e 提出的面向对象分 析测试中 8 分析结果主要包括对象 结构 主题 属性和消息连接五部分 d ep e r r y 和g e k a i s e r 根据w e y u k e r 的测试充分性公理对该问题进行了讨论 认为子类中继承 的方法和重新定义的方法都必须在子类的环境中重新测试 1 4 b i n d e r 和b a r l a y 等研究 了面向对象特征 如封装 多态和动态绑定 继承等认为这些特征的引入增加了测试 的复杂性d 6 另一些研究则考察如何利用继承进行子类的测试f i e l d e r 为在父类充分测 试的基础上被子类继承的方法只需最小测试 1 7 1 s h a r r o l d 则主张在测试于类时 只需 对被继承的属性和新的属性之间的交互进行测试 1 9 1 但是 并没有给出关于最小测试 范围 交互的判定标准和相应规则 基于服务的类测试k u n g 等人提出的块分支图 2 0 对于面向对象继承的特征 e j w e y u k e r 曾经提出了1 1 条基于程序的测试数据集的 充分性公理 2 h d e p e r r y 与g e k a i s e r 根据w e y u k e r 公理对这些问题进行了讨 论瞄 面向对象软件是一种新的减少成本 提高可用性 灵活性和高效的软件开发方法 近几年来 但面向对象软件测试 o b j e c t o r i e n t e ds o f t w a r et e s t i n g 的研究还相对薄弱 远远滞后于软件工程实践的需要 到目前还尚未形成一套成熟与完善的测试理论和方 广东工业大学硕士学位论文 法 t2 面向对象程序设计具有继承 数据抽象 信息隐藏等特点 因此面向过程软件 测试和软件度量方法不适合面向对象软件测试和软件度量 1 3 本文的主要工作 本文首先综述了软件测试方法 软件测试工具以及软件可靠性的失效机理 对影 响软件可靠性的原因做了简单分析 在此基础上 依据面向对象编程的特点 构建面 向对象编程下的软件测试模型 分析面向对象层次测试方法 详细阐述面向对象软件 测试的内容以及测试过程的实施和管理 全面分析了面向对象软件测试模型以及测试过程的实施和管理之后 依据贝叶斯 理论建立评估软件测试可靠性模型 在假设软件己知软件正确性的情况下 软件的随 机测试服从二项分布 从而由后验概率得出先验概率 推理出软件可靠性的量化结果 最后 以实际开发的项目c i n o w o 中文学习平台为例 阐述面向对象软件测试的实施 和管理 并依据测试数据 对项目软件可靠性做量化评估 本文组织架构安排如下 第二章软件测试与可靠性分析 对软件测试技术以及软件可靠性进行了介绍 包 括软件测试的理论 方法及软件测试的工具 简单分析了影响软件可靠性的原因 第三章面向对象的软件测试模型研究及测试过程分析 依据面向对象程序开发的 特点 分析面向对象测试模型 详细阐述了面向对象的软件测试内容及层次 测试实 施和管理以及人员组织 第四章基于贝叶斯理论的软件可靠性评估研究 该评估方法以面向软件故障模型 为基础 依据贝叶斯理论 假设软件正确性的先验概率密度函数 推理软件的可靠性 提出一种改进的软件可靠性评估方法 简化了软件可靠性的评估过程 且实用高效 第五章软件测试及可靠性评估实例 依据本课题研究内容 以实际项目为例 阐 述了在面向对象测试过程中类测试 类簇测试 系统测试的方法和注意事项 依据项 目的测试数据和测试过程的数学特征 对该项目的软件可靠性做了量化评估 总结和展望 总结全文对面向对象软件测试过程和软件可靠性评估技术的研究 展望迸一步发展方向 4 第二章软件测试与可靠性分析 2 1 软件测试 第二章软件测试与可靠性分析 2 1 1 软件测试方法 软件工程标准术语集中对软件进行如下的定义 软件是计算机程序以及相关的文 档和数据组成 即除了程序代码之外 软件开发过程的各个阶段所产生的文档 例如 需求分析说明书 设计文档 测试计划 软件产品的反馈信息等等都是软件产品不可 缺少的组成部分 在各种文献在介绍软件测试方法时 主要是针对程序代码的测试 2 除非特别说明 在下文中介绍软件测试方法时 指的是程序代码的测试方法 软件测试的方法和技术是多种多样的 对于软件测试技术 可以从不同的角度加 以分类 从是否需要执行被测软件的角度 可分为静态测试和动态测试 从测试是否 针对系统的内部结构和具体实现算法的角度来看 可分为白盒测试和黑盒测试 本章 节通过介绍不同的测试方法 阐述面向对象软件测试过程中测试方法的选择 2 1 2 1 静态方法和动态方法 静态测试是指无须执行被测代码 而是借助专用的软件测试工具评审软件文档或 程序 度量程序静态复杂度 通过分析或检查源程序的文法 结构 过程 接口等来 检查程序的正确性 借以发现编写的程序的不足之处 减少错误出现的概率 2 e l 静态 方法通过程序静态特性的分析 找出欠缺和可疑之处 例如不匹配的参数 不适当的 循环嵌套和分支嵌套 不允许的递归 未使用过的变量 空指针的引用和可疑的计算 等 静态测试结果可用于进一步的查错 为测试用例的选取提供帮助 为软件的质量 保证提供依据 以提高软件的可靠性和易维护性 静态测试包括代码检查 静态结构 分析 代码质量度量等 代码检查 代码检查包括代码走查 桌面检查 代码审查等 主要检查代码和设 计的一致性 代码的可读性 代码的逻辑表达的正确性 代码结构的合理性等方面 可以发现违背程序编写标准的问题 程序中不安全 不明确和模糊的部分 找出程序 广东工业大学硕士学位论文 中不可移植部分 违背程序编程风格的问题 包括变量检查 命名和类型审查 程序 逻辑审查 程序语法检查和程序结构检查等内容 代码检查看到的是问题本身而非征 兆 代码检查是面向对象软件测试过程中有效的静态测试方法 但是代码检查非常耗 费时间 而且代码检查需要知识和经验的积累 代码检查应在编译和动态测试之前进行 在检查前 应准备好需求描述文档 程 序设计文档 程序的源代码清单 代码编码标准和代码缺陷检查表等 静态结构分析 在面向对象软件测试过程中 静态结构分析可以是以图形的方式表现程序的内部结构 例如函数调用关系图 函数内部控制流图 另外 类的定义和类之间的调用也是面向 对象软件测试的重点 静态分析法可以使得面向对象编程过程更明确化 有利用软件 的开发 代码质量度量 1 5 0 i e c 9 1 2 6 国际标准所定义的软件质量包括六个方面啪1 功能性 可靠性 易用性 效率 可维护性和可移植性 软件的质量是软件属性的各种标准度 量的组合 针对软件的可维护性 目前业界主要存在三种度量参数 l i n e 复杂度 h a l s t e a d 复杂度和m c c a b e 复杂度 其中l i n e 复杂度以代码的行数作为计算的基准 h a l s t e a d 以程序中使用到的运算符与运算元数量作为计数目标 直接测量指标 然后 可以据以计算出程序容量 工作量等 m c c b a e 复杂度一般称为圈复杂度 c y c l m o a t c i c o m p l e x i t y 它将软件的流程图转化为有向图 然后以图的复杂度来衡量软件的质量 m c c a b e 复杂度包括圈复杂度 基本复杂度 模块设计复杂度 设计复杂度和集成复杂 度汹1 动态测试 动态测试是通过人工或使用工具运行程序 使被测代码在相对真实环 境下运行 从多角度观察程序运行时能体现的功能 逻辑 行为 结构等行为 通过 检查 分析程序的执行状态和程序的外部表现 来定位程序的错误 这种方法由三部 分组成 构造测试用例 执行程序 分析程序的输出结果 动态测试完成功能与接口 测试 覆盖率分析 性能分析等面向对象软件测试中 动态测试是测试的主要方法 更能直观且高效的反应测试的结果 功能确认与接口测试 这部分的测试包括各个单元功能的正确执行 单元间的接 口 包括 单元接口 局部数据结构 重要的执行路径 错误处理的路径和影响上述 几点的边界条件等内容 覆盖率分析 覆盖率分析主要对代码的执行路径覆盖范围进行评估 语句覆盖 6 第二章软件测试与可靠性分析 判定覆盖 条件覆盖 条件 判定覆盖 修正条件 判定覆盖 基本路径覆盖都是从不 同要求出发 为设计测试用例提出依据的 覆盖率分析是最常用的面向对象白盒软件 测试方法 穷尽测试是不可能的 测试的目的就是使用最少的测试用例发现最多的b u g 而覆盖率分析是软件测试中常用的方法 性能分析 代码运行缓慢是开发过程中一个重要问题 一个应用程序运行速度较 慢 程序员不容易找到是在哪里出现了问题 如果不能解决应用程序的性能问题 将 降低并极大地影响应用程序的质量 于是查找和修改性能瓶颈成为调整整个代码性能 的关键 2 1 2 2 白盒测试 黑盒测试和灰盒测试 白盒测试也称结构测试或逻辑驱动测试 它是知道软件内部工作过程 可通过测 试来检测软件产品内部动作是否按照规格说明书的规定正常进行 按照程序内部的结 构测试程序 检验程序中的每条通路是否都有能按预定要求正确工作 而不考虑它的 功能是否正确 白盒测试的主要方法有逻辑覆盖 域测试 路径测试 程序插桩 程 序变异等 黑盒测试也称功能测试或数据驱动测试 它是在己知软件所应具有的功能 通过 测试来检测每个功能是否都能正常使用 在测试时 把程序看作一个不能打开的黑盆 子 在完全不考虑程序内部结构和内部特性的情况下 测试者在程序接口进行测试 它只检查程序功能是否按照需求规格说明书的规定正常使用 程序是否能适当地接收 输入数据正确的输出信息 并且保持外部信息 如数据库或文件 的完整性 黑盒测试方法主要有等价类划分 边值分析 因一果图 错误推测等 主要用于 软件确认测试 黑盒测试方法着眼于程序外部结构 不考虑内部逻辑结构 针对软件 界面和软件功能进行测试 黑盒测试方法是穷举输入测试 只有把所有可能的输入都 作为测试情况使用 才能以这种方法查出程序中所有的错误 实际上测试情况有无穷 多个 人们不仅要测试所有合法的输入 而且还要对那些不合法但是可能的输入进行 测试 灰盒测试介于白盒与黑盒二者之间 关注输出对于输入的正确性 同时也关注内 部表现 但这种关注不像白盒那样详细 完整 只是通过一些表征性的现象 事件 标志来判断内部的运行状态 有时候输出是正确的 但内部其实己经错误了 这种情 广东工业大学硕士学位论文 况非常多 如果每次都通过白盒测试来操作 效率会很低 因此需要采取这样的一种 灰盒的方法 2 1 2 3 基于软件开发阶段的测试方法 按照软件工程的观点 软件开发过程包括需求分析 概要设计 详细设计等阶段 为保证得到高质量的软件产品 软件开发过程的每一个阶段都需要进行测试 即软件 测试需要贯穿于软件开发的全过程 对于面向对象软件测试更因该如此 基于软件开发不同阶段的面向对象测试方法包括以下几种 需求测试 根据软件工程统计 5 0 以上的系统错误是由于错误的需求或缺少需求 导致的 超过8 0 的开销花在追踪需求的错误上 这是由于在追踪需求的错误的过程中 经常会相互纠缠和重复劳动 因此 需求测试是必要的 也是必不可少的 需求测试 贯穿了整个软件开发周期 通过需求测试可指导软件测试的各个阶段 它可帮助我们 设计整个测试的进行 测试计划怎样安排 测试用例怎样选取 软件的确认要达到哪 些要求等 单元测试 在软件测试中 尽早进行软件测试发现软件中存在的问题 可减轻系 统测试的任务 明显地降低测试成本 单元测试在软件开发哪一个环节进行 是一个 值得探讨的问题 因为这关系到软件测试的效率和测试成本 在本课题中 面向对象 软件测试中单元测试对应的是类的测试 在3 2 章节将详细阐述 集成测试 集成测试是一个应用系统的各个部件的联合测试 以决定他们是否在 一起共同工作 性能测试 性能测试就是用来测试软件在集成系统中的运行性能 度量系统相对 于与定义目标的差距 面向对象软件的性能测试借助于软件性能测试工具是最有效的 方法 例如 l o a d r u n n e r 性能测试工具 本课题项目实例的性能测试使用l o a d r u n n e r 性能测试工具 压力测试 在较早的软件测试步骤中 白盒测试和黑盒测试技术对正常的程序功 能和性能进行了详尽的检查 压力测试的目的是对付非正常的情形 测试系统在其资 源超负荷的情况下的表现 容量测试 容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确 处理 压力测试主要是使系统承受速度方面的超额负载 容量测试是面向数据的 并 第二章软件测试与可靠性分析 且它的目的是显示系统可以处理目标内确定的数据容量 配置测试 配置测试验证系统在不同的软件 硬件 网络等环境下能否正确工作 回归测试 回归测试的主要的目的是验证对系统的变更没有影响以前的功能 并 且保证当前功能的边更是正确的 安装测试 对软件的全部 部分或升级安装 卸载处理过程的测试 安全性测试 测试系统在防止非法授权的内部或外部用户的访问或故意破坏等情 况的反映 2 1 2 软件测试自动化技术 软件测试作为保证软件质量和可靠性的关键技术 正日益受到广泛的重视 但随 着软件项目的规模越来越大 客户对软件质量的要求越来越高 测试工作的工作量也 相的变得越来越大 为了保证测试的质量和效率 人们很自然的想到 是否能够开发 软件测试工具 部分的实现软件测试的自动化 让计算机替代人进行繁重 枯燥 重 复的测试工作 或通过对软件故障模型的研究 找到定位各种软件故障的方法 使计 算机能代替测试人员进行代码检查 定位各种各样的软件故障 正确 合理的实施自 动化测试 能够充分的利用计算机快速 重复计算的能力 提高软件测试的效率 缩 短软件的开发周期 针对软件测试工具的用途不同 测试工具可以分为以下几类 白盒测试工具 白盒测试工具一般是针对代码进行测试 测试中发现的缺陷可以 位到代码级 找出某个函数 甚至某个变量存在的软件缺陷 白盒测试工具可以自动 检查代码 找出各种软件缺陷 如不符合编码规范 或在某方面存在故障 或者对软 件质量进行评价 如根据某种质量模型评价代码的质量 或对系统结构进行扫描分析 如生成系统的调用关系图等等 静态测试工具的特点就是直接对代码进行分析 不需 要运行代码 也不需要对代码进行编译 连接和生成可执行文件 静态测试工具的代 表有l o g i c s c o p 软件和p r q a 软件等等 功能测试工具 通过自动录制 检测和回放用户的应用操作 将被测系统的输出 记录同根据用户需求预先制订的标准结果进行比较 验证其正确性 功能测试工具可 以大大减轻黑盒测试的工作量 在系统进行迭代开发的过程中 能够很好的进行回归 测试 这类工具的主要代表有w i n r u n n e r q a r u n 等 负载压力测试工具 是一种可以度量应用系统的性能的自动测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钦州钦南区中烟工业2025秋招网络管理岗位高频笔试题库含答案
- 中国邮政集团2025通化市秋招笔试特色知识题专练及答案
- 资阳雁城区中烟工业2025秋招安全工程师岗位面试模拟题及答案
- 2025年法制宣传日普法活动法律知识竞赛试题库及答案
- 2024自考专业(计算机应用)经典例题(突破训练)附答案详解
- 语文常识考试题库及答案
- 2025年自考公共课考前冲刺练习试题含完整答案详解【各地真题】
- 中国邮政2025大兴安岭地区秋招人力资源管理岗位面试模拟题及答案
- 运输合同北京市道路货物运输合同2篇
- 山南乃东区中烟工业2025秋招烟草配方研究岗位面试模拟题及答案
- 中小学高级职称英语全英答辩题
- 新版教科版科学五年级上册全册课件
- 小学地方课程教案(全面完整版)
- 山西省家庭经济困难学生认定申请表
- 国家职业技能标准——城市轨道交通列车司机(2020版)
- 《社会学概论》全套课件-PPT
- 动力弹塑性分析滞回模型-迈达斯
- 驾驶员实用英语口语
- 小学六年级上册音乐-第1课《我的祖国》--湘教版(12张)ppt课件
- 脐疗-望脐知健康ppt课件
- 完整版陆河客家请神书
评论
0/150
提交评论