用户输入测试(1)

发表于:2011-3-14 10:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:方敏/张胜 等译    来源:51Testing软件测试网采编

  用户输入(1)

  设想我们要测试一个庞大的软件(比如Microsoft Office)或者测试一个复杂的网站(比如Amazon网站)。我们会发现它们有太多的输入以及输入组合,所以测试时不会考虑要穷尽所有的可能项。

  这说明我们面临的问题比看上去复杂得多。不管测试人员做什么,都会面临无穷无尽的可能性。其中第一个需要面对的无穷可能性就是用户输入。

  用户输入的基本知识

  什么算是输入?下面给出一个一般定义:

  输入指的是由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。

  该定义非常不正式,但对我们来说已经足够好了。这里的关键点在于输入是由应用程序外部引发的,并导致应用程序执行某些代码。比如用户单击一个按钮属于一种输入,但是在文本框中键入文本就不算输入,只有文本被实际传递给应用程序,应用程序有机会处理时,才算得上是一种输入 。总而言之,输入必须导致软件执行某些代码,并以某种方式作出反应(不反应也算是一种反应)。

  输入大致分为以下两类:原子输入(atomic input)和抽象输入(abstract input)。比如单击按钮,字符串或整数4就属于原子输入,它们都简单到不能再简单,都属于单个的事件。有些原子输入是相互关联的,如果把这些相互关联的原子输入合并成一个抽象输入,在选择测试数据时会更有效率。整数4和整数2048都是一个特定的数值(也就是说是原子输入),但是测试人员也可以选择使用5或256。所以,使用抽象术语来描述这些输入会更方便,因为这样可以把它们当成一个整体概念来对待。比如,我们可以使用“某个长度”这样一个抽象输入来表示1~32 768之间的任何一个原子输入长度值。

  因为输入可以接收的可能值实在太多,所以必须把它抽象化。在测试中,正整数、负整数和任意长度的字符串这些概念都包含着可以无限使用的值,测试所有这些值是不可能的。但是不穷尽所有的情况,我们就无法保证软件能够正确处理所有这些值 。

  任何一个特定应用程序可以接受的原子输入的数量都是无穷的。因为不可能去尝试所有的值,所以从输入的角度来看,测试就要求只选定某些输入值,然后在程序中使用它们,希望这些输入值可以引发程序所有的缺陷。这样我们就可以认为软件质量已经足够好了,并且可以认为即使用户使用其他那些并没有被测试过的值时也不会有问题。要做到这一点,测试人员必须下苦功学习如何在各种不同的输入中选择出最佳的一个。我们会在本章和下几章中介绍相关策略。

  实际情况比这还要复杂。如果我们只需要研究如何从一堆原子输入中找出一个最佳子集,软件测试就比现在我们实际面对的简单得多。还有两个因素让输入选择问题比我们想象得更复杂。

  首先是各种输入之间会相互影响,从而造成软件失效。事实上,即使软件在分别处理这两个或多个原子输入时没有问题,但如果把这些输入组合起来使用,软件还是有可能出问题。比如,在机器上查找所有的CD文件,可能没问题,如果只查找所有的视频文件,也没有问题。但是如果同时查找所有的CD和视频文件时,软件可能就报错。测试人员必须能够识别哪些输入值和其他输入有关联,然后在同一个测试用例中使用它们,这样就可以保证这些情况都被覆盖了。

  然后,输入这些值时的先后顺序也会导致问题。输入a和输入b可以产生如下组合:ab、ba、aa、bb。我们还可以重复三次或更多次,这就产生了更多的顺序(比如 aaa、aab和aba等)。如果有两个以上的输入值时,就会出现更多的顺序。如果我们决定不测某些顺序,那些没有被测试的顺序就可能会导致软件失效。比如,我们可以购买一本书,然后去结账,或者购买两本书再结账,还可以结账之后又买一本书再去结账。有太多种可能要考虑,但是只能测其中的一小部分。测试人员必须可以枚举出那些比较恰当的顺序,然后测试它们,这样才有把握相信软件可以满足实际用户的需求。前面已经说过了,本章和接下来的几章都会讲述该主题。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号