Test Foundation

由于最近给大学生做测试基础知识的培训,所以也想通过笔记的形式记录下这次的类容,虽然比较简单,但是自己总结过来的可以再次加深下印象。

先说测试的概念:

什么是软件测试:抱着找问题的初衷,通过手动或者自动的方法找bug的过程。

那么测试所涉及的技术又有那么些呢?按照大的分类来看,我们可以将测试分为静态测试和动态测试。然后动态测试又会包含:白盒测试,灰盒测试,黑盒测试。下面一张图可以概括起来:

静态测试: 通过审阅文档,走查代码等手段,不运行应用程序的方式测试。

动态测试:需要运行应用程序,通过像单元测试,集成测试,系统测试等测试方法运行的测试。

白盒测试:测试代码申明或者逻辑路径的过程,保证每个语句或者路径都至少执行一次,所以白盒测试也叫逻辑路径测试或者结构测试,主要包括语句覆盖测试,条件测试,路径测试三种方式。比较典型的代表就是单元测试。

黑盒测试:把被测软件当成一个密闭的盒子,看不到里面的逻辑组成部分。通过功能测试,集成测试,系统测试,验收测试等方法对软件进行测试。

灰盒测试:灰盒测试介于白盒和黑盒测试之间的一种测试,需要测试人员有一些代码逻辑的基础知识,比较典型的代表就是接口测试:API测试,它又有另外一种叫法,叫做半透明测试。

接下来我们看下测试用例设计时用得最多的三种方法:

错误推算:枚举出一系列错误的情况,进而去验证错误数据下的错误提示.eg:

等价类划分: 将输入值划分成若干个等价类,其中一个等价类就代表较大数据的集合,一般分为有效等价类和无效 等价类。eg:

边界值: 主要从测试数据的边界来派生一些测试数据,主要分为上边界和下边界。eg:

 如果我们将测试和项目生命周期对比起来可以发现测试包含以下几个阶段:

单元测试: 单元测试中我们一般会用到模拟器(Driver)和桩(Stub)。

                其中模拟器可以看成是被测模块的上游组件,通过模拟器和数据驱动被测模块的运行。

                 桩可以看成是被测模块(系统)的外围组件,比如文件系统,日志系统,邮件系统等。通过对这些外围系统的模拟来确保被测模块的完整性。

集成测试: 集成测试可以分为两种,增量和非增量。其中有父子关系的我们会用增量式的集成测试,其中有从上至下和从下至上。

                 其中父子关系不明确的我们一般会用非增量式的集成测试方式,这种也叫爆破式的测试方式。这种方法测试速度快,但是出现问题很难定位。

系统测试: 系统测试我们又叫产品测试或者端到端的测试。

验收测试: 验收测试一般用来判断产品是否满足客户需求,可以分为Alpha测试或者Beta测试。其中Alpha测试是用户在开发的环境来执行但是会有测试和开发团队协助,在Beta测试之前。

                Beta测试是在真实的线上环境没有测试和开发的参与,用户自己完成的一项测试。一般在产品即将推出市场的时候进行。

接着我们一起来探讨下常见的几种不同类型的测试:

Smoke testing: 冒烟测试又叫预测试,一般用来判断产品是否可以正式开始测试。不需要做很深入的测试,像测试下界面按钮或者超链接是否起作用等等。

Compatibility testing: 兼容性测试,一般会由客户提需求,根据客户的需求在不同的系统(Window,IOS,Linux...)或者不同的浏览器(IE,Chrome,Safari...)上所进行的测试。

Usability testing: 易用行测试一般用来测试软件可用性以及人的主观情绪等,例如是否支持全键盘操作,是否支持残障人士的使用等。

Performance testing: 性能测试用来测试软件的吞吐量或者相应时间,CPU或者Memory利用率等指标。可以分为以下几种:

Load Test:负载测试-单位时间内对被测系统增加一定的用户量,观察系统在稳定运行期间的各项性能指标。

Stess Test: 压力测试-从系统的最大负载量开始依次增加用户量,从而找到系统的爆破点。

Volumes Test:容量测试-系统的用户量不变,通过增加系统后台的数据量从而观察系统运行的各项性能指标。

猜你喜欢

转载自www.cnblogs.com/jessicaxia/p/11299177.html