软件测试基础知识

测试定义

软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作的结果

测试目的

1.软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。
2.引用Grenford J. Myers的观点
(1)测试是程序的执行过程,目的在于发现错误;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例在于能发现至今未发现的错误;
(4)一个成功的测试是发现了至今未发现的错误的测试;
3.基于不同的立场,存在着两种完全不同的测试目的。
用户:通过软件测试结果帮助衡量产品是否满足自己的期望。
研发组:通过软件测试验证该软件已正确地实现了用户的要求,为可靠性分析提供了依据

测试原则

1.测试显示软件存在缺陷
2. 穷尽测试是不可能的
3. 测试尽早介入
4. 缺陷集群性(2/8原则)
缺陷集群性表明小部分模块包含大部分的缺陷。软件测试中存在Pareto原则:80%的缺陷发现在20%的模块中。
一个功能模块发现的缺陷越高,那存在的未被发现的缺陷也越高,故发现的缺陷与未发现的缺陷成正比。
5. 杀虫剂悖论
反复使用相同的杀虫剂会导致害虫对杀虫剂产生免疫。如果一直使用相同的测试方法,可能无法发现新的bug。
6. 测试活动依赖于测试内容
7. “不存在缺陷”是谬论

测试分类

1. 按阶段划分

a.单元测试(Unit Testing)
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。
b.集成测试(Integration Testing)
集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。主要目的是检查软件单位之间的接口是否正确。
自顶向下集成:模块集成的顺序是首先集成主模块,然后按照控制层次结构向下进行集成,隶属于主模块的模块按照深度优先或广度优先的方式集成到整个结构中去。
自底向上集成:从原子模块开始来进行构造和测试,因为模块是自底向上集成的,进行时要求所有隶属于某个给顶层次的模块总是存在的,也不再有使用稳定测试桩的必要。
c.系统测试(System Testing)
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段
d.验收测试(Acceptance Testing)
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。

2.按是否查看代码划分

a.黑盒测试(Black-box Testing)
黑盒测试把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。
b.白盒测试(White-box Testing)
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒指的打开盒子,去研究里面的源代码和程序结果。
c.灰盒测试(Gray-Box Testing)
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

3.按是否执行程序划分

a.静态测试(Static testing)
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
b.动态测试(Dynamic testing)
动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。

4.按是否查看代码划分

a.手工测试(Manual testing)
手工测试就是由人去一个一个的输入用例,然后观察结果,属于比较原始但是必须的一个步骤。
b.自动化测试(Automation Testing)
就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

5.其他类别

a.冒烟测试(Smoke Testing)
在《微软项目求生法则》一书第14章“构建过程”关于冒烟测试,就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。
冒烟测试目的是确认软件基本功能正常。
b.随机测试(Ad-hoc Testing)
随机测试主要是根据测试者的经验对软件进行功能和性能抽查。
c.安全测试(Security Testing)
安全测试是在IT软件产品的生命周期中,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
d.探索性测试(Exploratory testing)
探索性测试可以说是一种测试思维。探索性强调测试人员的主观能动性,强调在碰到问题时及时改变测试方法。
e.回归测试(Regression Testing)
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
f.α测试(Alpha Testing)
α测试是由用户在开发者的场所来进行的,在一个受控的环境中进行。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。
g.β测试(Beta Testing)
β测试由软件的最终用户们在一个或多个不受控的用户场所进行。

测试用例设计方法

常用的黑盒测试方法有:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。
白盒测试方法有逻辑覆盖法,程序插桩技术,基本路径法,符号测试,错误驱动测试

V模型和W模型

软件测试基础知识_第1张图片
软件测试基础知识_第2张图片

软件质量的六大特性27子特性

按照软件质量国家标准GB-T8566–2001G,软件质量可以用下列特征来评价:
1. 功能特征:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。
a.适合性
b.准确性
c.互操作性
d.保密安全性
e.功能性的依从性
2. 可靠特征:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。
a.成熟性
b.容错性
c.易恢复性
d.可靠性的依从性
3. 易用特征:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。
a.易理解性
b.易学习性
c.易操作性
d.吸引性
e.易用性的依从性
4. 效率特征:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。
a.时间特性
b.资源利用性
c.效率依从性
5. 可维护特征:与进行指定的修改所需的努力有关的一组属性。
a.易分析性
b.易改变性
c.稳定性
d.易测试性
e.可靠性的依从性
6.可移植特征:与软件从一个环境转移到另一个环境的能力有关的一组属性。
a.适应性
b.易安装性
c.共存性
d.易替换性
e.可移植性的依从性

你可能感兴趣的:(测试)