软件【Software】:
软件(software)是计算机中与硬件(hardware)相结合的一部分,包括程序(program)和文档(document)。用一个等式表示为:软件=程序+文档。其中,“程序”指的是能够实现某种功能的指令的集合,如C语言程序,Java程序等;“文档”指的是在软件开发、使用和维护过程中产生的图文集合,如《系统需求规格说明书》、《用户手册》、readme,甚至是一些软件市场宣传资料,包装文字和图形等。
【备注:软件测试绝不等同于程序测试,文档测试也是软件测试的一个重要组成部分。通常,程序测试主要包括程序逻辑功能、界面、性能、易用性、兼容性、安装等的测试;文档测试主要包括文档内容和截图的校验,排版风格的检查,错别字的校验等】
客户端/服务器【C/S】:
C指的是客户端(Client),S指的是服务器端(Server),这种软件是基于局域网或互联网的,需要一台服务器来安装服务器端软件,每台客户端都需要安装客户端软件。比如我们经常用的QQ、MSN和各种网络游戏就属于C/S结构的软件。
【备注:C/S结构的软件过去比较流行,但是不便于升级和维护,现在逐渐被B/S结构软件所取代】
浏览器/服务器【B/S】:
B指的是浏览器(Browser),S指的是服务器(Server),这种软件同样是基于局域网或互联网的,它与结C/S构软件的区别就在于,不需要安装客户端(client),只需要有IE等浏览器,就可以直接使用。比如搜狐、新浪等门户网站及163邮箱都属于B/S结构的软件。
【备注:B/S结构软件是现在软件的主流,与C/S结构软件相比,便于升级和维护,是测试的重点】
缺陷【Bug/Defect】:
软件的Bug指的是软件中(包括程序和文档)不符合用户需求的问题。
【备注:这个定义是判断一个软件问题是否是Bug个唯一标准】
软件测试【Software Testing】:
使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别(1983,IEEE软件工程标准术语)。
测试环境【Testing Environment(TE)】:
软件测试环境就是软件运行的平台,包括软件、硬件和网络的集合。用一个等式来表示:测试环境=软件+硬件+网络。其中,“硬件”主要包括PC机(包括品牌机和兼容机)、笔记本、服务器、各种PDA终端等;“软件”主要指软件运行的操作系统;“网络”主要针对的是C/S结构和B/S结构的软件。
【备注:作为一个合格的软件测试工程师,不仅要熟悉软件的知识,也要了解硬件和网络的相关知识】
测试用例【Test Case(TC)】:
指的是在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和预期结果。用一个等式来简单表示:测试用例=输入+输出+测试环境。其中,“输入”包括测试数据和操作步骤;“输出”指的是期望结果;测试环境指的是系统环境设置。
黑盒测试【Black-Box Testing】:
指的是把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。
备注:黑盒测试既包括功能测试,也包括性能测试。
白盒测试【White-Box Testing】:
指的是把盒子盖打开,去研究里面的源代码和程序结构。
灰盒测试【Gray-Box Testing】:
可以把它看作是黑盒测试和白盒测试的一种结合。
静态测试【Static Testing】:
是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
代码走查【Walkthrough】:
静态测试的一种方法,由开发组内部进行,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。
代码审查【Inspection】:
静态测试的一种方法,由开发组内部进行,采用讲解、提问并使用编码模板进行的查找错误的活动。一般有正式的计划、流程和结果报告。
技术评审【Review】:
静态测试的一种方法,由开发组、测试组和相关人员(QA、产品经理等)联合进行,采用讲解、提问并使用编码模板进行的查找错误的活动。一般有正式的计划、流程和结果报告。
动态测试【Dynamic Testing】:
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
单元测试【Unit Testing】:
是指对软件中的最小可测试单元进行检查和验证。例如,在C语言中,单元一般指1个函数;Java里,单元一般指1个类;在图形化的软件中,单元也可以指1个窗口、1个菜单等。
桩模块【Stub】:
是指模拟被测模块所调用的模块。
驱动模块【Driver】:
是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块,并输出结果。
集成测试【Integration Testing】:
是指将通过测试的单元模块组装成系统或子系统,在进行测试,重点测试不同模块的接口部分。
系统测试【System Testing】:
指的是将整个软件系统看作是一个整体测试,包括对功能、性能的测试,以及对软件所运行的软、硬件环境的测试。
验收测试【Acceptance Testing】:
指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。
α测试:
验收测试的一种,指的是由用户、测试人员、开发人员等共同参与的内部测试。
β测试:
验收测试的一种,指的是内测后的公测,即完全交给最终用户测试。
功能测试【Function Testing】:
是黑盒测试的一种,它检查实际软件的功能是否符合用户的需求。
界面测试【UI Testing】:
UI是User Interface,即用户界面的缩写。一般情况下,都把软件的界面测试用例同软件的逻辑功能测试用例分开去写。
易用性测试【Usability Testing】:
是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。
安装测试【Installation Testing】:
这里的安装测试是指广义上的,包括安装、卸载。
兼容性测试【Compatibility Testing】:
兼容性测试包括硬件兼容性测试和软件兼容性测试;硬件兼容性主要是指软件运行的不同硬件平台的兼容性,如PC机、笔记本、服务器等;软件兼容性主要是指软件运行在不同操作系统等软件平台上的兼容性。
性能测试【Performance Testing】:
是指对软件的运行反馈速度、所消耗系统资源等各种性能指标的测试。
可靠性测试【Reliability Testing】:
也叫稳定性测试,是指连续运行被测系统,检查系统运行时的稳定程度。人们通常用MTBF(Mean Time Between Failure)来衡量系统的稳定性,MTBF越大,系统的稳定性越强。
负载测试【Load Testing】:
是性能测试的一种,通常是指被测系统在其能忍受的压力<极限范围之内连续运行>,来测试系统的稳定性。
压力测试【Stress Testing】:
是性能测试的一种,通常是指持续<不断地>给被测系统增加压力,直到将被测系统<压跨为止>,用来测试系统所能承受的最大压力。
回归测试【Regression Testing】:
是指对软件的新版本测试时,重复执行上一个版本测试时的用例。
冒烟测试【Smoke Testing】: 又名:ad-hoc
是指在对一个新版本进行系统大规模地测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
随机测试【Random Testing】:
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
软件质量保障【Software Quality Assurance(SQA)】:
为了确保软件<开发过程和结果符合预期的要求>,而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价。
软件能力成熟度模型【Capability Maturity Model(CMM)】:
CMM就是SQA用来监督项目的一个标准质量模型,是由卡耐基-梅隆大学于20实际80年代制定的,最初只是应用于本校的软件项目开发,后来逐渐推广为主流的行业标准。CMM共为5级:初始级、可重复级、已定义级、已管理级和优化级。
有效等价类【Valid Equivalence Class】:
是指符合《需求规格说明书》,合理地输入数据集合。
无效等价类【Invalid Equivalence Class】:
是指不符合《需求规格说明书》,无意义地输入数据集合。
软件生命周期【Software Life Cycle】:
是指软件开发和测试全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。
黑盒测试工具【Black-Box Testing Tools】:
是指测试功能或性能的工具,主要用于系统测试和验收测试;其又可分为功能测试工具和性能测试工具。
白盒测试工具【White-Box Testing tools】:
是指测试软件的源代码的工具,可以实现代码的静态分析、动态测试、评审等功能,主要用于单元测试。
测试管理工具【Testing Management Tools】:
是指管理整个测试流程的工具,主要功能有测试计划的管理、测试用例的管理、缺陷跟踪、测试报告管理等,一般贯穿于整个软件生命周期。
测试工作的正确四步曲
What to do 第一步, 确立测试范围和对象, 如果这一步漏了,后面的质量全打折扣--测试计划
How to do 第二步, 决定用什么测试技术或手段来测试这些测试对象 --测试方案
When to do 第三步, 决定先测试哪些测试对象和先应用哪些测试技术 --测试策略
Automation 第四步, 尽可能把how to do的工作都自动化,从而提升执行效率(仅仅是执行效率) --测试效率
产品所有的架构和设计缺陷 :异常处理;功能组合处理;
算法选取考虑不周全;以及非功能属性的设计需求。
需求的质量也是有维度的: 二义性、可测性、完整性、前后一致性、可实现性、必要性。