软件测试基础理论(面试必备)
1.软件测试定义:
软件测试(Software Testing),在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
2.软件的分类:
软件 = 程序 + 数据 + 文档。
按照功能划分:
系统软件:如操作系统、数据库管理系统,各种驱动软件等(直接与硬件打交道,共同构建平台以运行应用软件)
应用软件:如Office、金山词霸、QQ等(针对用户特定目的设计的软件)
按照技术结构划分:
单机版本:如Office,画图工具等
C/S结构软件:如QQ、MSN等
B/S结构软件:如新浪、网易、人民网等
3.软件测试的对象:
① 源程序/目标代码
② 各开发阶段的文档(需求规格说明、概要设计说明、详细设计说明及其它相关文档)
③ 成形的软件
4.软件测试的目的:
软件测试的目的是尽可能多的发现软件缺陷。检查系统是否满足需求,站在用户角度思考产品或项目功能实现的正确性。
测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。
5.软件测试的原则
0)所有测试的都应以软件设计需求规格说明书为标准进行。
1)应当把“尽早地不断地进行软件测试“作为软件开发者的座右铭。
2)避免让开发者测试评估自己的软件。
3)充分注意测试中的群集现象。
4)严格执行测试计划,排除测试的随意性。
8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
5)完全测试是不可能的
6.软件测试分类
单元测试:
单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
单元定义:
C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。
如何进行单元测试:
单元测试主要用白盒测试,先静态地检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等。
集成测试:
集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行
有序的、递增的测试。重点测试不同模块的接口部分。
系统测试:
指将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
验收测试:
验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试。
α测试:指的是指的是由用户,测试人员、开发人员等共同参与的内部测试。
β测试:指的是内测后的公测,即完全交给最终用户测试
验收测试的重要性:验收签字,收钱。
静态测试:
指不实际运行被测软件,而只是静态地检查程序代码、界面和文档中可能存在的错误的过程。
动态测试:
指实际运行被测程序,输入相应的测试数据,检查实际输出结果与预期结果是否相符。(动态测试方法为结构和正确性测试;动态测试工具Robot、QTP等)
黑盒测试:
指的是把被测的软件看做一个黑盒子,我们不关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出
白盒测试:
指的是把盒子打来,去研究里面的源代码和程序结构。
软件公司中,往往采用黑盒测试&白盒测试相结合的方式。
(静态黑盒测试:看文档,看页面等
静态白盒测试:看源代码等
动态黑盒测试:使用软件等
动态白盒测试:运行源代码等)
灰盒测试:
是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
功能测试:
是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
逻辑功能测试(functiontesting)
界面测试(UItesting)
易用性测试(usability testing)
安装测试(installationtesting)
兼容性测试(compatibilitytesting)
性能测试:
是软件测试的高端领域,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师。
时间性能(事务响应时间等)
空间性能(系统资源消耗)
一般性能测试
可靠性测试
负载测试
压力测试
回归测试:
指对软件的新版本测试时,重复执行上一个版本测试时的用例。
冒烟测试:
是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性。
随机测试:
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。