软件测试基础知识
软件测试基本概念
1、软件=程序+文档,软件测试=程序测试+文档测试。
“程序”是指能够实现某种功能的指令的集合,“文档”是指软件在开发、使用和维护过程中产生的图文集合。;
2、软件的分类
按功能分:系统软件、应用软件
按技术架构分:单机版软件、C/S结构软件(C是指客户端, S指服务器端)、B/S结构软件(B是指浏览器)
按照用户划分:产品软件、项目软件
按开发规模划分:小型、中型、大型
3、BUG的定义:软件的BUG指的是软件中(包括程序和文档)不符合用户需求的问题。常见的软件BUG分三种类型:完全没有实现的功能;基本实现了用户需求的功能;实现了用户不需要的功能。
4、测试环境=软件+网络+硬件。搭建环境:真实、干净、无毒、独立
5、软件环境的分类:软件开发环境\软件生产运行环境
6、测试用例:指在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和与其结果!测试用例=输入+输出+测试环境。测试用例有两个模板,word和excel,前者适合性能测试,后者适合功能测试。
软件测试分类
1、黑盒测试:指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果
采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
白盒测试:指的是把盒子盖打开,去研究里面的源代码和程序结构。
灰盒测试:灰盒测试介于黑盒测试与白盒测试之间。
可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的的,但内部其实 已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
2、静态测试:是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。
动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
注:同一个测试,既有可能属于黑盒测试,也有可能属于动态测试;既有可能属于静态测试,也有可能属于白盒测试。他们之间也有可能交叉。
3、单元测试:编译运行程序——静态测试——动态测试
集成测试:是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。
系统测试:指的是将整个软件系统看作1个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
验收测试:指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,他也是软件正式交给用户使用的最后一道工序。
验收测试又分为α测试和β测试,其实α测试指的是由用户、测试人员、开发人员等共同参与的内部测试,而β测试指的是内测后的公测,即完全交给最终用户测试。
4。功能测试:是黑盒测试的一方面,他检查实际软件的功能是否符合用户的需求。功能测试又可以细分为很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
性能测试:软件的性能包括很多方面,主要有时间性能和空间性能两种。时间性能:主要指软件的一个具体事务的响应时间。空间性能:主要指软件运行时所消耗的系统资源。
软件性能测试分为一般性能测试、稳定性测试、负载测试和压力测试。
一般性能测试指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。稳定性测试,也叫可靠性测试,是指连续运行内侧系统,检查系统运行时的稳定程度。我们通常用MTBF(错误发生的平均时间间隔)来衡量系统的稳定性,越大稳定性越强、负载测试是性能测试的一种,通常是指让被测试系统在其能忍受的极限范围之内连续运行,来测试系统的稳定性。压力测试是性能测试的一种,通常是指连续不断地给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。
假设一个人很轻松就能背一袋米,背两袋米很吃力,最多就能背三袋米,那么:
一般性能测试:我就让他背一袋米
稳定性测试:我让他背一袋米,但是让他去操场上跑圈,看多久累倒。
负载测试:我让他背两袋米去操场上跑圈,看多久累倒。
压力测试:我让他背两袋米,三袋米,四袋米。。。。发现他最多就能背三袋米
5、回归测试:是指对软件的新的版本测试时,重复执行上一个版本测试时的用例
冒烟测试:是指在对一个新版本进行西戎大规模的测试之前,先验证以下软件的基本功能是否可以实现,是否具备可测性
随机测试:是指测试汇总所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘的错误。
单元测试阶段:
模块接口测试:通过所测模块的数据流进行测试。调用所测模块时的输入参数与模块的形式参数的个数、属性和顺序是否匹配。
局部数据结构测试:局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确,模块的局部数据结构往往是错误的根源。
路径测试:对模块中重要的执行路径进行测试。
错误处理测试:比较完善的模块设计要求能遇见出错的条件,并设置适当的出错处理。以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。
边界条件测试:软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点。
集成测试阶段:
在集成测试中,我们主要关注以下内容:
1、把各个模块连接起来时,穿越模块接口的数据是否会丢失。
2、各个模块组合起来,能否达到预期要求的功能。
3、一个模块的功能是否会对另一个模块的功能产生不利影响。
4、全局数据结构是否有问题。
5、单个模块的误差积累起来是否会被放大,从而达到不可接受的程序
根据测试的侧重划分:功能测试与性能测试
功能测试:功能测试检查实际的功能是否符合用户的需求。
功能测试细分很多种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
功能测试:是在规定的一段时间内运行软件系统的所有功能,已验证这个软件系统有无严重错误。
易用性测试:可使用性测试(易用性测试)主要从使用的合理性和方便性等角度对软件系统进行检查,发现认为因素或使用上的问题。
安装测试:安装测试的目的不是找软件错误,而是找安装错误。
兼容性测试:这类测试主要想验证软件产品在不同版本之间的兼容性。有两类基本的兼容性测试:向下兼容(测试软件新版本保留他早期版本的功能)和交错兼容(验证共同存在的两个相关但不同的产品之间的兼容性)。
恢复测试:恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。为此,可采用各种人工干预的手段,模拟硬件故障,并由此检查:
文档测试:这种测试是检查用户文档(如用户手册)的清晰性和精确性,确保叙述正确无误。
配置测试:
配置测试方法通过对被测系统的软/硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特点:
1、这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。
2、这种性能测试方法一般在对系统性能状况有初步了解后进行。
3、这种性能测试方法一般用于性能调优和规划能力。
也就是说,这猴子那个测试关注点是“微调”,通过对软硬件的不断调整,找出着他们的最佳状况,是系统达到一个最强的状态。