软件测试基础知识的学习

一、测试行业:

1、 测试的重要性(所有的产品或者服务上线都需要进行测试)

2、 测试工程师成长路线

管理方向:测试组长\测试经理\测试总监

技术方向:测试工程师、测试开发、测试架构师、性能测试、安全测试

转岗:开发、运维

3、 人员要求

懂技术、懂代码、精通测试、懂运维

4、 测试发展过程

初级阶段:以发现bug为主,手工测试为主

平台建设阶段:从手工解放

全面监控项目质量

全员测试阶段:测试人员具有开发工具的能力,开发更智能的测试工具

二、基础概念:

1、 什么是软件测试?——找bug,发现缺陷

检查软件产品是否符合设计的要求

确认软件产品是否符合用户的实际要求

提高软件产品的质量信息,投入较低的成本保障极大的降低劣质产品

验证软件产品的需求,设计和实现的一致性

对软件质量的全面评估

提示软件产品的质量风险

验证和确认

2、 测试的定义

使用人工或者自动的手段来进行或者测试某个系统的过程

目的在于检验它是否满足规定的需求

弄清预期结果和实际结果的区别

3、 测试的目的

以最小的人力、物力和时间,找出软件中潜在的错误和缺陷。

4、 测试的原则

证明软件中存在缺陷

不能穷尽测试

测试应该尽早介入

28原则:我们80%的用户只用到%20的功能,重点测

不存在缺陷谬论:没有程序没有缺陷

妥善保存一切文档:工作记录,回归测试

5、 测试标准

国际标准:ISO25010

国内标准:GBT20438    GBT18905

6、 测试的基本要求

外观界面测试

功能测试

性能测试

安全性测试

兼容性测试

易用测试

7、 bug的由来

作为一名软件测试人员,我们经常听到Bug这个词。

测试的过程其实就是在找Bug!

Bug是一个英文单词,本意是指昆虫、小虫子。

那为什么测试就是在找Bug呢?

这需要我们去追溯历史,当时人们还在使用第一代真空计算机(马克二型),这种计算机是依靠控制电流来改变开关,从而实现控制,但是它会发出大量的热和光。1949年9月9日,天气非常炎热,有一只娥死在了70号继电器里面,造成电路不通,机器死机,经过近一天的检查,Grace Hopper(格蕾斯哈珀)终于找到了真凶,原来正是被光吸引过来的娥造成了机器宕机,在这儿之后,在计算机科学中,Bug就从虫子变成了程序的缺陷,一只虫子就这样被载入了计算机史册。

三、测试与开发模型:

1、 测试工作流程

A、需求分析:

阅读需求文档、产品文档、产品详细设计说明书——分析需求的点——参与需求评审

快速熟悉项目

B、测试计划与测试方案:

制定计划:测试整个项目的总体的规划

测试的范围,进度的安排、人力物力的安排,整体的测试策略,风险的评估,风险的规避

5w 1h——why when who what where how

测试方案: how

测试的目标,测试工具,测试的方法,测试的重点

C、测试用例设计

边界值 等价类…

D、测试用例执行

E、评估阶段,测试报告

2、开发模型

A、瀑布模型

特点:

阶段间具有顺序性和依赖性、推迟实现、质量保证的观点

是文档驱动的模型,遵守这个约束可使软件维护变得更容易一些,从而显著降低软件预算。

优点:

为项目提供了按阶段划分的检查点;

当前一阶段完成后,只需要去关注后续阶段;

可以在迭代模型中应用瀑布模型

缺点:

用户可能需要较长等待时间来获取一个可供使用的系统,也许会给用户的信任程度带来影响和打击;

不适合需求模糊或者需求经常变动的系统;

由于开销的逐步升级问题,它不希望存在早期阶段的反馈;

在一个系统完成以前,它无法预测一个新系统引入一个机构的影响。

B、 增量模型

把瀑布模型的顺序特征与快速原型法的特征相结合,将软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量

C、 快速原型:

是快速建立起来可以在计算机上运行的程序

优点:

克服了瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,适合预先不能确切定义需求的软件系统的开发。

  缺点:

所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下,使用的前提是要有一个展示性的产品原型,一点程度上可能会限制开发人员的创新。

1、 快速分析

2、 构造

3、 运行

4、 评价

D、 螺旋开发模型

E、 迭代开发模型

和增量模型类似。一个小的版本往上开发,不可以并行。

F、 敏捷开发模型

3、 测试模型

V模型

需求分析-概要设计-详细设计-编码-单元测试-集成测试-系统测试-验收测试

优点:

每一个阶段都清晰明了、便于控制开发的每一个过程,既包含单元测试有包含系统测试。

缺点:

测试介入的较晚,对于前期的一些缺陷无从发现和修改,测试和开发串行,总用时较长。


W模型

测试与开发同时进行,有利于尽早地发现问题。

优点:

测试伴随软件的整个生命周期。例如,在需求分析结束后就可以进行需求分析测试。测试与开发是并行独立进行的。

缺点:

对需求和测试的技术要求高,使用于大中企业。

4、 开发和测试的关系

目标相同:都是为了制造出高质量的软件

相辅相成:开发经验对测试有用,测试经验对开发有用

侧重点不同:开发注重于从无到有,测试偏重于从有到优

思维定式、测试力度、关注度

四、软件测试的分类:

1、测试(开发)阶段来分:

单元测试:一般在编码完成前后;(模块、类、函数、方法);开发人员、白盒测试人员

集成测试:单元测试完成以后;模块已经完成编码以后;(模块和模块之间内容);开发人员、白盒测试人员

系统测试:集成测试完成之后;(程序、软件、APP、系统、网站、项目)整体测试;开发人员、白盒黑盒测试人员测试

验收(交付)测试:系统测试之后;(整个的系统:α测试【小范围、内测】、β测试【大范围、公测】);媒体、用户

2、是否覆盖源码

黑盒测试:没有覆盖源码;不关心代码如何实现,只在乎结果。

功能测试

性能测试

白盒测试:覆盖源码(透明测试)

灰盒测试:介于黑盒与白盒

3、是否运行

静态测试

动态测试

4、是否自动化

手工测试

自动化测试

5、地域测试

本地化测试

国际化测试

6、其他测试分类

回归测试

冒烟测试

随机测试

探索测试

五、测试用例

1、 概念:

测试用例又叫test case,是为了某个特殊目标而编制的一组测试输入,执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

2、 特性:

有效性:测试用例可以被使用,且不同人员使用测试结果一致

可复用性:良好的测试用例具有重复使用的功能,如:回归测试

易组织性:好的测试用例会分门别类地提供给测试人员参考和使用

可评估性:从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的标准

可管理性:从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的标准

3、 测试用例的要素

1. 测试用例编号

编号由字符和数字组合成的字符串,用例编号具有唯一性,容易识别

2. 测试项目/模块

测试的项目属于哪个项目或者被测试的需求,被测的模块、被测的单元等

3. 预置条件

执行当前用例的前提条件,如果前提条件不满足,则后面的测试步骤不能进行或者得不到预期结果

4. 测试输入

测试用例执行过程中需要加工的外部信息,根据测试用例的具体条件有手工输入、数据库等

5. 预期输出

测试用例的预期输出结果,包括返回值内容、界面响应结果等(来自需求文档)

6. 操作步骤

执行当前测试用例需要经过的操作步骤,需要明确的给出一个步骤的描述,测试用例执行人员可以根据步骤完成测试

7. 测试用例标题

对测试用例的简单描述。用概括的语言描述该测试用例的测试点,每个测试用例的变体不能够重复,因为每个测试用例的测试点是不一样的

8. 级别

a、高级别:保证系统基本功能,核心业务,重要特征,实际使用频率比较高的用例

b、中级别:重要程度结余高和低之间的测试用例

c、低级别:实际使用频率不高,对系统业务功能影响不大的模块或功能的测试用例

9.其他要素

【】对应的开发人员,出现bug后能及时找到相应的人员进行修护

【】测试结果,执行用例最后的结果,包括pass、fail、block

【】用例的设计者,能准确找到测试用例设计人员,对用例修改时能方便找到人员

【】用例设计日期,方便查用例的设计进度

【】测试类型:功能、性能、压力等

4、 测试用例的设计原则

1. 明确性

尽量避免测试赛用例存在含糊的因素在测试过程中,测试用例的测试结果是唯一的

2. 代表性

尽量将具有相似功能的测试用例抽象合并,功能相似的用例要合并

3. 简洁性

可读性良好,测试过程目的明确,测试结果唯一。测试用例要用陈述性语句直指问题的核心,不要使用浮夸的修饰手法

5、 测试用例的设计方法

a.等价类划分法

定义:是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数代表性的数据作为测试用例。使用等价划分法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例机用例完整性和代表性。

b.有效等价类

有效等价类是指对程序的规格说明来说是合理的,可检验程序是否实现了规格说明中所规定的功能和性能。

c.无效等价类

可检验程序对于无效数据的处理能力,检测程序的健壮性和容错能力。

设计测试用例步骤

1. 确定需求

2. 确定有效等价类和无效等价类

3. 对每条等价类设计测试用例

d.边界值法

e.因果图法

f.判定表法

g.正交表法

h.场景法(冒烟测试)(例如:打电话的过程)

i.流程分析法(例如:ATM、银行设备)广度、深度

j.错误推断法


测试用例的力度:简单、复杂、中庸

六、测试用例设计方法总结

本质:

基于需求

理解需求,反应需求,忠于需求

需求会变化,则测试用例也应该是活的,变化的

及时响应变更比准寻变化更重要

原则:

1. 根据程序的重要性和一旦发生故障带来的损失,来确定测试等级和测试重点。

2. 认真选择测试策略。用尽可能少的的测试用例发现尽可能多的的错误。测试用例不足则会导致风险的增大;测试过度会导致资源浪费。需要找到平衡点。

方法选取:

1. 先关注主要功能,业务流程、业务逻辑是否正确,考虑场景法

2. 需要输入数据的地方,考虑等价类划分法

3. 在任何情况下都使用边界值法

4. 如果程序的功能包括输入条件的组合情况,则选取因果法和判定表法

5. 对于配置类软件,需要考虑参数的组合情况,考虑使用正交表法

6. 对照程序逻辑,如果发现没有达到要求的覆盖标准,社党补充更多的测试用例

7. 采用错误推断法,追加其他测试用例

七、测试用例的评审

1. 同行评审

“个体和交互比过程中和工具更有价值”

有测试小组内部进行评审,达到思想碰撞,通过探讨、协作完成测试用例设计

2. 用户评审

“顾客的协作比合同谈判更有价值”

如果测试是对产品的批判,则顾客是最终用户或者顾客代表

在公司内部可以是市场调查人员或者相关领域专家

如果测试视为软件开发提供帮助和支持,那么顾客就是程序员

八、软件缺陷

定义:

内部:产品开发或者维护过程中存在的错误

外部:系统所需要实现的某种功能失效或者违背

总的来说,缺陷就是问题,最终表现为所需要的功能没有完全实现,没有满足用户需求

具体包含(程序、数据、文档)

缺陷产生的原因:

需求解释或者记录错误

用户需求定义错误

需求说明存在错误

编码说明、程序代码有误

硬件或者系统存在错误

文档错误、内容不正确、拼写错误

缺陷产生的根源:

交流不充分

软件的复杂性

开发任务的错误

需求的变化

进度压力

九、缺陷报告

在测试后,如果发现缺陷,则应该进行缺陷报告。

缺陷报告有如下作用:

1.记录测试结果

2.方便开发人员进行缺陷定位

3.为后期统计缺陷提供依据

你可能感兴趣的:(软件测试基础知识的学习)