测试论文之《软件测试的背景知识》
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试的背景知识
[ 张奭 2004年3月22日,阅读人数2585人]
作者简介:现任美国某大型软件企业高级软件测试工程师,CSIA软件测试培训中心专家软件开发与软件测试进入二十世纪以来,由于计算机已变得越来越普遍,软件产业得以日新月异的速度发展。软件开发的种类也举不胜举。比如说:办公室和商业用软件,计算机游戏,数据库软件,互联网/网站用软件,操作系统软件,多媒体和动画软件,图像处理和文字出版编辑软件,语音识别,手写体识别以及拼音输入法(IME)等等。其中常用的办公室和商业用软件例子有:Quicken, Quickbooks, WordPerfect, Microsoft Money, Microsoft Excel, 记事本等等。进行这一类软件测试,不但经常要考虑到本身的众多功能,还要特别考虑到该软件与其他应用软件有无相互作用,有无可编程性的支持等等。计算机游戏软件包括PC 类,台式,游戏机类,联机在线类等等。例如:Xbox,GameBoy,PlayStation 2,Age of Empires,Warcraft,Doom II, Snake(I/II),Starcraft,Monopoly,Scrabble等等。进行这一类软件测试经常要考虑到该软件的视觉的效果(颜色调和,字符显示),硬件配置,声音效应,图形表现的清晰度和位置的准确度,以及多用户同时操作下的使用效果。常用的数据库软件例子有:Oracle9iAS, Microsoft SQL server, FoxPro等等。进行这一类软件测试经常要考虑到存储器状况,支取存贮数据的处理,检索数据的速度,计算精确性,安全性,服务器/伺服器的相互作用。互联网/网站用软件例子有:微软IE 浏览器,Netscape 7.1,搜狐,,,等等。进行这一类软件测试经常要考虑到防病毒,网站安全性,HTML编码源程序,TCP/IP 交流的有效性,ActiveX控件,动态服务器主页(ASP:Active Server Pages),脚本编写等等。操作系统类软件例子有:OS X,微软的视窗操作系统Windows XP,Unix,Linux 等等。进行这一类软件测试经常要考虑到硬件和网络配制,碟片分割,互联网享用机会支持,支持视窗操作系统附件软件及大众化的应用软件,和支持创建多用户等等。多媒体和动画软件有Micromedia公司推出的交互式矢量图和Web动画软件,Shockwave,Maya,3D Max,和Final Cut Pro等。这一类软件测试经常要考虑到声音效应,视频效果,音频信号/录象,时间协调,外部动态数据输入。常用的图像处理和文字出版编辑软件有:美国Adobe公司的PhotoShop,Illustrator,Freehand,PageMaker,微软的Publisher,CAD,GIS等等。这一类软件测试经常要考虑到文本颜色的显示和协调,视频编码解码器,打印质量,文件大小类型等。语音识别软件软件测试经常要考虑到人的口音,音频编码解码器,传统音频驱动程序,外接设备,扩音器质量,表现,语音识别准确度等。手写体识别以及拼音输入法(IME)的例子有:蒙恬手写笔,微软的汉语拼音输入法,蒙恬扫译笔等等。这一类软件测试经
常要考虑到字体支持,字典支持,候选字窗口位置,自造词支持,词汇转换和改正等等。因此,软件测试的需求和难度也大大增加。要全面理解软件测试在整个软件产品开发过程中的作用,可以用一个简单例子来说明。我女儿在学校上Java编程设计课时,老师有一个作业是这样的:设计一个程序:已知一小区三横三竖交叉街道,有十辆小汽车同时从十个不同方向向一小区街中心穿过,然后开出小区。每个路口由交通灯控制,每一辆小车到拐角处要打拐弯灯并要服从交通灯控制和先来后到次序。最后结果是每一辆小车都以最可能快的速度平安地开出小区。完成这个作业的过程可以简单归结为以下步骤:1)老师设计作业内容(Teacher design homework) 2)老师把Java程序作业要求写清楚交给学生(Written assignment) 3)学生读懂作业要求(Understand assignment) 4)学生写程序源代码(Implement Java code) 5)学生测试自己的源代码并改正发现的错误(Check code to fix error) 6)学生执行和验证该程序直到达到本作业要求(Re-Run to verify the behavior and Correct error) 7)学生把写好的Java程序交给老师(Hand in assignment) 以上的例子就很像我们一般软件产品开发过程。这个过程可以简单归结:1)设计产品(Design)2)撰写功能规范(Specification)3)阅读和理解功能规范内容(Spec review)4)编写源程序(Coding)5)白箱测试(Write-box testing) 6)黑箱测试(Black-box testing) 7)修正缺陷和错误(Fix bugs) 8)产品发行(Release) 软件测试是任何软件产品开发必不可少,也是非常关键的环节。它直接影响着软件产品的质量好坏。软件测试怎样融入软件产品开发过程以及软件测试人员应该起什么作用可以从以下图示中看出。软件测试过程比设计和编程过程开始得晚,但是它比设计和编程过程结束的晚。通常软件测试人员应该在初步设计时就开始介入,到详细设计和开发时就介入的更多。即使到开发人员结束了编程后,测试人员还会一直测试直到软件产品发布。几个易混淆的软件开发有关基本概念(Software Programming basic concepts –clarification)为了用统一的名词用语贯穿我们学习的内容,我们来比较几个易混淆而且有时互用的软件开发中常用的基本用语. 首先看程序(Program),软件(Software)和应用程序(Application)概念的不同:程序(Program)一般指一套在机器上运行的工作指令编码(a set of coded working instructions run on machine➀)。软件(Software)一般指控制硬件行为并指挥它的操作的程序,子程序或符号语言(the programs,routines,and symbolic languages that control the functioning of the hardware and direct its operation)。而应用程序(Application)一般是指带用户界面的计算机程序。或者为专门的任务或用途而设计的计算机程序(a computer program with a user interface。Or a computer program designed for a specific task or use)。本次培训中谈到测试时,我们采用…软件‟一词。只要谈到软件测试,就一定会涉及到软件的…缺陷‟。英文叫…flaw‟。但最通俗的叫法是…Bug‟。英文谈到软件的…Bug‟实际上是指软件中的缺点(Defect),毛病(Fault),问题(Problem),误差或错误(Error),功能失灵(Failure),程序崩溃或挂起(Crash/Hang),不一致性(Inconsistency),或用户界面设计的