软件测试基础知识
- 格式:pdf
- 大小:297.21 KB
- 文档页数:12
第一章测试基础软件测试的定义:使用人工和自动的手段来运行或测试某个系统的过程。
其目的是检验它是否满足规定的需求或弄清预期结果与实际结果间的差别。
软件测试的目的:证明检测预防证明:1)获取系统在可接受风险范围内可用的信心2)尝试在非正常情况和条件下的功能和特性3)保证一个工作产品是完整的且可用或可被集成的检测:1)发现缺陷,错误和系统不足2)定义系统能力和局限性3)提供组件、工作产品和系统的质量信息预防:1)通过将测试活动提前介入到软件生命周期中,尽早的发现并消除前期研发阶段引入的缺陷,以防止前期缺陷遗留并放大到后续环节2)通过对发现的缺陷进行分析,找出导致这些缺陷产生的流程上的不足,通过改进流程,预防同类缺陷再次产生软件生命周期:计划->需求分析->概要设计->详细设计->编码->测试->运行维护1)计划:SDP (软件研发计划) UTP(单元测试计划)SVVP(软件验证与确认计划) ITP (集成测试计划)STP (系统测试计划)2)需求分析:SRS(软件需求规格说明)根据研发类型,需求来源,则用户针对的具体对象分为两种:针对产品的与针对项目的3)设计:HLD(High Level Design概要设计)LLD(Low Level Design 详细设计)4)编码:写成以某个程序设计语言表示的源程序清单,使用RDBMS(Relational Database Management System 关系型数据库管理系统)工具建立数据库。
5)测试:检验软件是否符合客户需求,达到质量要求。
按测试阶段分单元测试(UT)集成测试(IT )系统测试(ST )——最先介入,最晚结束6) 运行维护:将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对其进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。
软件研发的相关要素:人员 过程 工具1) 人员组成分析人员设计人员 开发人员 测试人员配置管理人员(CMO,SCM ) SQA2) 组架构软件研发流程:常见的软件研发流程:瀑布模型,螺旋模型,RUP 流程,IPD 流程软件缺陷和BUG (包括错误和不足):缺陷的引入是随时的,不确定的。
软件测试基础知识与教程第一章:软件测试概述软件测试是指在软件开发过程中,通过预定义的测试方法和工具,对软件的功能、性能和安全等进行验证和确认的过程。
本章将介绍软件测试的概念、目的和重要性。
1.1 软件测试的定义软件测试是对软件产品的评价过程,通过运行程序、应用各种测试技术和工具,发现软件中的错误、缺陷并评估软件质量。
1.2 软件测试的目的- 发现软件中的错误和缺陷,确保软件的稳定性和可靠性;- 评估软件的可用性和性能;- 确保软件符合用户需求和规格说明。
1.3 软件测试的重要性- 高质量的软件需要经过严格的测试才能达到;- 测试能够帮助开发人员识别和修正软件中的错误和缺陷;- 软件测试能够提供可靠的测试结果,为用户提供准确的软件质量评估。
第二章:软件测试方法本章将重点介绍常用的软件测试方法,包括黑盒测试、白盒测试和灰盒测试。
2.1 黑盒测试黑盒测试是一种基于对软件外部行为的观察,不考虑软件内部结构和实现的测试方法。
主要通过输入有效和无效的数据,观察软件的输出和行为是否符合预期来验证软件是否正确运行。
2.2 白盒测试白盒测试是一种基于对软件内部结构和实现的了解,设计测试用例并覆盖内部代码的执行路径的测试方法。
通过结构覆盖、路径覆盖和判定覆盖等方法来验证软件的各个部分都得到了正确的测试。
2.3 灰盒测试灰盒测试是黑盒测试和白盒测试的结合,既考虑软件的外部行为又考虑软件的内部结构。
通过了解软件的设计和实现,设计测试用例并验证软件的正确性和稳定性。
第三章:软件测试流程本章将介绍软件测试的常见流程,包括需求分析、测试计划、测试设计、测试执行和测试评估。
3.1 需求分析在软件测试开始之前,首先需要进行需求分析,明确软件的功能和性能需求,确定测试的目标和范围。
3.2 测试计划测试计划是制定整个测试过程的指南,包括测试资源的分配、测试环境的准备、测试策略和方法的确定。
3.3 测试设计测试设计是根据测试目标和范围,确定测试用例和测试数据的过程。
软件测试文档软件测试的基本概念和方法1 软件测试的基本流程2 软件缺陷(Bug)3软件测试的基本原则4 软件测试的基本方法5 软件测试的分类和阶段软件测试基本流程软件测试活动包括:★制定测试计划★设计测试用例★执行测试和缺陷跟踪★测试评估(报告)测试计划主要包含以下内容:▼测试计划的简介及测试项目说明▼需要测试的项目清单▼测试手段和策略▼项目通过或失败的标准▼测试的可交付性▼测试任务▼环境的需求▼测试的资源(人员)▼进度表▼风险及偶然事故的预测测试计划注意事项在写测试计划时需要特别注意以下几点:▼明确测试的目标测试最后要达到的目标必须是明确的,可以量化和度量的,而不是模棱两可的宏观描述。
▼坚持“5W”规则,明确内容与过程“5W”规则指的是What、Why、When、Where、How。
利用“5W”规则可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
测试用例测试用例(checklist),是关于具体测试步骤的文档,它描述了测试的输入参数、条件及配置、预期的输出结果等,以判断被测软件的工作是否正常。
测试用例应当包括用例编号、用例名称、测试等级、预置条件、输入数据、操作步骤、预期输出、实际输出、注释等。
用例设计方法等价类划分,分为有效等价类和无效等价类边界值分析,选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据因果图法,根据所有输入条件的不同组合,产生多种相应的结果来设计用例通过测试,通过分析需求说明书,确定程序是否满足目标失败测试,纯粹为了破坏软件,做一些系统不允许做的事情而设计用例执行测试(用例)将设计好的测试用例和测试数据应用于实际软件测试过程中,在执行测试的过程中,可以对前阶段的测试用例和测试数据进行补充,以便使用例更加完善,使测试更加充分。
在执行测试的过程中,将提交的BUG进行跟踪,再次验证,这是一个循环的过程软件缺陷(Bug)在软件使用过程中所出现的任何问题,或者导致软件不能符合设计要求或满足消费者需求的问题都是软件缺陷(BUG)发现BUG要及时提交给开发人员及其他相关人员,在记录缺陷时要注意以下几条:◆保证重现缺陷◆分析故障,使用最少步骤重现缺陷,但要包含所有重现缺陷的必要步骤◆方便阅读◆一个缺陷一个报告软件缺陷类型软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观软件测试的原则所有测试的标准都是建立在用户需求之上。
软件测试基础知识(摘自《软件评测师教程》)什么是软件测试?RE:“软件测试”的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。
什么是软件质量?RE:在1991年软件产品质量评价国际标准ISO 9126中定义的“软件质量”是:软件满足规定或潜在用户需求特性的综合。
到1999年,软件“产品评价”国际标准ISO 14598经典的“软件质量”定义是:软件特性的总和,软件满足规定或潜在用户需求的能力。
软件测试的目的是什么?RE:测试的目的,是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择与接受软件提供有力的依据。
软件测试的原则是什么?RE:A 所有的软件测试都应追溯到用户需求。
B 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。
C 完全测试是不可能的,测试需要终止。
D 测试无法显示软件潜在的缺陷。
E 充分注意测试中的群集现象。
F 程序员应避免检查自己的程序。
G 尽量避免测试的随意性。
什么是黑盒测试?RE:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
黑盒测试法注重于测试软件的功能需求,主要试图发现下列积累错误::.A 功能不正确或遗漏;B 界面错误;C 数据库访问错误;D 性能错误;E 初始化和终止错误。
什么是测试用例?RE:测试用例就是设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。
测试用例是将测试行为具体量化的方法之一。
使用测试用例的好处是什么?RE:A 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。
B 测试用例的使用令软件测试的实施重点突出、目的明确。
C 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期。
第一讲计算机基础一、软件计算机=硬件+软件软件=程序+文档测试对象:文档和程序都要测试扩展:1、软件的开发阶段划分:(1)需求分析阶段由需求分析人员完成,产出物:《需求规格说明书》(2)设计阶段由系统架构师(分析师)完成,产出物:《概要设计说明书》和《详细设计说明书》(3)编码阶段由开发人员完成,产出物:程序常见面试题:哪个阶段引入的bug最多?哪个阶段最少?引入bug最多的是需求分析阶段(大概占缺陷总数的55%左右),其次是设计阶段(大概占缺陷总数的25%左右),最少的是编码阶段(大概占缺陷总数的15%左右),还有大约5%左右的缺陷是由于兼容性问题或者配置原因造成的。
由此得出结论:(1)测试不能只测程序,文档也必须要测(2)测试工作应尽早介入,并且应该贯穿整个开发周期始终(尽早测试原则和不断测试原则)二、软件缺陷Defect ,Bug1、缺陷定义(5条)说明:只要满足任何一条就是bug,与顺序无关。
(1)需求要求的功能没有实现(3)软件出现了指明不应该出现的错误(4)需求中虽未明确说明,但是应该实现的功能没有实现说明:需求并不完美,有遗漏的可能性,但是测试人员不能因为需求的错误,就造成测试的错误。
(5)程序运行缓慢、难以理解,不易使用等,站在用户角度上,一切不好的地方。
2、缺陷定义2 理解:IEEE美国电气和电子工程师协会(IEEE)对缺陷的定义:(1)从软件产品的内部去看(白盒)缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;(2)从软件产品的外部去看(黑盒)缺陷是系统所需要实现的某种功能的失效或违背。
扩展:缺陷的同义词:毛病、问题、错误、异常、功能失效、违背等等3、缺陷定义3软件使用过程中的软件错误、异常等问题软件的2个基本因素:(1)功能要能够实现(2)软件要有强大的异常处理能力(健壮性)三、软件测试Test1、什么是软件测试简单来说软件测试就是从现有软件中,尽可能多的查找缺陷的过程。
软件测试基础知识一、软件测试的描述:测试能提高软件的质量,但是提高质量不能依赖测试;测试只能证明错误存在,不能证明错误不存在;测试的主要困难是不知道该如何进行有效地测试,也不知道什么时候能够放心的结束测试;每个程序员都应当测试自己的程序(份内事),但不能作为程序已通过测试的依据(所以项目需要独立的测试人员);80-20原则:80%的错误聚集在20%的模块中,经常出错的模块改错后还是会经常出错;测试应当循序渐进,不要企图一次性做完。
"欲速则不达"。
一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例一个成功的测试是指揭示了迄今为至尚未发现的错误的测试二、软件分类:1)按功能分:系统软件(OS、硬件驱动程序)应用软件(Office、QQ)2)按技术架构分:单机版软件(Office、画图工具)C/S结构软件(客户端Client/服务器端Server,QQ、MSN)B/S结构软件(浏览器Browser/服务器Server,WEB项目)<现在软件的主流> 3)按用户分:产品软件:目标用户是大众用户(win 8)项目软件:目标用户是具体用户软件测试的目的:为了发现错误,不能证明程序正确,设计合适的测试用例,用尽可能少的测试用例,来发现尽可能多的软件错误。
测试人员的主要工作:1)规划测试任务2)设计测试(包括编写测试用例等等)3)建立一个合适的测试环境4)评估、获取、安装和配置自动测试工具5)执行测试6)撰写适当的测试文档软件测试与软件质量:QA(Quality Assurance),(关注的是过程);QC(Quality Control),即质量控制(关注的是结果)。
软件能力成熟度模型(CMM)CMM将软件组织的过程能力成熟度级别分为5个级别:初始级、可重复级、已定义级、已管理级、优化级。
SQA(Software Quality Assurance,软件质量保障)测试是在发现问题,SQA是在预防问题ISO/IEC9126国际标准所定义的软件质量包括六个部分,分别为功能性、可靠性、可用性、有效性、可维护性和可移植性。
1、软件测试:是通过人工或者自动化的检测方式,检测被测对象是否满足用户要求或弄清楚预期结果与实际结果之间的差异,是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程。
2、静态测试:就是不执行被测对象程序代码、不运行被测对象而实施的测试活动。
3、动态测试:运行被测对象的程序代码,执行测试用例,检查系统软件运行结果与预期结果的差异。
4、黑盒测试:把测试对象看作一个黑盒子,完全不考虑程序内部逻辑结构和内部特性,只依据规格说明书、设计文档及其他需求描述文档,检查被测对象是否与需求一致。
5、白盒测试:基于程序代码内部构成的测试。
6、Alpha测试:是由用户在开发环境下进行的测试,也可以是在开发机构内部的用户模拟实际操作环境中进行测试。
7、Beta测试:是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
8、软件:是指一系列按照某种特定规则组织在一起,实现用户需求的计算机数据和指令的集合体。
9、功能测试:是指为了确保软件系统功能实现的正确性,完整性和其他特性而进行的测试。
10、性能测试:是指为了评估软件系统的性能状况,和预测软件系统性能趋势而进行的测试和分析。
11、Bug产生于程序的源代码或者程序设计阶段的疏忽或者错误。
12、兼容性测试:主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行。
13、并发测试:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题。
验证:是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了所期望的事情。
确认:是一系列的活动和过程,目的是证实在一个给定的外部环境中软件逻辑的正确性,即保证软件以正确的方式工作。
软件缺陷:软件缺陷包括软件错误,但是软件缺陷不一定就是软件有错误。
所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
单元测试:单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
软件测试基础理论知识(总55页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除一、软件测试概论1.1基础概念【定义】软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度、完全度和质量的软件过程。
【内容】软件测试主要工作内容是验证(verification)和确认(validation )。
验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。
(Do the right thing)确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。
即保证软件以正确的方式来做了这个事件(Do it right)软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
【目的】软件测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。
【原则】(1)测试的标准是用户的需求所有的软件测试都应追溯到用户需求,测试人员要始终站在用户的角度去看问题、去判断软件缺陷的影响,系统中最严重的错误是那些导致程序无法满足用户需求的缺陷。
(2)事先定义好产品的质量标准有了质量标准,才能依据测试的结果对产品的质量进行正确的分析和评估,例如,进行性能测试前,应定义好产品性能的相关的各种指标。
同样,测试用例应确定预期输出结果,如果无法确定测试结果,则无法进行校验。
(3)应当“尽早地和不断地进行软件测试”作为测试者的座右铭在软件开发生命周期早期引入的错误占软件过程中出现所有错误(包括最终的缺陷)数量的50%~60%。
软件测试基础知识软件测试是确保软件质量和可靠性的关键步骤。
在软件开发的过程中,测试是不可或缺的一环。
它涵盖了各个阶段,从需求分析到软件交付之前的最后一步测试。
本文将介绍软件测试的基础知识,包括测试类型、测试方法和常用工具。
一、测试类型1. 功能测试功能测试是对软件的功能进行验证。
它通过模拟用户的操作来测试软件是否符合预期的需求和规范。
功能测试通常包括输入验证、输出验证、用户界面测试、集成测试等。
通过功能测试,可以确保软件在各种操作条件下正常运行。
2. 性能测试性能测试是对软件的性能进行评估。
它包括对软件的响应时间、吞吐量、并发能力等进行测试。
性能测试可以帮助发现软件在压力条件下的性能瓶颈,从而改进其性能和可靠性。
3. 安全测试安全测试是为了评估软件的安全性和防护能力。
它通过模拟黑客攻击、检测漏洞和脆弱性来测试软件的安全性。
安全测试可以帮助发现潜在的安全风险,并采取措施加固软件的安全性。
4. 兼容性测试兼容性测试是为了确保软件在不同平台、不同浏览器、不同设备上的兼容性。
它测试软件在各种环境下的运行情况,以确保软件在不同用户使用条件下的稳定性。
二、测试方法1. 黑盒测试黑盒测试是一种测试方法,它不考虑软件的内部结构和实现细节,只关注输入和输出。
测试人员通过输入各种情况的数据,验证软件的输出是否符合预期结果。
黑盒测试可以帮助发现功能缺陷和逻辑错误。
2. 白盒测试白盒测试是一种测试方法,它考虑软件的内部结构和实现细节。
测试人员通过检查代码和设计文档,设计测试用例来测试软件的每个细节,以确保软件的正确性和稳定性。
白盒测试可以帮助发现代码错误和逻辑问题。
3. 灰盒测试灰盒测试是黑盒测试和白盒测试的结合。
测试人员对软件的外部行为进行测试,同时也有一定的了解软件的内部结构。
灰盒测试可以综合黑盒测试和白盒测试的优点,更加全面地评估软件的功能和性能。
三、常用工具1. 自动化测试工具自动化测试工具可以模拟人类用户的操作,自动执行测试用例并生成测试报告。
第一节黑盒测试方法1.等价类划分法1.1等价类划分法的分类有效等价类:合理的、有意义的输入数据的集合。
作用:检验程序是否实现了规格说明中的功能和性能。
无效等价类:不合理的、无意义的输入数据的集合。
作用:检验不符合规则中的功能和性能时,的提示说明是否正确。
2.边界值分析法边界值划分法和等价类划分法的联系:边界值划分法是对等价类划分法的补充。
测试用例在有效等价类和无效等价类的边界。
边界值不仅要考虑输入边界还要考虑输出空间范围边界。
数据应该选取:刚刚等于、刚刚大于、刚刚小于边界值得数据作为测试数据。
边界值法和等价类划分法具有相同的划分。
边界值法假定错误更多的发生在边界值上。
3.错误推测法凭经验和直觉推测可能的错误,列出可能发生错误的或容易发生错误的特殊情况,编写测试用例。
此种测试方法依靠经验和直觉。
4.因果图法等价类划分法和边界值法只考虑了有输入条件,却没有考虑输入条件的组合以及输入条件的相互制约关系。
这样虽然输入条件的错误情况都涉及到了,但是多个输入条件组合起来的错误情况却被忽略了。
因果图法:适合多种输入条件的组合,相应产生多个动作的的形式来编写测试用例。
例如图:输入条件为会计科目和部门用户经济分类的组合,产生并的动作,来查询第二节软件测试基础2.1.软件测试是什么?软件:软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据以及相关文档的完整集合。
即软件=文档+数据+程序软件测试产生的原因:程序规模的爆炸式增长;人们对软件的质量要求越来越高;软件产品之间的竞争越来越大;减轻售后人员的大部分工作。
什么是软件测试?使用人工或自动的手段来运行或测试整个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
2.2软件测试的原则是什么?1)所有的测试都应该追溯到用户需求2)今早启动测试工作3)应该在测试工作真正开始前的较长时间内就开始测试计划4)测试应从小规模开始,逐步转向大规模5)为了达到最佳效果,应该由独立的第三方来执行测试6)软件测试是由风险的7)测试的目的在于发现存在的缺陷8)找到的软件缺陷越多,就说明软件缺陷越多2.3软件生命周期软件生命周期是软件开发全过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。
第一部分:(软件)测试概念类1、软件质量软件质量是“软件满足规定或潜在用户需求特性的总和”。
反映出如下3方面的问题:1)软件需求是度量软件质量的基础。
不符合需求的软件就不具备质量。
2)软件人员必须遵循软件过程规范,用工程化的方法来开发软件。
3)满足一些没有明确规定的隐含需求。
2、什么是软件测试软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行查错的活动。
简单地说,软件测试是为了发现错误而执行程序的过程。
软件测试是软件质量保证(QA)的一个重要环节。
3、测试目的从用户角度出发,通过软件测试暴露软件中潜在的错误和缺陷。
4、测试中应该注意的原则1)有合法的数据输入,同样有非法的数据输入2)在对程序修改之后应该进行回归测试3)应充分注意测试中的集群现象(发现的问题越多,未发现的问题也越多)4)妥善保留测试计划、测试用例和相关的测试报告5)对测试结果做全面检查,避免遗漏6)严格执行测试计划,排除测试的随意性5、软件测试对象软件测试贯穿于整个软件生命周期中,不同阶段测试的对象和方法不同。
主要包括可执行研究报告、项目实施计划、软件需求说明书或系统功能说明书。
开发阶段的概要设计说明书、详细设计说明书以及源程序。
单元测试--集成测试--确认测试--系统测试--验收测试软件验证(Verfication):保证软件正确实现特定功能的一系列活动和过程。
其目的是保证软件在其生命周期每一个阶段的成果都满足上一阶段设定的目标。
软件确认(Validation):保证软件满足用户需求的一系列活动过程。
其目的是在软件开发完后保证软件与用户的需求相吻合。
6、软件测试V模型7、简述软件测试过程的关键活动,以及保证软件测试质量的手段。
1)关键活动a.测试需求分析b.制定测试计划c.测试设计d.测试执行e.测试分析与总结2)质量保证手段a.制定质量保证计划、质量体系建立b.测试活动审核、测试文档评审c.测试过程中数据收集、度量和分析7、软件测试类型1)按开发阶段划分:单元测试(模块测试)、集成测试、确认测试(系统测试)、验收测试单元测试内容:模块接口、局部数据结构、重要的执行路径、错误处理、边界测试单元测试步骤:a、按照下图配置测试环境,设计辅助测试模块b、编写测试数据c、进行多个单元的并行测试集成测试:渐进式和非渐进式确认测试:确认测试标准、配置复审系统测试:恢复测试、安全性测试、强度测试、性能测试2)按照实施组织划分:开发方测试、用户测试、第三方测试3)按照测试方式划分:静态测试、动态测试4)按照测试技术划分:白盒测试、黑盒测试(功能测试)、灰盒测试8、软件问题的概念与分类1)软件错误:软件生命周期内不希望或者不可接受的认为错误,其结果将导致软件缺陷的产生;2)软件缺陷:存在于软件中的那些不希望或者不可接受的偏差,其结果是软件运行到某个阶段时出现软件故障。
一、基础知识1、什么是软件测试,软件测试的目的是啥?2、什么是测试计划?都包括啥?什么是测试方案,什么是测试策略?测试方案包含哪些内容?测试用例设计方法有哪些?测试用例内容有哪些?3、测试用例为什么需要分级,如何分级别?测试用例需要哪些人来评审?评审的目的是什么?好的测试用例关键点是什么?不能发现BUG的测试用例不是好的测试用例吗?4、测试分为哪几个阶段?5、软件测试类型都有哪些?你进行过哪些测试,擅长什么?6、软件缺陷等级划分7、缺陷生命周期8、测试生命周期9、为什么要进行交叉测试?10、α、β测试是什么,两者的区别是什么?11、什么是驱动模块、桩模块12、什么是白盒测试,有几种方法13、测试结束标准14、测试报告包含哪些内容?15、项目中的需求,测试可以和客户沟通吗?不确定的需求怎么解决?16、你认为测试人员需要具备哪些素质?开发犯低级错误怎么办?开发说不是bug怎么办?你为什么能够做测试这一行?你的职业规划?17、如何测试纸杯二、接口测试1、什么是API?什么是API测试?2、常见的API测试点有哪些?API测试中使用的一些常用协议?用于API测试的工具?最常用的API文档模板?3、API和Web服务之间的区别?4、什么是Soap?什么是Rest API?SOAP和REST的区别?5、API常见测试有哪些?API测试有哪些优势?API测试中验证哪些内容?6、API测试、单元测试和UI测试之间的区别?7、API测试中可能会遇到哪些问题?8、执行API测试时我们一般会发现哪些BUG类型呢?9、接口测试用例的编写要点有哪些?10、列举一些最常用的HTTP方法?常见的响应状态码及意义11、可以使用GET请求而不是POST请求来创建资源吗?POST和GET有什么区别?12、PUT和POST方法有什么区别?13、接口产生的垃圾数据如何清理?测试的数据你放在哪?14、你们怎么做的参数化?15、接口测试的步骤有哪些?API测试设计的原理是?16、异步接口怎么测试?17、请详细阐述接口测试和UI测试在测试活动中是如何协同测试的?18、怎么设计接口测试用例?19、下个接口请求参数依赖上个接口的返回数据?依赖于登录的接口如何处理?依赖于第三方数据的接口如何进行测试?20、不可逆的操作,如何处理,比如删除一个订单这种接口如何测试21、json和字典dict的区别?三、性能测试1、性能测试包含了哪些软件测试(至少举出3种)?2、请问什么是性能测试、负载测试、压力测试?3、在给定的测试环境下进行,考虑被测系统的业务压力量和典型场景?4、什么时候可以开始执行性能测试?5、简述性能测试的步骤。
第一章测试基础软件测试的定义:使用人工和自动的手段来运行或测试某个系统的过程。
其目的是检验它是否满足规定的需求或弄清预期结果与实际结果间的差别。
软件测试的目的:证明检测预防证明:1)获取系统在可接受风险范围内可用的信心2)尝试在非正常情况和条件下的功能和特性3)保证一个工作产品是完整的且可用或可被集成的检测:1)发现缺陷,错误和系统不足2)定义系统能力和局限性3)提供组件、工作产品和系统的质量信息预防:1)通过将测试活动提前介入到软件生命周期中,尽早的发现并消除前期研发阶段引入的缺陷,以防止前期缺陷遗留并放大到后续环节2)通过对发现的缺陷进行分析,找出导致这些缺陷产生的流程上的不足,通过改进流程,预防同类缺陷再次产生软件生命周期:计划->需求分析->概要设计->详细设计->编码->测试->运行维护1)计划:SDP(软件研发计划)UTP(单元测试计划)SVVP(软件验证与确认计划)ITP(集成测试计划)STP(系统测试计划)2)需求分析:SRS(软件需求规格说明)根据研发类型,需求来源,则用户针对的具体对象分为两种:针对产品的与针对项目的3)设计:HLD(High Level Design概要设计)LLD(Low Level Design详细设计)4)编码:写成以某个程序设计语言表示的源程序清单,使用RDBMS(Relational Database Management System关系型数据库管理系统)工具建立数据库。
5)测试:检验软件是否符合客户需求,达到质量要求。
按测试阶段分单元测试(UT)集成测试(IT )系统测试(ST )——最先介入,最晚结束6)运行维护:将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对其进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。
软件研发的相关要素:人员过程工具1)人员组成分析人员设计人员开发人员测试人员配置管理人员(CMO,SCM )SQA (软件质量保证)2)组架构项目经理配置经理测试经理开发经理配置管理组软件测试组软件开发组SQA软件研发流程:常见的软件研发流程:瀑布模型,螺旋模型,RUP 流程,IPD 流程软件缺陷和BUG (包括错误和不足):缺陷的引入是随时的,不确定的。
缺陷可以归结为三类:遗漏、错误、额外的实现。
过程(流程)技术(工具)质量人(组织)附录:1)SDP:Software Develop Plan软件研发计划2)SVVP:Software Verification and Validation Plan软件验证与生效计划第二章测试过程划分为三阶段:单元测试(Unit Testing)集成测试(Integration Testing)系统测试(System Testing)*确认测试(Validation Testing)UT IT STVTa)UT:针对软件基本组成单元目的:检验软件模块对《详细设计说明书》的符合程度。
UT面向过程:函数面向对象:类属性方法b)IT:针对组装后功能及模块间接口是否正确目的:检验软件模块对《概要设计说明书》的符合程度。
c)ST:针对硬件、外设、某些支持软件、数据和人员等目的:检验对《软件需求规格说明书》的符合程度。
d)VT:纯系统测试,介于IT与ST之间若该软件包括硬件外设等,则VT相当于IT。
若该软件为纯系统软件,则VT相当于ST。
UT,IT,ST的比较UT IT ST测试方法白盒(某些情况下也可用黑盒测试)灰盒黑盒(某些情况下也可用白盒测试)考察范围数据结构、逻辑控制、异常处理模块间接口组合后的功能系统相对于需求的符合程度评估标准逻辑覆盖率方法:TDD(测试驱动开发)接口覆盖率方法:1.每个接口被覆盖的程度2.每个接口的等价类、边界值被覆盖的程度测试用例对需求项的覆盖程度方法:1.等价类两两组合2.边界值分析3.业务流程法4.状态迁移法5.错误猜测法6.输出域覆盖回归测试(Regression Testing)目的:验证缺陷得到正确的修复,同时对系统的修复没有影响以前的功能。
*回归测试可以发生在任何一个阶段1)回归测试流程a.制定策略b.确定版本c.按策略执行测试d.验收通过:则关闭缺陷跟踪单不通过:返回缺陷跟踪单,开发人员重新修改,再次提交2)回归测试策略a.完全重复测试覆盖修改法b.选择性重复测试周边影响法:比a更充分。
难点:如何选取用例指标达成法:选择一个最小的测试用例集合风险识别法:选择重要级别高的用例3)回归测试自动化a.程序自动化:功能测试自动化b.自动配置:Builder、ANT/NANT、BVTc.测试用例、结果自动化:测试管理工具QTP、Robot(基于GUI)d.利用脚本语言:TCL、Python、Perle.专用测试工具:f.尽早考虑(可继承、推广):其他测试阶段(针对用户):1)验收测试→项目型验收依据:合同、需求规格说明书、验收测试计划2)α测试β测试产品型γ测试●α测试是用户在开发环境下,开发者或测试人员在用户旁,记录错误情况等,环境是受控的。
目的在于评价软件的FLURPS(即功能、局域化、可用性、可靠性、性能和技术支持)●β测试是在实际使用环境下,开发者及测试人员不在测试现场。
●γ测试是产品正式发型的候选版,可能会是以后发行的正式版。
第三章软件质量软件质量的定义:实体(被测试系统)基于某些特性满足需求的程度。
实体特性需求1)实体:软件——被测对象2)特性:基于ISO9126分析SRS得出测试内容,分析测试内容的两种主要方法:a.ISO9126分析方法优点:国际标准b.测试类型分析方法缺点:无标准,实际应用中需要企业根据自身行业特点定义测试类型*相同点:成功经验复用,二者存在对应关系3)需求:质量三个层次a.符合需求规格(内部要求)b.用户显示需求(外部要求)c.用户隐式需求(使用要求)4)质量铁三角:过程技术组织软件质量管理体系质量管理理论:第一阶段:检验质量管理第二阶段:统计质量控制第三阶段:全面质量管理流行的质量管理体系1)ISOa.三个核心ISO9000管理理念和原则Iso9001组织质量管理体系必须履行的的要求做了明确的规定ISO9004组织持续改进的指南标准b.八项质量原则以顾客为中心*发挥领导作用全员参与过程方法管理的系统方法持续改进基于事实的决策方法*互利的供方关系TC 质量评价(通过质量统计学得出)需求覆盖通过用例发现缺陷数占总发现缺陷数比例Defects/TC(每用例缺陷数)100%TCs/页SRS 测试前期发现严重缺陷数占总发现严重缺陷数比例2)CMM/CMMI(Capability Maturity Model)能力成熟度模型a.起源:美国国防部委托立项美国软件工程研究所(SEI )提出的模型用来:评估软件承包商能力协助组织改进过程、提高过程能力b.必要性业界的实施标准业界的交流语言中国企业获取国际订单的门槛向下采购的保障降低软件生产风险的有力手段c.特点及各级概要初始级:不可预测的、无序的、混乱的。
可重复级:有纪律的,经验复用已定义级:标准的、一致的已管理级:可预测的优化级:不断改进的3)六西格玛软件质量模型:质量模型:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础第四章测试方法功能性可靠性易用性效率维护性可移植性适合性准确性户操作性保密安全性功能性的依从性适应性易安装性共存性易替换性可移植性的依从性易分析性易改变性稳定性易测试性维护性的依从性时间特性资源利用性效率的依从性易理解性易学性易操作性吸引性易用性的依从性成熟性容错性易恢复性可靠性的依从性外部和内部质量UT阶段的工作开发人员编码→编译(测试)→编码规则检查(测试)→注释率检查(保证充分注释,计算方法:注释行数/(代码行数+注释行数))→代码走读(测试)→UT执行编码规则:1)变量命名规则如:gcount全局变量,pcount指针变量2)If(x==1)应写成if(1==x)避免类似将if(x==1)错写成if(x=1)UT计划、UT设计、UT实现IT阶段工作例如:测试通信协议栈层4层3层2物理层层内集成→层间集成IT计划、IT设计、IT实现ST阶段工作ST计划、ST设计、ST实现搭建测试环境→执行黑盒、白盒例子1.测试工程师VS医生2.自动售货机总结:使用黑盒测试方法需要了解软件的外部特性(如何使用)两部分信息都是做好测试需要的使用白盒测试方法需要了解软件的内部构造和工作原理针对不同产品如何测试杯子:信息外部:外观、漏水、容量、使用者→黑盒内部:材质、制造过程→白盒白盒测试方法的好处1)能对代码进行覆盖2)能有针对性的进行测试3)发现及解决BUG的成本较低控制流分析:测试代码执行顺序主要了解如何画控制流图(代码流程图)代码(检查代码执行顺序→控制流图--→控制流矩阵→二维数组a[6][6]:a[0][0]=1有无错误)后一语句\前一结点1234562100000301000040010015000100600001071数据流分析:测试变量的使用数据流表:列出每个语句变量的使用包括变量的赋值(定义)和引用a=b+c;赋值a ,引用b ,cif(x==5);引用xa=a+b+c;赋值a ,引用a ,b ,c根据代码得到数据流表,分析数据流表找到以下错误:1)变量未定义但被引用;2)变量定义但未被引用;代码优化:结构优化(可读性):1个函数→2个函数效率优化(时间、空间):1)时间:高斯算法2)空间:可移植性优化:软件OS信息流分析:语句与变量的对应其他测试方法逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、路径覆盖、。
if(x>=1)y=5;软件OSA (操作系统抽象)OS3个语句构成if…elsey=5语句覆盖y=0有1个if...else 判定语句→判定覆盖x>=1条件→条件覆盖一般通过工具来进行检查——借助插装技术(程序插装:在程序中插入一些打印语句等)else y=0;test.c 覆盖工具testol.c (testol.exe)白盒测试难点1)看懂LLD ,能读懂代码2)编写测试代码黑盒测试(无针对性)质量特性:反映软件质量的不同方面,从不同角度度量软件质量测试:从不同角度检测软件质量灰盒测试黑盒(外部、整体的信息)白盒(内部、细节的信息)灰盒(两者都有)例子:IE网站网页能否打开网页上功能的使用网页打开原理(IE 、网站之间的数据)静态、动态代码→编译(检查语法错误):静态→编码规则检查:静态→注释率统计:静态→走读代码:静态→UT 执行:动态例子:OsCommerce 开源的电子商务网站测试:注册功能测试——要求网站必须运行:动态直接读代码来测试——不要求网站运行:静态静态测试:不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。