系统测试笔记_啃不动地大坚果的博客-程序员宅基地

一.测试概述

软件测试是软件质量保证的主要手段之一。

1.原则:

1)尽早、不断的进行测试
2)程序员避免测试自己设计的程序
3)即要选择有效、合理的数据,也要选择无效、不合理的数据
4)修改后应该进行回归测试
5)尚未发现的错误数量与该程序已发现的错误数量成正比

2.用例设计

动态测试(利用到计算机的测试)
    黑盒测试/白盒测试/灰盒测试
    黑盒测试(不了解内部细节) 等价类划分/边界值分析/错误推测/因果图
    白盒测试(了解内部细节) 基本路径测试/循环覆盖测试/逻辑覆盖测试
        逻辑覆盖测试 语句覆盖/判定覆盖/条件覆盖/路径覆盖等
静态测试(不利用计算机的测试)
    桌前测试/代码走查/代码审查

3.测试阶段

冒烟测试-->单元测试/集成测试/确认测试-系统测试
冒烟测试-->有无明显故障
集成测试(一次性组装/增量式组装(一个一个模块增加进来测试))
     增量集成测试时 可能需要调用外部软硬件接口,可以编写驱动模块和桩模块进行模拟测试。
     增量式组装包括:自顶向下/自底向上/混合式
确认测试
内部确认测试/Alpha测试/Beta测试/验收测试
    Alpha测试/Beta测试 是针对产品的测试  Alpha测试是在开发环境的测试 Beta测试是在用户环境的测试
系统测试
恢复测试/安全性测试/压力测试/性能测试/可靠性测试/可用性测试/可维护性测试/安装测试
性能测试:负载测试/强度测试(在异常环境下能否正常处理)/容量测试

4.面向对象的测试

算法层(单元测试):等价类划分测试/组合功能测试(基于判定表的测试)/递归函数测试/多态消息测试
类层(模块测试):包括不变式边界测试、模态类测试/非模态类测试
模板层/类树层(集成测试):包括多态服务测试和展平测试
系统层(系统测试):

5.测试管理

测试团队管理
测试计划管理
错误(缺陷)跟踪管理 错误植入法/并行测试法/错误报告率DRE(D用户发现的bug数 e测试发现的bug数)
测试件管理

6.软件调试

蛮力法:暴力穷举,低效/耗时。
回溯法:从出错处,追踪到根源。
原因排除法:主要思想是演绎法和归纳,用二分法实现
调试是测试之后的活动。

二、测试方法

1.静态测试

主要手段是桌前检查、代码审查(检查单、检查表)、代码走查等。
静态分析方法:控制流分析、数据流分析、接口分析、表达式分析。

2.动态测试

主要分白盒测试和黑河测试
1)白盒测试
也称为结构测试,主要用于软件单元测试阶段。
测试方法:控制流测试、数据流测试、程序变异测试、、、
程序变异测试是针对某类特定程序错误的测试,专门测试某类错误是否存在。
2)黑盒测试
也称为功能测试,主要用于集成测试、确认测试和系统测试阶段。
包括:功能分解、等价类划分、边界值分析、判定表、因果图、状态图、随机测试、错误推测、正交实验法
等价类就是一组输入值,根据一个等价类内的数据是否合法、分为有效等价类和无效等价类。

三、测试类型

单元测试、集成测试、配置项测试、系统测试、验收测试、回归测试。

1.单元测试

1)单元测试的技术依据是软件详细设计说明书。
2)测试策略
自顶向下的单元测试、自底向上的单元测试、孤立测试和综合测试策略
自顶向下可以避免编写驱动模块
自底向上可以避免编写桩模块
孤立测试需要为每个模块编写驱动模块和桩模块。
一般混合使用各种策略,进行综合测试。
3)测试分析
a.静态分析 代码审查等
b.动态分析 对模块接口的测试优于其他测试内容。

2.集成测试

集成测试的技术依据是软件概要设计文档
1)集成测试策略
包括:基于分解的集成策略、基于功能的集成策略、基于调用图的集成策略。
a.基于分解的集成策略
可分为非渐增式和渐增式 非渐增式集成测试也称大突击测试或一次性集成测试。
渐增式集成测试也可分为自顶向下集成测试、自低向上集成测试、混合式集成测试。
b.基于功能的集成策略 
c.基于调用图的集成策略 
模块调用图是一种有向图、边表示程序调用。
2)集成测试分析
包括对被测试软件本身的分析,对测试可行性和测试策略的分析等。

3 .系统测试

1)主要测试内容:功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试。
a.核心是功能测试与性能测试。
b.性能测试主要包括:压力测试、负载测试、并发测试、可靠性测试。
c.性能测试通用模型PTMG 是性能测试过程的一个模型,主要步骤:测试前期的准备、引入测试工具、
制定测试计划、测试设计与开发、测试执行与管理、以及测试结果分析。
d.性能测试分析
包括性能下降曲线的分析和性能计数器的分析。
确定性能平坦区、性能轻微下降区、性能急剧下降区。

4.其他测试类型

1)配置项测试
检验软件配置项与SRS(软件需求规格说明书)的一致性。
2)确认测试
a.内部确认测试 由开发方内部按照SRS进行的测试。
b.Alpha测试和beta测试
Alpha测试由用户在开发环境下进行测试。beta测试由用户在生产环境下进行测试。
c.验收测试
3)回归测试
软件变更之后的测试。

四、面向对象的测试

1.面向对象测试方法

1)OO系统的测试策略与结构化系统的不同:a.测试焦点从模块移向了类 b.测试的视角扩大到了分析ooa和设计ood模型。
2)OO系统的测试分为:单元测试、集成测试、系统测试。单元测试、集成测试可以纳入OOP的测试活动,系统测试非OOP所独有。
部分文献将OO系统的测试分为:算法层、类层、模板层、系统层。算法层、类层大致于单元测试、模板层大致于集成测试。
3)OO方法将开发分为OOA、OOD、OOP三个过程,对应着OOA测试、OOD测试、OOP测试。
OOA测试:测试分析模型是否满足软件需求、测试分析模型是否符合OO方法的要求。
OOD测试:OOD对OOA进行了进一步的细化,如果分析设计模型完全是纸面的、测试主要以文档审查的方式进行,如果分析设计模型的部分或整体可以模拟运行,
测试还可以建立在模拟运行的基础上。
OOP测试:分为单元测试和集成测试。

2.单元测试

1)包括:方法层次的测试、类层次的测试、类树层次的测试。
2)方法层次的测试:等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试、多态消息测试等。
3)类层次的测试:
a.不变式边界测试:类属性的某些临界状态可能不会出现,成为类不变式
b.模态类测试:类在特定状态下的测试
c.非模态类测试:类在任何状态下的测试
4)类树层次的测试:
对类的父类和祖先类的影响进行测试。
包括:多态服务测试和展平测试(对继承和子类追加的方法进行测试)

3.集成测试

1)传统集成测试
a.大突击集成 先测试所有的类,然后把所有类集成到一起测试。
可以提高测试效率,难以充分测试,调试难度高。在整个软件的可靠性有了基本保障时,才可以使用大突击集成测试。
b.自底向上集成与自顶向下集成 
自底向上时,由于下层类已测试过,可以不用编写测试桩代码。
自顶向下集成时,由于上层类已测试过,所以不用编写测试驱动代码。
c.夹层式集成 从上下层向中间层测试。
2)协作集成
将可以互相协作完成特定功能的类集成在一起进行测试。
可以减少测试驱动代码和测试桩代码的开发。不适用较大的集成体。
3)基于使用的集成
首先测试那些比较独立的类。优缺点类似自底向上的集成。
4)类之间连接的测试
包括多重性测试,受控异常测试,往返场景测试和模态机测试。

五、软件测试组织

1.组织方

1)单云测试 一般由供方或开发方组织 也可委托第三方
2)集成测试 一般由供方组织 测试人云与开发人员应该互相独立 也可委托第三方
3)软件配置项测试 软件配置项测试要保证独立性 一般由供方组织 如果要委托第三方,一般第三方测试机构应获得国家认可。
4)系统测试 按照合同规定执行 由需方或开发方组织 如果要委托第三方,一般第三方测试机构应获得国家认可。
5)验收测试 由需方组织 如果要委托第三方,一般第三方测试机构应获得国家认可。
6)回归测试 一般由响应测试阶段的组织方组织。

2.测试过程

包括:测试策划、测试设计、测试执行、测试总结。
1)测试策划 确定测试的内容/质量特征/充分性要求/基本测试方法/所需资源和技术
进行风险分析和评估,制定测试计划。
2)测试设计 设计测试用例/获取测试数据/搭建测试环境
进行测试就绪评审
3)测试执行
4)测试总结 完成测试报告、并通过测试评审

3.测试管理

包括:过程管理、配置管理、评审工作。
1)过程管理 
包括测试活动管理和测试资源管理。
测试准入条件:具有测试合同或项目计划、具有测试所需各种文档、所提交的测试软件已经受控、软件源代码已经正确通过编译。
测试准出条件:已按要求完成了合同或项目计划所规定的测试任务等等。
2)配置管理
测试过程中产生的各种工作产品,应纳入配置管理,
如:全部测试工具、被测软件、评审结果等
3)评审
包括测试就绪评审和测试评审。
测试就绪评审 测试设计阶段完成后,对测试计划和说明进行评审
测试评审 测试总结阶段 对测试记录和测试报告进行评审。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhuanchixiyangyang/article/details/104222720

智能推荐

[BZOJ1969][Ahoi2005]LANE 航线规划(树链剖分+并查集)_wwyx2001的博客-程序员宅基地

题目:我是超链接题解:一看这种断边的就知道要【倒悬并查集】,倒序加边 因为时刻保证任意两点相连,那他起码是一棵树,我们倒序加边,加成一棵树之后,每增加一条非树边,就意味着在这条边的两端点的路径上+1,询问的时候只需要统计路径上有多少为0的边思路还是挺好想,但是在我写的时候有一些小问题:对于这种边权下放为点权的,in[x]+1和in[son[x]]不相等,因为可能没有重儿子,当...

java license机制dll_java调用dll获取硬盘和cpu序列号_weixin_39672160的博客-程序员宅基地

#include #include #include#include #include #include #include #include #include //---------------------------------------------------------------------------//Important note about DLLmemory managemen...

BZOJ 2780 [Spoj]8093 Sevenk Love Oimaster ——广义后缀自动机_weixin_33768481的博客-程序员宅基地

给定n个串m个询问,问每个串在n个串多少个串中出现了。构建广义后缀自动机,(就是把所有字符串的后缀自动机合并起来)其实只需要add的时候注意一下就可以了。然后对于每一个串,跑一边匹配,到达了now点。如果now等于零,那么无法匹配,为0否则就是询问子树中属于不同的后缀的节点又多少个。如果n的数目比较小,可以考虑O(nl)去树形DP我们只能,用vector打上标记。然后d...

Class000-Java体系_junife的博客-程序员宅基地

JAVA知识体系j2se1.Java语言基础 具体包括:1、对象的初始化;2、继承时,对象的初始化过程;3、关于构造方法;4、有关public、private和protected;5、抽 象类;6、final关键字;7、接口interface;8、多重继承;9、接口的嵌入;10、类的嵌入;11、异常类等。2.网络编程Java程序可以获取网络上结点的图象、声音、HTML文档及文本...

spark最新版本3.0.0中job划分、调度以及任务的提交执行流程源码分析_一过人_的博客-程序员宅基地

文章目录前言一 整个任务的流程图示二 任务的划分、调度和执行1 调用行动算子生成job2 划分阶段并发送Task给Executor3 Executor执行Task前言上文我们对spark整个应用运行流程进行了整体的分析,但是后面最后一步关于任务的划分、调度和执行就一笔带过了,今天我们就来对spark任务的执行流程的底层源码分析,搞懂这个会对我们理解spark几个术语有比较清楚的理解了,如:术语描述关系job工作调用一个行动算子就会有一个job生成stage阶段有一

java动态代理源码原理笔记_lljksven的博客-程序员宅基地

代理代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理预处理例子:spring aop的before,after,arround,exception处理。代理的静态实现逻辑基于接口的代理 public class MgtInstance implements MgtInterface{ public void dosth(){...} }

随便推点

python预测传染病模型_SIR传染病模型(附Python代码)_weixin_39625098的博客-程序员宅基地

2020.2.5 更新:code中S0, I0, R0均是比例,不是具体人数,请自行通过各个类别人数计算各类型人群比例。原文:传染病模型有四种状态:S(易感态)、I(感染态)、R(免疫态)、E(潜伏期)。SIR模型是传染病模型中最经典的模型。SIR模型中,染病人群为传染的源头,他通过一定的几率把传染病传给易感人群,他自己也有一定的几率/可以被治愈并免疫,或者死亡;易感人群一旦被感染,就又成为了新的...

基于pytorch的图像识别基础完整教程[email protected]________的博客-程序员宅基地_pytorch 图像识别

基于pytorch的深度学习图像识别基础完整教程以常见盆栽植物的图像识别示例来驱动学习,通过这个教程,你可以学会深度学习中的图像识别的完整操作并且可以通过这个示例训练出其他的图像识别模型。

Spring Cloud Stream实现消息过滤的三种主要方式_beishuibo1517的博客-程序员宅基地

消息过滤消息过滤是指消费者不希望消费topic里的所有消息,而是只消费部分特定的消息。从topic中挑选出这些特定的消息,就是所谓的消息过滤。通过消息过滤可以实现消息的分流处理,例如生产者生产的消息,header可能都是不尽相同的,这样我们就可以编写两个或多个消费者,对不同header的消息进行针对性的处理。Spring Cloud Stream实现消息过滤的方式主要有三种,一是使用@Stre...

***虚拟主机终极选购指南**** 网站建设必修课_jinglouxiaoqu的博客-程序员宅基地

知识篇   网站空间的常见形式   首先要了解一下网站空间的几种常见方式,以便我们有的放矢。   1.自建主机:这里说的自建主机并不是我们平常提到的利用个人主机和动态IP来架设网站的方式,而是购置专业的服务器,并向当地的Internet接入商租用价格不菲的专线来建立独立的主机服务器,不仅如此,而且还要给服务器配备专门的管理和维护人员。因为费用昂贵,这种方式适合一些有实力的大中型企业和专门的ISP。

Java中Hibernate数据分页显示之QBC_boonya的博客-程序员宅基地

1、使用HIbernate自带工具类(HibernateSessionFactory):public List getAllNoteByPageBean(int index,int pageSize){     Session session=HibernateSessi

【原创】DanmakuFlameMaster解决视频倍速后弹幕无法倍速的问题_DCTANT的博客-程序员宅基地

为了解决这个问题,我查了一大堆资料,全是弹幕滚动倍速的,没有一个是因为视频倍速后解决弹幕延迟问题的,其中有一篇对我的影响很大,但是有很大的bug,并不好用,特别是对于弹幕量少的情况下,根本没法使用!弹幕量大的情况,使用一切正常,然后我优化了一下,问题解决。参考地址:https://blog.csdn.net/yforyoung/article/details/108223040updateTimer该回调只会在弹幕出现时才会被调用,结果是如果弹幕出现中断,在2倍速的情况下就会出现两次弹幕,一次是2倍速,

推荐文章

热门文章

相关标签