1、软件测试相关概念 (1)软件测试:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用这些测试用例的运行结果来发现程序错误的过程。 (2)软件测试用例:测试用例实际上是对软件运行过程中所有可能存在的目标、运动、行动、环境和结果的描述。测试用例是测试组织的最小单位,指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并最终形成文档。 软件测试的核心是设计和执行测试用例。而测试用例的选择问题可以看作是从庞大的输入状态组合中,搜寻哪些可以发现错误的状态组合。因此需要用抽象的手段来尽量使测试更加有效。 (3)测试用例库:完整的单元测试很少只执行一个测试用例,开发人员通常都需要编写多个测试用例才能对某一软件功能进行比较完整的测试,这些相关的测试用例称为一个测试用例集。将大量的测试用例收集到测试用例库中,合理的分类后供测试人员选择使用,能够极大地提高软件问题的发现率。 2、提高测试质量的方法 2.1 采用测试性设计技术 软件测试是目前用来验证软件是否能够完成所期望的功能的唯一有效的方法。但是在测试的实施过程中,由于种种原因导致测试的难度相当大,甚至出现了无法测试的情形。为了提高软件的可测试性,我们在软件设计时应当遵循测试性设计原则,通过改变设计或代码、为软件增加专门测试结构等方法来提高软件的可测试性。 (1)测试驱动设计。这种设计就是直接把软件需求变成测试代码。在确定软件测试性能要求的基础上优先编写测试代码。先写验收测试,再写单元测试,并在开发过程中不断修正。 (2)每个操作对应一个方法,使方法小型化。使用小型化方法说明和重载带缺省方法参数的方法,使得测试中调用这些方法变的很容易。 (3)显示与控制分离。把代码移到GUI视图的外面,各种GUI动作就能成了模型上的简单方法调用。这样,在修改程序功能不会影响视图,同时通过方法调用测试功能也比间接地测试功能更容易。 (4)对于可能要作为参数的类,做一个接口。用接口说明外部程序组件或在需要时改变接口形成一个空类作为参数传入。 2.2 选择合适的测试管理模型 模型是系统功能的形式化或半形式化的表示,支持输入状态组合的系统枚举。基于模型的测试主要考虑系统的功能,可以认为是功能测试的一种。测试模型体现了被测试系统的最本质的功能关系。而且要比系统本身更易于开发和分析。一个可测试的模型要能提供足够的信息用来产生测试用例。所以可测试的模型必须满足以下要求: (1)必须是某种测试实现的完全准确的反映,模型必须表示要检查的所有特征; (2)是对细节的抽象; (3)可以表示所有事件和所有的动作;⑷可以表示系统的各种状态,以便由可知的方法来确定已达到或没有达到什么状态。