软件测试理论知识
概念
定义:
在规定条件下(人工或自动化)对程序进行操作,以发现错误,对软件质量进行评估,检验软件系统是否符合规定的要求。软件=文档+数据+程序,所以软件测试的对象也就不仅仅是程序本身,而是包括软件过程的文档、数据以及程序。
目的:
软件测试是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
原则:
- 所有的测试都应该追溯到用户需求,软件的设计和开发都是为了满足用户的需求
- 应该今早地和不断地进行软件测试,越早介入测试,越早发现问题,修改的代价就越小
- 完全测试是不可能的,合理控制测试的深度和广度
- 测试不能显示软件潜在的缺陷,没有百分百没有缺陷的软件,测试是为了保证软件质量和提高软件质量
- 充分注意测试中的集群现象,也就是错误很多事物代码段,需要进行更深入的测试
- 程序员应该避免自己的写的程序
软件测试分类
阶段分类:单元测试、集成测试、系统测试、验收测试、回归测试
- 单元测试:是对软件中的基本组成单位进行的测试,比如一个模块,一个过程等,主要是为了检测软件基本组成单位的正确性
- 集成测试:是在软件系统集成过程中所进行的测试,主要是检查软件单位之间的接口是否正确
- 系统测试:是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足于其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,被称为测试的“先知着问题”
- 验收测试:也叫交付测试,保证软件的准备就绪,向购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集
- 回归测试:是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确
测试执行方式:静态测试、动态测试
- 静态测试:不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误
- 动态测试:实际运行被测程序,输入相应的测试数据,检查实际输出的结果和预期结果是否符合的过程。静态和动态的区别就是是否运行程序。
执行测试方式:手工测试、自动化测试
-
手工测试:人工一个一个的输入测试用例,然后观察结果。比较原始 优点: 测试人员可以执行探索性的,发散性没有既定结果的测试,并且测试人员可以从审美和心里体验出发 缺点: 重复的手工回归测试、代价昂贵,也比较容易出错,并且比较依赖测试人员的能力 -
自动化测试:把人为的测试步骤转化为机器执行 优点: 既定的程序,复用性强,可以节省大量的人力和时间成本,提高效率,并且可以执行一些手工测试困难的测试,比如测试并发性;每次的测试步骤和内容是一致的,可以更加严谨的保证测试质量,增加软件信任度;将测试人员解放出来,可以将人力资源投入其他工作中。 缺点: 1、不能取代手工测试 2、手工测试比自动测试发现的缺陷更多 3、对测试质量的依赖性极大 4、测试自动化不能提高有效性 5、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。 6、工具本身并无想像力
代码层面:黑盒测试、白盒测试、灰盒测试
-
黑盒测试:也称为功能测试,在测试中,将程序看成一个不透明不能打开的黑色盒子(也就是不知道盒子内部结构),完全不考虑内部设计的情况,测试证明功能是否实现。 作用:
- 功能上是否正确或者遗漏
- 接口上,正确或者错误的输入是否能够有相对应的输出
- 是否错误机制:数据错误或外部信息(外部文件)错误、
- 性能上是否满足要求
- 是否有初始化错误和终止性错误
-
白盒测试:又称为结构测试、逻辑驱动测试,白盒是指盒子内部是可视的,能够清楚内部结构和特性,测试程序内部的逻辑结构。 作用:
- 对程序模块的所有独立的执行路径至少测试一遍。
- 对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
- 在循环的边界和运行的界限内执行循环体。
- 测试内部数据结构的有效性,等等。
-
灰盒测试:介于黑盒测试和白盒测试之间的一种测试,主要用于集成测试阶段、不仅关注输入输出的正确性。同时也关注程序内部的情况。
测试实施对象:α测试、β测试、第三方
-
Alpha测试(α测试):是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色 -
Beta测试(β测试):是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因此Beta测试数在开发者无法控制的环境下进行的软件现场应用。 α测试、β测试的区别: 1、场所不一样,Beta测试是在用户场,没有开发把控;Alpha测试是在开发方场,有开发在现场 2、原则上是先进行alpha测试,只有当alpha测试达到一定的可靠程度后,才能开始beta测试。 -
第三方:介于开发 方和用户之间的测试组织
测试对象:性能测试、安全测试、兼容性测试、文档测试、功能测试、UI测试等
- UI测试:也称为界面测试。测试用户的界面的组件布局是否合理,风格是否一致,组件是否符合操作习惯等等。
- 文档测试:文档的术语,文档的正确性、完整性、一致性和易用性
- 兼容性测试:软件之间很好的运作,是否有影响、软件和硬件之间是否能够发挥较好的工作效率,是否兼容系统,是否造成系统奔溃
- 安全测试:是一个相当于来说独立的领域,需更多的专业知识,例如Web的安全测试、需要熟悉各种网络协议,Tcp/Http,防火墙、CDN、熟悉各种操作系统的漏洞。 熟悉路由器等。从软件来说熟悉各种的攻击手段,例如sql注入、Xss等。
- 性能测试:检查系统是否满足需求规格说明书中规定的性能。比如:对内存、处理机的利用、吞吐量(TPS)、响应时间、执行间隔、日志文件(如中断、报错)等指标的精确度量
BUG的五大要素
1、软件没有实现说明书中所列出的功能
这个就是最明显的,也是比较容易出现的bug,一般来说都会有这种bug
2、软件出现了说明书中提到不应该出现的情况
eg:用户加载一个页面,需求中定义加载避免超过30s,并且如果出现就报错提示,但是出现用户加载两分钟都还是空白页。
3、软件实现了说明中没有提到的功能
eg:这个可能有点迷惑,但是这个也算是bug,第一个是会增加代码量,第二个是增加的功能就会出现多个路径,可能会影响原本的逻辑,并且会给开发和测试增加工作量,因而降低工作效率
4、软件没有实现说明书中没有提到但是应该实现的功能
这个就比较依赖于我们从用户或者生活中出发,对产品的功能有自己的认知。eg:表格信息,删除某一行数据,表格应该刷新,而不是留出一行空白
5、软件难于使用、性能差
这个就是性能方面,很卡,加载慢等等;还有一个是这个用户体验的。eg:点击一个页面的跳转,在跳转过程中,会有一个空白页面,然后再跳转到新页面,这个就是用户体验很差,使用难受。
BUG的等级
缺陷的等级分两方面进行划分:严重性和优先级
严重性:衡量缺陷对客户满意度影响的满意程度
- 致命错误:可能导致本模块以及其他相关模块异常,死机等问题
- 严重错误:问题局限在本模块,导致模块功能失常或异常退出
- 一般错误:模块部分功能失效
- 建议:对测试的模块有改进的建议
优先级:缺陷被修复的紧急程度
- 立即解决(p1):缺陷导致系统功能几乎不能使用或者测试不能继续,需要立即修复。
- 高优先级(p2):缺陷严重,影响测试,需要优先考虑
- 普通优先级(p3):缺陷需要正常优先排队处理
- 低优先级(p4):缺陷在时间充足的时候修复
|