- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课外系统测试讲述
7.1 系统测试概述
错误的概念:
“测试是证明程序中不存在错误的过程”
“程序测试的目的是要证明程序正确地执行了预期的功能”
“程序测试的过程是使人们确信程序可完成预期要完成的工作过程”
测试的正确定义:为了发现错误而执行程序的过程。从这个定义出发可以看出应该把查出了新错误的测试看作是成功的测试,没有发现错误的测试则是失败的测试。
测试的基本方法
黑盒测试
黑盒测试是测试者把程序看成是一个黑盒,完全不考虑程序内部结构和内部特性而进行的测试
穷举输入测试
两个推断
程序测试并不能保证程序中没有错误。
由于穷举测试是不可能的,因此测试的目标应该是使有限的测试投资获得最大的收益,即以有限的测试数据查出最多的错误。
测试的基本方法
白盒测试
白盒测试或逻辑驱动测试允许人们检查程序的内部结构,是测试者从检查程序的逻辑着手,得出测试数据,进行测试的过程
穷举路径测试
7.1.2 测试的基本原则
1、尽早开展测试
2、避免同化效应
①测试人员与开发人员一起在某个项目中工作较长时间后,容易受开发人员对软件观点的影响,变得容易赞同开发人员的观点。
②测试人员对软件的熟悉程度越高,越容易忽略一些看起来较小的问题。这也是一些测试人员感觉越来越难发现缺陷的原因。
3、在发现较多错误的地方投入更多的测试
4、确定预期输出
5、程序员应避免测试自己的程序
6、程序设计机构不应测试自己的程序
7、对非法的和非预期的输入情况,也要像对合法的、预期的输入一样,编写测试数据
8、检查程序是否做了要做的事仅是成功的一半,另一半是看程序是否做了不要它做的事。这条原则意味着在程序测试时,必须对那些人们不需要的“副作用”进行检查。
9、不要扔掉测试数据
10、在进行测试设计时不要设想程序中不会查出错误
7.1.3 测试内容及测试手段
系统测试常用的手段有两种:
人工测试:一种是不依赖于计算机的测试。经验表明,人工测试能相当有效地查找错误,因此每一个应用系统都要用一种或多种人工测试技术。常用的人工测试技术有程序审查会、人工运行及复查等。
计算机测试:即准备一些测试数据和测试程序在计算机上运行,以此来查找程序错误。
人工测试方法
1、程序审查会
2、人工运行
3、静态检验
7.2 人工测试方法
7.2.1 程序审查会
程序审查会(Code Inspections)是让小组成员阅读程序代码而进行的一系列步骤和查找错误的办法。
组成(4-5人):
调解人,调解人一般由能力强的程序员担任
程序员,被审查程序的作者
系统分析或设计人员
测试专家
系统分析员或设计员负责对程序的结果进行评审,测试专家负责对整个测试过程和结果进行评审。
7.2.1 程序审查会
会前准备:
调解人在会议开发之前(前几天),把这个程序清单和设计规范分发给小组的其他成员
会议任务:
1、讲述程序的逻辑结构。期间大家提出问题加以追究,以断定错误是否存在。
2、根据常见程序错误检验单分析程序。
会期:
90分钟至120分钟之间
6.2.1 程序审查会
注意的问题
如果程序员把审查会看成是对他的人格的攻击,从而采取自卫的态度,那么审查过程就会没有什么效果。
程序员抱虚心的态度参加会议,用正确的和建设性的眼光看待审查处理
即审查会的目的在于发现程序中的错误,从而改进他的工作质量。
审查会的结果应该只限于与会者知道。如果部门或组织的经理使用了审查会的结果,那么这种审查过程马上就会失去意义。
7.2.1 程序审查会
常见程序错误检验单包含的经常出现的软件错误
数据引用错误
数据说明错误
计算错误
比较错误
控制流程错误
接口错误
输入/输出错误
其它检查
……
接口错误,Java 举例
public MyDemo(){ } ????????? public static void operate(StringBuffer x,StringBuffer y){ ????????? x.append(y); ????????? y=x; ????????? System.out.println(x+,+y); ?????? }
?????? public static void main(String[] args) { ????????? StringBuffer a=new StringBuffer(A); ????????? StringBuffer b=new StringBuffer(B); ????????? operate(a,b); ????????? System.out.println(a+,+b); ?????? } }
x 会指向 a 所指向的内存(可以理解为都指向A),y 会指向 b 所指向的内存,(可以理
文档评论(0)