发布新日志

  • 软件测试中的相关概念定义

    2008-03-17 10:42:56

    软件测试的相关概念定义
    1.什么是软件测试
    1.1软件测试定义
    软件测试是为了发现错误而执行程序的过程。
     
    1.2软件测试两个阶段
    软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编写与单元测试属于软件生存期的同一阶段。在结束这个阶段之后,对软件系统还要进行各种综合测试,这是软件生存期的另一个独立的阶段,即测试阶段。
    2.软件测试的目的和原则
    基于不同的立场,存在着两种不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。而从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。
        有鉴于此,Grenford J.Myers就软件测试目的提出以下观点:
    测试是程序的执行过程,目的在于发现错误;
    ②一个好的测试用例在于能发现至今未发现的错误;
    ③一个成功的测试是发现了至今未发现的错误的测试
    3.软件测试的对象
    软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。因此,需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该成为软件测试的对象。
    4.黑盒测试与白盒测试
    4.1黑盒测试与白盒测试概念
    任何工程产品都可以使用以下的两种方法之一进行测试
    ①已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
    ②已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
    前者就是黑盒测试,后者就是白盒测试
     
    4.2黑盒测试
    测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫做功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
    ①是否有不正确或遗漏的功能?
    ②在接口上,输入能否正确地接受?能否输出正确的结果?
    ③是否有数据结构错误或外部信息(例如数据文件)访问错误?
    ④性能上是否能够满足要求?
    ⑤是否有初始化或终止性错误?
    所以,用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。
     
    4.3白盒测试
    软件的白盒测试是对软件的过程性细节做细致的检查。它允许测试人员利用程序内部的逻辑结构及相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:
    ①对程序模块的所有独立的执行路径至少测试一次;
    ②对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次;
    ③在循环的边界和运行界限内执行循环体;
    测试内部数据结构的有效性,等等。
    5α测试β测试
    α测试是由一个用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。软件在一个自然设置状态下使用。开发者坐在用户旁边,随时记下错误情况和使用中的问题。这是在受控制的环境下进行的测试。α测试的目的是评价软件产品的FLURPS(功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试人员是除开发人员之外首先见到产品的人,他们提出的功能和修改意见是特别有价值的。α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应事先准备好。
    β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。这些用户是与公司签订了支持产品预发行合同的外部客户,他们要求使用该产品,并愿意返回有关错误信息给开发者。与α测试不同的是,开发者通常不在测试现场。因而,β测试是在与开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS。着重于产品的支持性,包括文档、客户培训和支持产品生产能力。只有当α测试达到一定的可靠程度时,才能开始β测试。由于它处于整个测试的最后阶段,不能指望这时发现主要问题。同时,产品的所有手册文本也应该在此阶段完全定稿。
    6、为了隔离被测试模块,需要用一些安全模块来代替被测试模块所调用的模块,叫它们“桩”。
    7、为了能把测试数据输入到被测试模块中,需要一个驱动模块将数据输入到被测模块中,并获得被测模块的反馈,最后通过判断得到测试结果。完成这样功能的模块通常也叫做“驱动”模块。
Open Toolbar