对测试的一点思考

对测试的一点思考

    本文是对自己在实际产品中测试经验的一点总结,同时结合了从几个做测试的同学那里获得的心得。

1.       测试进入越早越好

软件工程是包括需求分析、设计、开发、测试这样一个流程的。测试并不应该放在最后,而是应该从需求分析就开始介入。从需求分析介入可以让测试人员获得最直接的产品功能定位,了解全面的程序功能,形成对产品全貌的认识。这样设计出来的测试案例,会在覆盖局部测试点之外,包括局部之间连接点的测试。

2.       单元测试是基础,必须做扎实

因为自己经验有限,之前很长一段时间的开发都是做一些原型而已,对于测试认识并不深入。通过对云同步客户端的开发,让我对单元测试有了很深刻的认识。单元测试必须做,还得做扎实的原因我认为有两个:

A.  如果不做单元测试,当把不稳定的代码集成在一起后,出现问题时将无法判断是哪一个模块的问题。

B.  开发团队中大家的开发水平是不一致的,通过单元测试保证大家编写出的代码处在一个质量水平线上。

从我实际开发和测试的经验看,有几个部分的代码必须做单元测试:

A.  字符串操作函数。字符串操作是程序中最常用的情况,最容易出现内容访问错误,所以必须测试。

B.  公共的函数库。公共函数是必须测试的。包括功能,调用方式,前后不同版本间的兼容性,多线程调用等问题。对于测试案例的设计我会再后面单独用一个小节分析。

C.  线程函数必须测。首先,需要单独测试每个线程函数本身,通过反复的创建、销毁线程来运行线程函数,检测内存使用情况等。其次,当该线程函数与其它线程有资源共享、或者互斥、同步的情况时,需要将相关联的线程联合在一起进行测试。从而发现是否存在死锁,共现资源耗尽等问题。

D.  网络通信代码必须测。网络通信也是问题的高发区,从字符的变化,参数的解析,网络的不稳定等等都会造成程序的不稳定,所以要及早进行测试。

3.       集成测试,需覆盖全面的功能点

当各个模块的功能完成后,就进入了集成测试阶段。之前需求分析文档,产品功能定位文档是这一阶段的测试纲领。关于集成测试有下面几点心得。

1.  结合功能文档,需要做十分细致的细化工作,细化到十分详细的测试功能点。不要有遗漏,要按照良好的操作调理进行整理,考虑充分的分支情况。

2.  测试案例的设计,需要能清晰的说明测试前置条件,测试步骤,预期的结果,以及最后所得的结果。通过对比测试所得的结果和预期结果发现问题。

3.  测试发现的问题不要直接提交,最好是在问题可以被准确重现时,再作为正式的Bug提交。不然开发人员很难理解问题出现在那里。如果Bug描述不清楚,容易造成测试人员和开发人员之间的争吵。

4.  当然有些Bug不容易进行重现,最好能保留故障发生时详细的现场环境。比如日志信息、转储文件(Windows下的崩溃处理机制)等等。

5.  这里需要补充说一点,程序里面对于输出的日志最好分级,同时允许通过外部的配置文件等方式控制程序输出日志的详细程度。比如,测试人员通过配置可以让程序输出十分详细的内部运行情况,而交付给用户的版本只用输出必要的运行信息。这样将给测试人员和程序发布都提供便利。

4.       性能测试与压力测试,调优程序

在功能测试完成后,进入性能和压力测试阶段。产品之前提出的性能指标要逐项进行测试。压力测试的目标是发现程序在稳定性、可靠性方面的不足。性能测试发现程序是否能够满足高标准的性能要求。

压力测试方面,我有几点体会:

1.  编写必要的程序,通过足够长时间运行来测试程序的稳定性。同时观察在这一段时间内程序对于资源的使用情况。可以得出程序是否能够稳定的长时间运行,内存是否存在泄漏等问题。

2.  足够的数据量给程序造成压力。程序在处理不同数据量的情况下,肯定会不同。不要只是简单地使用很少的数据进行测试。首先要模拟真实环境中的数据规模进行测试。然后进行高于真实情况下的数据规模测试。

3.  考虑极限情况。考虑极限情况下的压力。这一点需要结合不同的软件进行设计。

在性能测试方面,我的体会是:

1.  首先关注关键功能的性能。比如云同步客户端对监控目录下短时间,大规模文件的变化是否能够处理,是否存下一个性能的拐点。再比如,Robin的网络传输性能。什么时候样的情况下能达到最大的网络传输速度,什么样的文件最消耗网络带宽,等等。都需要通过性能测试进行发现。

2.  模拟真实环境的性能测试。在通常的性能测试中,会通过简化测试数据类型、测试操作、测试对象等方式获得最好的性能值。但真实的使用情况却不是这样,所以还是最好能使用真实的数据进行测试。

5.       测试案例的设计思路

这里想谈一谈对于测试案例设计的思路问题。对于一个产品,可以从内部和外部两个角度看。内部又包括两层含义,首先是产品本身的功能,性能,以及各个组成部分等等;其次是产品不同版本间的连续性问题。外部也包括两层含义,首先是产品所依赖的外部环境,以及对外部环境的影响,对资源的占用,对同一系统上其它程序的影响等;其次是外部环境对产品的影响,比如外部环境不友好的情况下对产品进行的攻击、破坏行为等等。

上面四个方面是设计测试案例需要思考的四个大方面。目前我能想到的就这么多了。太细节的点一时还没有整理清楚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值