2017/3/17日
【探讨主题】:软件可靠性测试的内容
【具体问题】:一位同学回答:“应当测试软件在足够长时间内能否正常工作”,老师提问:“上述这种做法的原因是什么?”
【课堂回答】:程序内部经常会有申请内存和释放内存的操作,申请过空间忘了还,就可能导致软件运行越来越慢。
【课后补充】:
1、什么是稳定性测试
稳定性测试是在保证基本功能完整正确的前提下,软件或系统在一定时间或压力下,检验功能稳定运行的情况及性能劣化趋势,以减少系统或软件崩溃的发生。
稳定性测试直接的关注点,就是软件或系统功能特别是用户常用功能的稳定性;其次关注的是性能指标的变化情况;在测试过程中,我们需要特别考虑多线程进程及不同测试环境的问题。
2、关注点:
a. 时间——产品能持续长时间工作吗?
1. 内存或者句柄泄漏
2. 队列堆积
3. Cache, Buffer累积性的问题...
b. 大流量——产品能处理这么大的流量吗?
1. 系统崩溃 crash/hang
2. 性能严重下降
3. 资源耗尽...
c.并发——单独运行是好的,那么一起运行呢?
d.使用环境——不同的硬件软件环境?
3、如何实施稳定性测试
I. 产品的配置和使用
考虑硬件,OS,周边服务器等
II. 测试流量的产生
考虑不同的数据类型样本,考虑数据压力的设置
III. 监控产品运行和资源使用的状况
观察系统的运行情况,有无异常(进程状态监控、响应时间...)判断目前所加的压力是否合适,发现系统运行的性能瓶颈
常见的资源使用的指标:CPU(Usage (user, sys, iowat) , CPU load , Content switch),Memory(Total / free / cache , Process private)磁盘(IO/s)...
4、常用工具
详见:http://blog.csdn.net/superqa/article/details/5850991
【心得体会】:
养成良好的编程习惯能够很好地提升代码健壮性,以前硬件资源紧张的时候,程序优化都很好,也不常见说“卡”的情况,现在软件越做越大,反而更不好用了,这也许需要开发人员的反思,作为学生,也更应该有意识培养自己的代码风格。
参考资料:1、关于 软件稳定性测试 的思考与实践 -邱 鹏
2、http://www.51testing.com/html/60/n-3645960.html
3、http://baidutech.blog.51cto.com/4114344/743821