《软件测试基础知识与软件测试基本流程(完整版).docx》由会员分享,可在线阅读,更多相关《软件测试基础知识与软件测试基本流程(完整版).docx(37页珍藏版)》请在第一文库网上搜索。
1、软件测试基础知识与软件测试基本流程(完整版)Q:什么是软件测试?软件测试的目的是什么?A: IEEE软件测试定义为:使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差异。该定义明确提出了软件测试以检验是否满足需求为目标。软件测试的目的在于发现错误;一个好的测试用例在于发现从前未发现的错误;一个成功的测试是发现了从前未发现的错误的测试。所以更为合适的定义是:测试是为发现错误而执行程序的过程。Q:什么是软件缺陷?A:满足下列五个规则之一才称为软件缺陷:1)软件未达到产品说明书标明的功能。2)软件出现了产品说明书指明不会出现的错误。3)
2、软件功能超出产品说明书指明的范围。4)软件未达到产品说明书虽未指出但应该达到的目标。5)软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。Q:什么黑盒测试?黑盒测试方法都包括哪些?A:黑盒测试意味着测试要在软件的接口处进行。是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试方法包括:等价类划分、边界值分析、因果图分析、错误推测法、功能图分析等Q:什么白盒测试?白盒测试方法包括哪些?A:白盒测试是对软件的过程性细节做细致的检查。是把测
3、试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试方法包括:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等Q:软件测试策略都包含哪些?A:根据软件测试工作的测试策略,一般将软件测试过程分为:单元测试、集成测试、系统测试、验收测试四个大的阶段。Q:什么是单元测试?A:单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目
4、的是检验软件基本组成单位的正确性。一个软件单元的正确性是相对于该单元的规约(详细设计)而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。Q:什么是集成测试?A:集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。测试的热情。测试新人最应该具备的就是测试的热情。因为这是一项事业,一项庞大的工程。系统的灵魂师!Q:什么是系统测
5、试?A:统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。Q:什么是验收测试?A:验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。Q:什么是自动化测试
6、?A: 一般我们谈到的自动化测试,其实是有两种说法的,一种是Test Automation,翻译过来叫测试自动化,侧重说明将测试用自动化设计和实现的过程;另外一种是AutomatedTesting/Test,翻译过来叫自动化测试,侧重说明自动的测试软件,可以是自动测试软件的功能或者性能等。表面上看两种是有区别的,但现在我们用的多了,在提到自动化测试时,也就不区分了,基本上代表了一个意思,即:自动化测试是通过工具(程序)来对软件进行测试,一般不需要人为干预或干预很少。Automated Testing/Test Automation:1、 Testing employing software t
7、ools which execute tests without manualintervention. Can be applied in GUI, performance, API, etc. testing.使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试中用得较多。2、 The use of software to control the execution of tests, the comparison ofactual outcomes to predicted outcomes, the setting up of test preconditi
8、ons, andother test control and test reporting functions. Commonly, test automationinvolves automating a manual process already in place that uses a formalizedtesting process.使用软件来控制测试的执行,实际输出和预期输出的对比,测试前提条件的构建,以及其他测试控制条件和测试报告功能。通常,测试自动化涉及自动化对一个已经使用了正式的测验流程的手工过程。显而易见,第二种定义具体,且涵盖了多数情况,特别是只提及软件,而不是一定是“
9、自动化测试工具”,而且不一定自动化测试步喉才叫自动化测试,很多情况下测试前提条件的自动化也是很重要而且很值得自动化的。什么是Alpha和Beta测试?Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现在错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。Beta测试由软件的最终用户们在一个或多个客房场所进行。与Alpha测试不同,开发者通常在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户Beta测试过程中遇到的一切问题(真实在或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间
10、报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。什么是功能测试?Functional testing (功能测试),也称为behavioral testing (行为测试),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。功能测试也叫黑盒子测试或数据驱动测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编
11、写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。什么是性能测试?性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。什么是冒烟测试?冒烟测试(smoke testing),据说是微软起的名字。在微软项目求生法则一书第14章“构建过程”关于冒烟测试,就是开发人员
12、在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板功基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,路板可能会短路,板子冒烟了。冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。在一般软件公司的软件编写过程中,内部需要编译多个版本(Build),但是只有有限的几个版本需要执行正式测试(根据项目开发计划),这些需要执行的中间测试版本,在刚刚编译出来后,软件编译人员需要进行基本性能确
13、认测试,例如是否可以正确安装/卸载,主要功能是否实现,是否存在严重死机或数据严重丢失等Bugo如果通过了该测试,则可以根据正式测试文档进行正式测试。否则,就需要重新编译版本,再次执行版本可接收确认测试,直到成功。新版本的基本功能确认检查的测试,有的公司称为版本健康检查(Build Sanity Check) o对于编译的本地化软件新版本,除了进行上面提到的各种测试检查,还要检查是否在新的本地化版本中正确包含了全部应该本地化的文件。可以通过采用文件和目录结构比较工具,首先比较源语言版本和本地化版本的文件和目录中的文件数目、文件名称和文件日期等,这个过程称为版本镜像检查(Build Image C
14、heck) o其次,分别安装源语言版本和本地化版本,比较安装后的文件和目录结构中的文件数目、文件名称和文件日期等,这个过程称为版本安装检查(BuildInstalling Check)。什么是随机测试? TOP 浏览:6次在软件测试中除了根据测试样例和测试说明书进行测试外,还需要进行随机测试(Ad-hoctesting),主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行样例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增
15、加的功能要重点测试。须注意针对一些特殊情况点、特殊的使用环境和可能并发性问题进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing) 一起进行。理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高。什么是动态测试和静态测试?动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。所谓软件的动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。目前,动态测试也是公司的测试工作的主要方式。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不