关键字:软件测试知识帖
通常,客户/服务器软件的测试发生在三个不同的层次: (1)个体的客户端应用以“分离的”模式被测试--不考虑服务器和底层网络的运行;
(2)客户端软件和关联的服务器端应用被一起测试,但网络运行不被明显的考虑;
(3)完整的C/S体系结构,包括网络运行和性能,被测试。
下面的测试方法是C/S应用中经常用到的:
应用功能测试--客户端应用被独立地执行,以揭示在其运行中的错误。
服务器测试--测试服务器的协调和数据管理功能,也考虑服务器性能(整体反映时间和数据吞吐量)。
数据库测试--测试服务器存储的数据的精确性和完整性,检查客户端应用提交的事务,以保证数据被正确地存储、更新和检索。
事务测试--创建一系列的测试以保证每类事务被按照需求处理。测试着重于处理的正确性,也关注性能问题。
网络通信测试--这些测试验证网络节点间的通信正常地发生,并且消息传递、事务和相关的网络交通无错的发生。
第16贴【2004-6-1】:软件质量
“每一个程序都能正确地做某件事,但是这并不是我们想要它作的事情。”这样的软件不能算一个质量好的软件。
我们如何定义软件质量呢?可以从不同的角度来看待软件质量并对其定义,它们有一些共同点:强调软件与得到了清晰描述的功能和性能需求的符合度、明显的文档标准以及被认为是所有专业开发的软件所具备的隐式特征。
ISO9126从如下几个方面来衡量软件质量:功能性、可靠性、可用性、可维护性、效率、可移植性。
如下三个方面应该尤其被重视:
1、软件需求是质量测度的基础。需求符合性的缺乏也就是缺乏质量;
2、特定的过程定义了一套开发标准,用以指导软件开发的方式。如果标准未能遵守,那么缺少质量就几乎是肯定的结论;
3、除了功能需求等显示的需求外,要对非功能的隐式需求重视(例如,对好的可维护性的期望)。如果软件符合其他显式的需求,但是未能满足隐式需求,软件质量仍然是值得怀疑的。
软件质量是一个多因素的复杂混合,这些因素随着不同的应用和需要它们的用户而变化。测试时需要根据一定的质量标准有针对性的进行测试。
第17贴【2004-6-2】系统测试方法之恢复测试
Roger S. Pressman
许多基于计算机的系统必须在一定的时间内从错误中恢复过来,然后继续运行。在有些情况下,一个系统必须是可以容错的,这就是说,运行过程中的错误不能使整个系统的功能都停止。在其他情况下,一个系统错误必须在一个特定的时间段之内改正,否则就会造成严重损失。
恢复测试是通过各种手段,让软件强制性地发生故障,然后来验证恢复是否能正常进行的一种系统测试方法。如果恢复是自动的(由系统本身来进行的),重新初始化、检查点机制、数据恢复和重启动都要进行正确验证。如果恢复是需要人工干预的,那么要估算修复的平均时间是否在可以接受的范围之内。
第18贴【2004-6-3】:系统测试方法之安全测试
Roger S. Pressman
任何管理敏感信息或者能够对个人造成不正当伤害的计算机系统都是不正当或非法侵入的目标。侵入包括了范围很广的活动:只是为练习而试图侵入系统的黑客;为了报复而试图攻破系统的有怨言的雇员;还有为了得到非法的利益而试图侵入系统的不诚实的个人。
安全测试用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。引用Beizer的话来说:“系统的安全当然必须能够经受住正面的攻击--但是它也必须能够经受住侧面的和背后的攻击。”
在安全测试过程中,测试者扮演着一个试图攻击系统的个人角色。测试者可以尝试去通过外部的手段来获取系统的密码,可以使用可以瓦解任何防守的客户软件来攻击系统;可以把系统“制服”,使得别人无法访问;可以有目的地引发系统错误,期望在系统恢复过程中侵入系统;可以通过浏览非保密的数据,从中找到进入系统的钥匙;等等。
只要有足够的时间和资源,好的安全测试就一定能够最终侵入一个系统。系统设计者的任务就是要把系统设计为想要攻破系统而付出的代价大于攻破系统之后得到的信息的价值。
第19贴【2004-6-4】:系统测试方法之压力测试
Roger S. Pressman
在较早的软件测试步骤中,白盒和黑盒技术对正常的程序功能和性能进行了详尽的检查。压力测试(Stree Testing)的目的是要对付非正常的情形。在本质上说,进行压力测试的人应该这样问:“我们能够将系统折腾到什么程度而又不会出错?”
压力测试是在一种需要反常数量、频率或资源的方式下运行系统。例如,
(1)当平均每秒出现1个或2个中断的情形下,应当对每秒出现10个中断的情形来进行特殊的测试;
(2)把输入数据的量提高一个数量级来测试输入功能会如何响应;
(3)应当执行需要最大的内存或其他资源的测试用例;
(4)运行一个虚拟的操作系统中可能会引起大量的驻留磁盘数据的测试用例。
从本质上来说,测试者是想要破坏程序。
压力测试的一个变种是一种被成为是敏感测试的技术。在有些情况(最常见的是在数学算法中)下,在有效数据界限之内的一个很小范围的数据可能会引起极端的甚至是错误的运行,或者引起性能的急剧下降,这种情形和数学函数中的奇点相类似。敏感测试就是要发现在有效数据输入里可能会引发不稳定或者错误处理的数据组合。
第20贴【2004-6-5】:系统测试方法之性能测试
Roger S. Pressman
在实时系统和嵌入式系统中,提供符合功能需求但不符合性能需求的软件是不能被接受的。性能测试就是用来测试软件在系统中的运行性能的。性能测试可以发生在各个测试阶段中,即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估,然而,只有当整个系统的所有成分都集成到一起之后,才能检查一个系统的真正性能。
性能测试经常和压力测试一起进行,而且常常需要硬件和软件测试设备,这就是说,常常有必要的在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。外部的测试设备可以监测测试执行,当出现情况(如中断)时记录下来。通过对系统的检测,测试者可以发现导致效率降低和系统故障的原因。
第21贴【2004-6-6】:回归测试
Roger S. Pressman
每当一个新的模块被当作集成测试的一部分加进来的时候,软件就发生了改变。新的数据流路径建立起来,新的I/O操作可能也会出现,还有可能激活了新的控制逻辑。这些改变可能会使原本工作得很正常的功能产生错误。在集成测试策略的环境中,回归测试是对某些已经进行过的测试的某些子集再重新进行一遍,以保证上述改变不会传播无法预料的副作用。
在更广的环境里,(任何种类的)成功测试结果都是发现错误,而错误是要被修改的,每当软件被修改的时候,软件配置的某些方面(程序、文档、或者数据)也被修改了,回归测试就是用来保证(由于测试或者其他原因的)改动不会带来不可预料的行为或者另外的错误。
回归测试可以通过重新执行所有的测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具来进行。捕获回放工具使得软件工程师能够捕获到测试用例,然后就可以进行回放和比较。回归测试集(要进行的测试的子集)包括三种不同类型的测试用例:
·能够测试软件的所有功能的代表性测试用例。
·专门针对可能会被修改影响的软件功能的附加测试。
·针对修改过的软件成分的测试。
在集成测试进行的过程中,回归测试可能会变得非常庞大。因此,回归测试应当设计为只对出现错误的模块的主要功能进行测试,每当进行一个修改时,就对每一个程序功能都重新执行所有的测试是不实际的而且效率很低的。
第22贴【2004-6-7】:测试与调试
测试的目的是显示存在错误,而调试的目的是发现错误或导致程序失效的错误原因,并修改程序以修正错误。调试是测试之后的活动。[Beizer, 1984]认为,测试和调试在目标、方法和思路上都有所不同,如下:
1、测试从一个已知的条件开始,使用预先定义的过程,有预知的结果。调试从一个未知的条件开始,结束的过程不可预计。
2、测试过程可以实现设计,进度可实现确定。调试不能描述过程或持续时间。
3、测试是显示错误的行为。调试是推理的过程。
4、测试显示开发人员的错误。调试是开发人员为自己辩护。
5、测试能预期和可控。调试需要想象,经验和思考。
6、测试能在没有详细设计的情况下完成。没有详细设计的信息调试不可能进行。
7、测试能由非开发人员进行。调试必须由开发人员进行。
第23贴【2004-6-8】:系统测试方法之功能测试
功能测试又称正确性测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。
基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。测试人员一定要设法减少枚举的次数,否则测试投入太大。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:记(A, B)是命题f(x) 的一个等价区间,在(A, B)中任意取x1进行测试。如果f (x1) 错误,那么f (x) 在整个(A, B)区间都将出错。如果f (x1) 正确,那么f (x) 在整个(A, B)区间都将正确。上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。
还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。例如测试平方根函数的一段程序。凭直觉输入等价区间应是(0, 1)和(1, +∞)。可取x=0。5以及x=2。0进行等价测试。再取 x=0以及x=1进行边界值测试。
有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。
第24贴【2004-6-9】:黑盒测试的端口测试模型
端口测试模型侧重于对被测对象的抽象,它阐明的是我们要测试什么。它将被测试者间的共性抽象出来,使测试者和被测者可以最大程度地分离开来。其主要思想是:被测试者可以用测试端口集来表达。测试功能体现在测试端口对外协议(称为端口协议)的实现,对不同系统的测试或对同一系统中不同子系统的测试都表现为对不同端口的测试。端口协议一般是非确定的有限自动机(NFA),它可以分解成确定的有限自动机(DFA)的集合(对应于功能迁移路径集),并可以用结构化语言描述在测试用例中。这样,端口协议的差异就不会影响测试者的内部实现(与被测者的接口除外)。
第25贴【2004-6-10】:黑盒测试的对象测试模型
对象测试模型注重于测试内容的表达,它 阐明的是如何表达我们的测试内容。它把分散的功能测试单元有机地组合起来,使实际测试更逼近真正的系统测试。其主要思想是:测试内容及测试的实现方法(指对测试数据的处理)可以被封装在一个个的测试对象中。测试对象有三个层次:数据对象、业务对象和事务对象,它们的关系是逐级被包含。简单来说, 数据对象是指业务(或功能)数据的载体,它通常有物理对应,其主要测试内容是一个状态迁移图;业务对象指共同实现一种业务(或功能)的数据对象集合,它一般都只有逻辑对应,其主要测试内容是一个时间追踪图;事务对象是指一组业务相关的业务对象的有序组合,其主要测试内容是业务间的关系图,准确地说是业务结果间的布尔关系图。
第26贴【2004-6-11】:黑盒测试的分层设计模型
分层设计模型侧重于黑盒自动测试工具的实现,它阐明的是我们如何设计测试工具。它将测试工具的功能进行抽象和分层,使测试工具的积木化开发现实可行。其主要思想是:测试工具可划分为五个不同的层次,从低到高依次是:端口驱动层、测试执行层、测试表达层、测试管理层、测试设计层。通过规范这五个层次间的接口,可以使按照这个设计模型设计的测试工具或提供相同的接口的其它测试工具无缝地集成在一起,从而实现理想的积木式开发。
第27贴【2004-6-12】:QA的职责
QA到底应该在企业里起什么作用呢?下面是QA职责的总结:
1、保障软件组织流程体系得到遵守;
2、促使软件组织过程改进 ;
3、 指导项目实施流程,;
4、增加开发活动透明度;
5、评审项目活动;
6、审核工作产品;
7、协助工作产品问题解决;
8、度量数据采集、分析,提供决策参考;
9、进行缺陷预防;
10、实现质量目标。
第28贴【2004-6-13】:软件走读
软件走读的目的是为了对软件产品进行评价,软件走读也可以是为给参与走读的人员培训有关软件产品知识而举行,软件走读的主要目的是:
1)发现软件产品中的软件异常,缺陷、遗漏和自相矛盾的地方,以改进产品并提出可供选择的实现方案;
2)改进软件产品;
3)考虑可选项方案的实现方法;
4)评价与标准和规格的符合性;
5)进行技术交流,人员培训。
在软件走读中可以指出各种缺陷,例如软件产品中的效率和可读性问题,设计或编码中模块化问题,或者规格书中的可测试问题等等。
要求进行软件走读的软件产品,包括但不限于:
1)软件需求规格,
2)软件设计文档,
3)源代码,
4)软件测试文档,
5)软件用户文档,
6)维护手册,
7)安装过程
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/