测试技术常见问题

发表于:2007-11-29 14:14

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

 作者:陈绍英    来源:网络转载

1、 单元测试主要内容是什么?

        单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能会安排测试人员进行单元测试,大多数进行的单元测试都是开发人员调试程序或者开发组系统联合调试的过程。讨论这个问题主要是扩充一下读者的视野。

单元测试一般包括五个方面的测试:

        (1)模块接口测试:模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。模块接口测试也是集成测试的重点,这里进行的测试主要是为后面打好基础。测试接口正确与否应该考虑下列因素:

        输入的实际参数与形式参数的个数是否相同; 
        输入的实际参数与形式参数的属性是否匹配; 
        输入的实际参数与形式参数的量纲是否一致; 
        调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同; 
        调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配; 
        调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致; 
        调用预定义函数时所用参数的个数、属性和次序是否正确; 
        是否存在与当前入口点无关的参数引用; 
        是否修改了只读型参数; 
        对全程变量的定义各模块是否一致; 
        是否把某些约束作为参数传递。 
        如果模块功能包括外部输入输出,还应该考虑下列因素:

        文件属性是否正确; 
        OPEN/CLOSE语句是否正确; 
        格式说明与输入输出语句是否匹配; 
        缓冲区大小与记录长度是否匹配; 
        文件使用前是否已经打开; 
        是否处理了文件尾; 
        是否处理了输入/输出错误; 
        输出信息中是否有文字性错误。 
        局部数据结构测试; 
        边界条件测试; 
        模块中所有独立执行通路测试; 
        (2)局部数据结构测试:检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确,局部功能是整个功能运行的基础。重点是一些函数是否正确执行,内部是否运行正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:

        不合适或不相容的类型说明; 
        变量无初值; 
        变量初始化或省缺值有错; 
        不正确的变量名(拼错或不正确地截断); 
        出现上溢、下溢和地址异常。 
        (3)边界条件测试:边界条件测试是单元测试中最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。

        (4)模块中所有独立路径测试:在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。测试目的主要是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。具体做法就是程序员逐条调试语句。常见的错误包括:

        误解或用错了算符优先级; 
        混合类型运算; 
        变量初值错; 
        精度不够; 
        表达式符号错。 
        比较判断与控制流常常紧密相关,测试时注意下列错误:

        不同数据类型的对象之间进行比较; 
        错误地使用逻辑运算符或优先级; 
        因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等; 
        比较运算或变量出错; 
        循环终止条件或不可能出现; 
        迭代发散时不能退出; 
        错误地修改了循环变量。 
        模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件,并预设各种出错处理通路。如果用户不按照正常操作,程序就退出或者停止工作,实际上也是一种缺陷,因此单元测试要测试各种错误处理路径。一般这种测试着重检查下列问题:

        输出的出错信息难以理解; 
        记录的错误与实际遇到的错误不相符; 
        在程序自定义的出错处理段运行之前,系统已介入; 
        异常处理不当; 
        错误陈述中未能提供足够的定位出错信息。
2、 如何理解强度测试?

        强度测试是为了确定系统在最差工作环境的工作能力,也可能是用于验证在标准工作压力下的各种资源的最下限指标。

        它和压力测试的目标是不同的,压力测试是在标准工作环境下,不断增加系统负荷,最终测试出该系统能力达到的最大负荷(稳定和峰值),而强度测试则是在非标准工作环境下,甚至不断人为降低系统工作环境所需要的资源,如网络带宽,系统内存,数据锁等等,以测试系统在资源不足的情况下的工作状态,通过强度测试,可以确定本系统正常工作的最差环境.

        强度测试和压力测试的测试指标相近,大多都是与时间相关的指标,如并发量(吞吐量),延迟(最大\最小\平均)以及顺序指标等

        强度测试需要对系统的结构熟悉,针对系统的特征设计强度测试的方法

3、 如何理解压力、负载、性能测试测试?

        性能测试是一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容。

        压力测试是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分。100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试,1000个用户连续访问系统1个小时也可以看作是负载测试。

        实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号