测试的基础知识
1. 软件的基本概念:
软件=程序+文档;其中程序是指能够实现某种功能的指令的集合,如C语言程序,Java程序;文档是指软件在开发、使用和维护过程中产生的图文集合,如《系统需求规格说明书》。
程序测试主要包括程序逻辑功能、界面、性能、易用性、兼容性、安装等的测试;文档测试主要包括文档内容和截图的校验,排版风格的检查,错别字的校验等。
2. 软件的分类:
从功能上分可以分为系统软件和应用软件。
系统软件:能够直接操作底层的硬件、并为上层软件提供支撑的软件,如操作系统软件、各种硬件驱动程序等。
应用软件:能够为用户提供某种特定的应用服务的软件,如Office、金山词霸、QQ等。
3. Bug的起源:
Bug的中文意思是虫子,因此其源于虫子,一个第一个发现虫子的实例。格蕾丝*哈珀在使用“马克二型”计算机时,突然这台计算机因为一只落在计算机的飞蛾而导致死机。后人就将计算机错误戏称为虫子(Bug),把寻找错误的工作称为Debug。
4. 软件测试的定义:
使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
5. 测试环境:
测试环境就是软件运行的平台,即硬件、软件和网络的集合。
测试环境=硬件+软件+网络
硬件:主要包括PC机、笔记本、服务器各种PDA终端等。
软件:主要是指软件运行的操作系统。
网络:主要针对的是C/S结构和B/S结构的软件,是在局域网里测还是在互联网里测。
6. 软件测试分类:
6.1 黑盒测试和白盒测试
黑盒测试:把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样的,只关心软件的输入数据和输出结果。
白盒测试:把盒子打开,去研究里面的源代码和程序结构。
6.2 静态测试和动态测试
静态测试是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。
代码测试:主要测试代码是否符合响应的标准和规范。
界面测试:主要测试软件的实际界面与需求中的说明是否符合。
文档测试:主要测试用户手册和需求说明是否真正符合用户的需求。
动态测试:实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
判断测试属于动态测试还是静态测试的唯一标准:查看是否运行程序。
6.3 单元测试、集成测试、系统测试和验收测试
单元测试:是指对软件中的最小可测试单元进行检查和验证。单元就是人为规定的最小的被测功能的模块。
集成测试:是单元测试的下一个阶段,是指将通过测试单元组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。
系统测试:是指将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
验收测试:阿尔法测试和贝塔测试,阿尔法测试由用户、开发人员和测试人员等共同参与的内部测试,而贝塔测试内测后的公测,即完全交给最终用户测试。
6.4 功能测试和性能测试
功能测试:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。主要分为:逻辑功能测试、界面测试、易用性测试、安装测试和兼容性测试等。
软件性能主要包括时间性能和空间性能,时间性能主要指软件的一个具体事务的响应时间,空间性能指软件运行时所消耗的系统资源。
软件性能测试分为一般性能测试、稳定性测试、负载测试和压力测试。
一般性能测试指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。对于单机版的软件,我们就在其推荐配置下运行软件,检查CPU的利用率、内存的占有率等性能指标及软件主要事务的平均响应时间。比如测试163邮箱的登录模块,我们只让1个用户多次登录后,系统主要事务的响应时间和服务器的资源消耗情况。
稳定性测试,也叫可靠性测试,是指连续运行被测系统,检查系统运行时的稳定程度。通常用MTBF(Mean Time Between Failure,错误发生的平均时间间隔)来衡量系统的稳定性,MTBF越大,系统的稳定性越强。
负载测试,是性能测试的一种,通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。负载测试和稳定性测试的区别在于负载测试需要给被测系统施加其刚好能承受的压力。
压力测试,是指持续不断地给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。
关于性能测试的分类,可以举一个比较通俗的例子方便大家理解。假设一个人很轻松就能背1袋米,背2袋米很吃力,最多就能背3袋米,那么:
一般性能测试——我就让他背1袋米。
稳定性测试——我让他背1袋米,但是让他去操场上跑圈,看多久累倒。
负载测试——我让他背2袋米去操场上跑圈,看多久累倒。
压力测试——我让他背2袋米,3袋米,4袋米......发现他最多就能背3袋。
6.5 回归测试、冒烟测试和随机测试
回归测试是指对软件的新的版本测试时,重复执行上一个版本测试时的用力。它可以在任何测试阶段进行,既有黑盒测试的回归,也有白盒测试的回归。
冒烟测试,是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
注意:冒烟测试和回归测试往往结合起来使用,每当我们拿到一个新版本时,都首先进行冒烟测试,如果通过,则进行回归测试。
随机测试:是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
软件测试思路图:
冒烟测试