• 1. 软件测试理论 高红丽
  • 2. 从计算机诞生至今,计算机无疑成为当代发展最为迅猛的科学技术。今天,计算机已经渗透到人们生活的各个方面。
  • 3. 随着人们对计算机需求和依赖的与日俱增计算机系统的规模和复杂性急剧增加其软件开发成本以及软件故障而造成的经济损失也在不断增加那么我们对软件质量有了更多的关注
  • 4. 一些关键应用,如: 订票系统 银行结算系统 证券交易系统 军事防御软件 核电站安全控制系统 GPS导航系统 医疗行业系统 保险系统 报关检验检疫系统等 对软件质量提出了更高的要求
  • 5. 使用质量欠佳的软件,还可能造成灾难性的后果。 ★纽约(CNNMoney)骑士资本集团的软件bug最终发展成为致命缺陷,并导致其损失4.4亿美元。 ★1999年,NASA的火星气象卫星在进入预定轨道时跑过了,冲进了大气层。原因是(传输数据时)两个工程组一个用英制单位而另一个用公制单位。 ★1996年在法国圭亚那,欧洲宇航局最先进的阿丽亚纳五号运载火箭升空后不久自爆,原因是惯性制导系统无法将一个64位的数据转换到16位格式。这次事故烧掉了5亿美元。 ★2003年的北美大停电,影响到了大约五千万人。灾难起源于通用电器的一个基于Unix的监控软件错误,使操作人员没有意识到一个地方电站断掉了,电力缺口导致了多米诺骨牌效应,最终导致了加拿大安大略州和美国八个州断电。 ★史上最昂贵的计算机问题应该算是千年虫问题。IDC研究测算出处理千年虫问题给美国商业、政府和个人带来了将近2000亿的开销。 http://article.yeeyan.org/view/338738/309949
  • 6. 软件测试 是对软件需求分析、设计规格说明和编码的最终复审是软件质量保证的关键步骤 是为了发现故障而执行程序的过程软件测试是什么?
  • 7. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 8. 软件测试基本概念通常对软件测试的定义有两种描述: 定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。 定义1:软件测试是为了发现错误而执行程序的过程。
  • 9. 软件测试基本概念从测试方法角度,测试分为两种:       黑盒测试       白盒测试
  • 10. 软件测试基本概念从测试发生的时间顺序,测试分为五种:       单元测试       集成测试       系统测试       验收测试       回归测试
  • 11. 软件开发与软件测试的关系用户需求软件需求 概要设计 代码编写验收测试 系统测试 集成测试 单元测试 详细设计
  • 12. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 13. 单元测试 单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如一个函数、一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。 单元测试的内容包括内部结构(如逻辑和数据流)以及单元的功能和可观测的行为。侧重于单元内部结构的测试设计和实施依赖于对单元实施情况的了解(白盒方法)。为核实单元的可观测行为和功能而进行的测试设计和实施并不依赖于对实施情况的了解(黑盒方法)。   
  • 14. 白盒测试 白盒测试作为结构测试方法,是按照程序内部的结构测试程序,对软件的过程性细节做细致的检查,测试人员利用程序内部的逻辑结构及有关信息设计选择测试用例。 白盒测试法又称逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。 弱 强语句覆盖判定覆盖条件覆盖判定条件覆盖条件组合覆盖路径覆盖
  • 15. 白盒测试 ★语句覆盖:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。 ★判定覆盖:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。 ★条件覆盖:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。 ★判定/条件覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。 ★条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。 ★路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。
  • 16. 判定覆盖举例//求和函数,参数a为上限,b为下限,c、d为需要参加计算值; int sum(int a,int b, int c,int d){ int sum; sum = c+d; if(sum>a) return a; else if(sum
  • 17. 核心的关键代码可以用白盒测试方法,FESCO项目中可以用此方法的函数:白盒测试全国说明书供应商价格包价格更改同步子项价格函数 客服模块公积金、社保费计算函数
  • 18. 黑盒测试 黑盒测试是把程序看作一个完全不能打开的黑盒子.在测试时.完全不考虑程序内部结构和内部特性.对程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用.程序是否能适当地接收输入数据而产生正确的输出信息。 黑盒测试的技术常用的有5种: 等价类划分法 边界值分析法 错误猜测法 因果图法 场景法 黑盒测试方法还包括决策表法、功能图法和正交试验法。
  • 19. 黑盒测试1.等价类法: 有效值测试、无效值测试 2.决策表法: 单个查询条件测试 组合查询条件测试针对查询功能使用等价类法和决策表法举例:
  • 20. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 21. 集成测试 集成测试是将通过单元测试的多个模块组合成更大的模块或子系统或产品,然后进行测试。 测试内容:各单元的接口是否吻合、代码是否符合规定的标准、界面标准是否统一等。 集成测试方法: 大爆炸集成测试 自上而下集成测试 自下而上集成测试 三明治集成测试
  • 22. 集成测试大爆炸集成
  • 23. 集成测试自上而下集成
  • 24. 集成测试自下而上集成
  • 25. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 26. 系统测试 应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。这里所谓的系统不仅仅包括软件本身,而且还包括计算机硬件及其相关的外围设备,数据及其收集传输机构,甚至掌握计算机运行的人员及其操作等。 通常意义上的系统测试包括: 功能测试 用户界面测试 兼容性测试 权限测试 性能测试 安全测试
  • 27. 功能测试举例全国业务流程,用因果图测试法举例 全国业务流程因果 因:CRM模块创建合同附件(报价单) 果:客服模块预派雇员走全国流程有因有果,那么就可以设计出简单的测试用例 正常流:如果CRM选择了全国平台的产品方案,那么客服模块预派雇员就能走全国流程; 异常流:如果CRM选择的不是全国平台的产品方案,那么客服模块预派雇员就不能走全国流程。
  • 28. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 29. 验收测试(确认测试) 验收测试是系统测试结束后,在项目组看来开发和测试工作已经全部完成,可以交付使用,并与用户一起进行测试,以验证是否符合与用户事先约定的验收标准。 确认测试可分为 静态测试 动态测试
  • 30. 目录软件测试基本概念单元测试集成测试系统测试验收测试(确认测试)回归测试
  • 31. 回归测试 回归测试是指对前面已经测试的部分重新进行测试,确保在对系统的另一部分做了修改之后这些部分依然可以正确运转。回归测试可用于单元测试、集成测试、系统测试等多个层次。
  • 32. 感谢大家!