8、资源泄漏或者溢出如何测试?
资源泄露和溢出不知道你说的是不是就是指内存泄露?从系统测试角度讲还是从白盒测试角度进。如果是系统测试内存泄露的话,那么我们可以分类讨论下windows和linux平台的一些不同的做法。
windows下一般监控的参数是系统可用物理内存,可用虚拟内存,进程占用物理内存和进程占用虚拟内存,并且监控进程句柄数(Handle Count)和工作集(working set)。
一般如果只出现虚拟内存涨或者物理内存单方面涨,不代表一定有内存泄露,也有可能是系统进行了资源位置转存,将物理内存中的数据移动到了虚拟内存中,或者反过来;如果出现在某一操作中,内存占用升高,这个操作结束后,内存恢复到原来的水平,也不会是内存泄露。
工作集是一个非常 重要的指标,如果发现进程working set 和进程占用的物理内存都有提高,并且一直没有降下来,那么说明可能存在内存泄露,这个时间可以写脚本重复执行这个动作,重点观察,并取得数据,验证结论。
再谈linux下面,一般是通过valgrind,nmon(IBM的工具,非常牛逼非常好用,强力推荐),或者自己用shell脚本配合free指令,来统计内存情况,然后进行分析。linux下面一般都是采用内存预分配的策略,所以你会发现一个进程在启动时申请了一大块内存,然后在这块内存里做操作,有时候监控下来,发现曲线几乎是水平的。因此一般情况下,linux下的程序,最好使,valgrind进行内存方面的测试,对代码和调试方面的能力要求高一些。
9、测试程序稳定性如何测试?使用什么工具?
稳定性这个影响的情况比较多,上面提到的资源泄露会引起不稳定,软件兼容性会引起不稳定,硬件兼容性也容易引起不稳定,网络模块不够健壮,也会引起不稳定。。。所以这个问题我感觉很难全面回答,说下几个注意事项吧:
1)内存泄露一定要查。
2)软件兼容性,一定要兼顾所有常用软件,比如各大下载站排行前20的软件,重点关注各大安全厂商的软件,尤其是垃圾360(虽然很多不明真相的群众还是用得很多)。
3)尽可能多的在不同的硬件配置机器上进行程序运行。
4)换个网络模块程序写得好的程序来写通信模块程序,把原先的写得不好的,拉出去打。
10、网络通信性能如何测试?
网络通信性能一般还是考察server端负责管理TCP连接、接收/发送模块的性能(客户端就只负责自己的数据如果还出问题那真的可以打程序员了),一般来说考察以下几个方面:
1)小包,但高频率的通讯包的处理情况,比如一次发只有5个字节的包,但一秒总共有10W请求,统计每个包的处理时间,以及被测试目标的CPU占用情况。
2)大包,但稍低频率的处理情况。比如一次发20字节的包。
3)如果时间充裕,再测试大包高频率的处理情况。
以上三个用例,一般情况下,用例2的效率会是最好。
原帖地址:http://bbs.51testing.com/thread-473811-1-1.html
版权声明:本文由会员 寂静如风 首发于51Testing软件测试论坛我要做专家第13期活动。
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。