如何保证测试的正确性

怎么保证测试的正确性

测试是为了找出程序中的bug,保证软件的质量。


但我一直有个疑问,测试程序本来就是代码,如果测试代码就有问题,怎么依靠测试来保证软件的质量。


比如单元测试,如果用junit这样的框架,虽然可以在一定程度保证测试代码的正确性,但代码总是人写出来的,免不了错误,而且,有些项目都是开发人员直接写测试程序的,这样的话,就更不能保证测试程序完美了。


再一点,如果是测试驱动的话,测试程序的重要性就更高了,如果测试程序都不是百分之百完美,这驱动还有什么意义呢?


能不能在对测试代码进行测试呢,是不是陷入循环了?但至少多重测试可以提高测试代码的正确性。

 

以上是一个新手的想法,欢迎大家讨论。

1 楼 抛出异常的爱 2009-01-15  
<div class="quote_title">samsam 写道</div>
<div class="quote_div">
<p>测试是为了找出程序中的bug,保证软件的质量。</p>
<p><br />
但我一直有个疑问,测试程序本来就是代码,如果测试代码就有问题,怎么依靠测试来保证软件的质量。</p>
<p><br />
比如单元测试,如果用junit这样的框架,虽然可以在一定程度保证测试代码的正确性,但代码总是人写出来的,免不了错误,而且,有些项目都是开发人员直接写测试程序的,这样的话,就更不能保证测试程序完美了。</p>
<p><br />
再一点,如果是测试驱动的话,测试程序的重要性就更高了,如果测试程序都不是百分之百完美,这驱动还有什么意义呢?</p>
<p><br />
能不能在对测试代码进行测试呢,是不是陷入循环了?但至少多重测试可以提高测试代码的正确性。</p>
<p> </p>
<p>以上是一个新手的想法,欢饮大家讨论。</p>
</div>
<p>等用户使用出bug时提交新的测试用例.</p>
2 楼 samsam 2009-01-15  
<div class="quote_title">抛出异常的爱 写道</div>
<div class="quote_div">
<div class="quote_title">samsam 写道</div>
<div class="quote_div">
<p>测试是为了找出程序中的bug,保证软件的质量。</p>
<p><br />
但我一直有个疑问,测试程序本来就是代码,如果测试代码就有问题,怎么依靠测试来保证软件的质量。</p>
<p><br />
比如单元测试,如果用junit这样的框架,虽然可以在一定程度保证测试代码的正确性,但代码总是人写出来的,免不了错误,而且,有些项目都是开发人员直接写测试程序的,这样的话,就更不能保证测试程序完美了。</p>
<p><br />
再一点,如果是测试驱动的话,测试程序的重要性就更高了,如果测试程序都不是百分之百完美,这驱动还有什么意义呢?</p>
<p><br />
能不能在对测试代码进行测试呢,是不是陷入循环了?但至少多重测试可以提高测试代码的正确性。</p>
<p> </p>
<p>以上是一个新手的想法,欢饮大家讨论。</p>
</div>
<p>等用户使用出bug时提交新的测试用例.</p>
</div>
<p>那样的话测试就没能很好的发挥它的作用啊,可能测试是不可能达到完美的,有不可避免的人为因素。</p>
3 楼 tuti 2009-01-15  
保持单身最好的办法就是寻找完美的伴侣。
4 楼 samsam 2009-01-15  
tuti 写道
保持单身最好的办法就是寻找完美的伴侣。

啥意思,能否解释一下啊
5 楼 阳光晒晒 2009-01-15  
samsam 写道
tuti 写道
保持单身最好的办法就是寻找完美的伴侣。

啥意思,能否解释一下啊

世上没有完美事.
只能凑合着来.
6 楼 photon 2009-01-19  
samsam 写道
如果测试程序都不是百分之百完美,这驱动还有什么意义呢?

完美这种概念很主观的
7 楼 blind 2009-01-19  



有些隐性的bug 只有写这些代码的人 才知道
测试很可能测不出来   这还是在测试人员很负责的前提下
8 楼 homo 2009-01-22  
如果用测试人员的成果作为检验开发人员绩效的参考,测试人员的绩效参考什么?
9 楼 魔力猫咪 2009-01-22  
单元测试的一个相当重要的前提就是你每个测试用例都是简单的。也就是说你测试的类方法应该很容易就编写出来。如果你写出个1000多行的方法来,那么单元测试根本没任何意义。
所以当你发现测试困难的时候,就表示你设计上有问题,需要重构。

所谓测试就是在可以接受成本的前提下找出尽可能多的BUG。是人就会犯错。那么按照LZ的逻辑推下去只要是人干的事情就都会有错。就都没法保证了。
绝对没错是不可能实现的。过于追求完美会使得成本超过你的承受极限。我们对开发产品的稳定性是要在满足需求和成本的前提下尽可能稳定。比如需求是每年只能停机1天,那么你如果能在不提高成本的前提下稳定到停机1小时当然更好。但是如果因此要造成大幅度提高成本,那么就是不可接受的。
软件开发是多种因素妥协的结果。功能需求、时间、资金需要互相妥协。