《软件测试基本概念》由会员分享,可在线阅读,更多相关《软件测试基本概念(44页珍藏版)》请在金锄头文库上搜索。
1、 软件测试方法和技术第2章 软件测试的基本概念第1章回顾 什么是软件测试 软件测试的正反两面性p验证软件p发现缺陷pV&V 软件测试和开发的关系 TDD第2章 软件测试的基本概念2.1 软件缺陷2.2 软件测试的分类2.3 静态测试与动态测试2.5 黑盒测试与白盒测试2.6 软件测试级别2.7 软件测试计划与用例2.8 专业测试人员的责任和要求缺陷是质量的对立面要了解什么是缺陷(defect),就必须清楚“质量(Quality)”概念,因为缺陷是相对质量而存在的,违背了质量、违背了客户的意愿,不能满足客户的要求,就会引起缺陷或产生缺陷什么是 Bug? 2.1.2 软件缺陷的定义Any prob
2、lem/disfigurement/limitation in product design & development Feature or function cant work Unreasonable design Partly realization in function Data error Run error Limitation in features Difference between actual results and expected results Unfriendly UI, Low performance Others 任何程序、系统中的问题,和产品设计书任何程
3、序、系统中的问题,和产品设计书的不一致性的不一致性,不能满足用户的需求不能满足用户的需求 缺点(defect) 偏差 (variance)谬误(fault) 失败 (failure)问题(problem) 矛盾(inconsistency)错误(error ) 毛病 (incident )异常(anomy)缺陷 Defect, Bug软件缺陷的现象p功能、特性没有实现或部分实现p设计不合理,存在缺陷p实际结果和预期结果不一致p运行出错,包括运行中断、系统崩溃、界面混乱p数据结果不正确、精度不够p用户不能接受的其他问题,如存取时间过长、界面不美观 软件缺陷的产生 技术问题 算法错误,语法错误,计
4、算和精度问题,接口参数传递不 匹配 团队工作 沟通不充分,误解 软件本身p文档错误、用户使用场合(user scenario),p时间上不协调、或不一致性所带来的问题p系统的自我恢复或数据的异地备份、灾难性恢复等问题软件缺陷构成 软件缺陷在不同阶段的分布 在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。 规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会 逐步发现,而不能在需求分析一个阶段发现缺陷成本2.3 软件测试的分类方法目标/特性单元测试系统测试验收测试性能测试强壮性测试功能测试 白盒测试黑盒测试测试阶段或层次适用性测试可靠性测试集成测试安全性测试不同的分类p按测试的
5、对象或范围分类,如单元测试、文档测试、系统测试等)p按测试目的分类,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等p根据测试过程中被测软件是否被执行,分为静态测试和动态测试p根据是否针对系统的内部结构和具体实现算法来完成测试,可分为白盒测试和黑盒测试2.3 静态测试和动态测试2.3.1 产品评审2.3.2 静态分析2.3.3 验证和确认静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式轮查 互审 走读 审查会议运行程序静态测试和动态测试pp将需求和设计将需求和设计的评审纳入测试的评审纳入测试的范畴,的范畴,可看作是广义测试可看作是广义测试pp静态测
6、试静态测试包括对软件产品的需求和设计规格说明书的评审包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等、对程序代码的复审等pp静态分析的查错和分析功能是其他方法所不能替代的静态分析的查错和分析功能是其他方法所不能替代的,可,可以采用人工检测和计算机辅助静态分析手段进行检测,但以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析越来越多地采用工具进行自动化分析pp动态测试是通过真正运行程序发现错误,通过观察代码运动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统行过程,来获取系统信息,对系统行为进行验证。信息,对系统行为进行验证。2.3
7、.1 产品评审p通过软件评审,可以更早地发现需求工程、软件设计等各个方面的问题,大大减少大量的后期返工,将质量成本从昂贵的后期返工转化为前期的缺陷发现。p评审是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进。检验工作产品是否正确地满足了以往工作产品中建立的规范。评审的形式/方法p 互为评审 (Peer review)p 轮查 (Pass-round)p 走查 (walk-through)p 会议评审 (Inspection)最不正式的最正式的临时评审轮查 走查互为评审 同行评审评审评审分类p管理评审p技术评审p文档评审p流程评审需求和设计审查测试人员参与
8、产品需求分析和系统设计,认真阅读有关文档,真正理解客户的需求和技术上的设计,检查需求说明书对产品描述的准确性、一致性等,检查系统设计的合理性和可测试性等2.3.2 静态分析p人工检测:人工检测偏重于编码风格、质量的检验,对设计、代码进行分析,有效地发现逻辑设计和编码错误。p计算机辅助静态分析:利用静态分析工具对被测程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。2.5 黑盒测试方法和白盒测试功能测试数据驱动测试 结构测试逻辑驱动测试 客户需求事件驱动输入输出2.5 黑盒测试方法和白盒测试23小结2.6 软件测试级别25不同测试级别的任务调试组件功能 健壮性
9、效率组件之间的接口系统功能 安全性 健壮性 效率 功能及用户界面 安全性 效率 用户的可接受性组件测试集成测试系统测试实现(编码)验收测试单元测试p单元测试针对程序系统中的最小单元-模块或组件进行测试,一般和编码同步进行。主要采用白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。通常要编写驱动模块和桩模块p单元测试一般由编程人员和测试人员共同完成,而以开发人员为主p单元测试包括代码评审,代码评审可以发现程序50%70%代码的缺陷。示例http:/ 集成测试集成测试,也称组装测试、联合测试,在单元测试的基础上,将模块按照
10、设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题。两种集成方式:一次性集成方式和增殖式集成方式。系统功能测试功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用 系统非功能性测试系统非功能性测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括:p恢复测试p安全测试p强度测试p性能测试p 验收测试 &安装测试p验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能
11、如同用户所合理期待的那样p安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试 2.7 软件测试计划和测试用例p软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。p测试工作的实施:编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动 测试工作流程测试计划内容p目标和范围p项目估算p风险计划p进度安排p资源配置p跟踪和控制机制测试用例p测试用例是测试人员在测试过程中的重要参考依据p测试用例将有助于节约测试时间,提高测试效率
12、。p良好的测试用例不断地被重复使用,使得测试过程事半功倍p测试用例是一个知识积累的过程p测试用例是为了某个测试点而设计的测试操作过程序列、条件、期望结果及相关数据的一个特定的集合。2.8 专业测试人员的责任与要求pQA/测试经理:人员管理,资源调配、测试方法改进等;p实验室管理人员:设置、配置和维护实验室的测试环境p内审员:审查流程,建立测试模板,跟踪缺陷测试报告的质量等;p测试组长:负责项目的管理、测试计划、测试用例、任务安排等;p测试设计人员/资深测试工程师,产品设计规格说明书的审查、测试用例的设计、技术难题的解决、培训和指导、实际测试任务的执行;p一般(初级)测试工程师,执行测试用例和相
13、关的测试任务。 一个微软测试工程师的一天a)产品编译必须在此之前完成b)每日凌晨3时,测试编译自动开始c)如果测试编译成功,BVT测试自动开始d)测试工程师每早来上班,先检查Test Build与BVT结果的emaile)如果有BVT错误,在第一时间里分析原因,隔离错误代码并汇报 Pri 0 Bug (0级缺陷)f)开发团队对于Pri 0 Bug应当于当日之内修改完毕g)测试工程师接着用Product Studio检查Bug情况,验证分配给自 己的Bug已修改合格一个微软测试工程师的一天(续 )h)关闭Bug并增加针对此Bug的Regression Testi)验证最近的Lab Run结果j)
14、如果其中有新的错误,隔离并汇报新Bugk)开发新的测试Spec与新的测试代码l)使用个人Private Run来验证新开发的测试程序m)使用个人Private Run来验证开发伙伴新开发的产品程序没有重大错误n)改进与提高自动化测试系统的功能o)参与Spec, Test Spec Review会议,做测试同伴测试代码Review, UE帮助文件Review, 回答内外Newsgroup的问题对测试人员的要求p 技术,编程能力p 责任感、耐力p 沟通能力、理解能力p 分析问题能力(批判性思维)p 项目管理能力p 组织能力p 优秀测试工程师的素质p 高度的责任感p 非常好的沟通能力、幽默感p 技术能力、自信心、耐心p 怀疑一切的精神、勤奋精神p 洞察力、适度的好奇心p 反向思维和发散思维能力、记忆力p 自我学习能力、创新能力等作业一选择一个产品(移动app、Web或桌面应用),并针对这个产品:详细、具体地分析其外部质量和使用质量;讨论其需求评审、设计评审可能要关注的点;讨论功能和非功能性的测试目标。作业二技术要求思维能力业务能力沟通能力等分为两个小组,进行PK,先了解对开发人员和测试人员 的技能有不同的要求,然后一边扮演开发人员、另一边 扮演测试人员,试图说服对方,自己工作更难做。Thank youQ & A