软件性能测试
软件性能测试,看这个几个字,里面有软件、软件性能和软件性能测试这三个方面的知识,首先不同人看到“软件性能测试”这几个字,第一感受肯定是不一样的。作为一个测试工程师,他第一感受很可能是我如何运用自己掌握的知识去测试出软件的表现情况是优秀还是良好亦或是不合格。作为一个一般的码农,他的想法可能首先是软件如何实现(这代码怎么写),软件性能(优化的时候再说)次之
首先是软件:国标中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。鄙人的理解就是,用代码实现的能完成一定业务逻辑的程序片段
软件性能:软件能完成特定功能的表现情况,这么说可能不是很清晰,举个例子:现在的手机都宣传有防水功能,手机A能在水下1.5米放置30分钟无事故,另一种手机B能在水下1.5米放置45分钟无事故。这个例子,你的第一感受是你肯定更加愿意掏钱买手机B(当然买手机肯定是很多原因的,我这里只是举例),为什么?因为在同样的条件下,手机B能多待15分钟。这个跟软件性能其实差不多,同样的环境下,软件版本A和软件版本B肯定会存在差异性,两个版本对比之下,就知道哪个更好一点。
软件性能测试:使用专有工具模拟软件需要的数据对软件进行“饱和攻击”,观察软件在处理一定量的数据期间的表现情况。假如只有前面这么一句话,估计你会骂我。表现情况,是笼统的概括,软件性能表现需要量化且清晰的指标,软件性能表现需要量化且清晰的指标软件性能表现需要量化且清晰的指标!就像上面举的例子,水下深度以及测试的时间都是量化的东西而且很清晰,何为清晰和量化?就是能让普通人一眼甄别出来,心里能切实感受到,如果上面的例子这么写:手机A的防水性能较上一代提升20%,手机B的防水性能较上一代提升30%,估计你还得去看上一代是怎么个防水法(万一上一代也是这么写的...),这就是不清晰。好了,我们说说软件性能测试需要关注的性能指标。
TPS:Transaction Per Second,每秒事务数。软件每秒钟处理的事务数量(包括成功与失败),一般做性能测试都是关注TPS,其他的一些如QPS(Query Per Second每秒查询数目),特定要求才关注这个,只有TPS和QPS之间的关系,不在此处细讲。当然TPS越高就可能代表软件性能越强。
RT:Response Time,响应时间,从对系统发出请求到得到系统响应的时间,例如你老板要求你做一件事,到你完成这件事的时间,你说这时间是久一点好还是少一点好呢?RT越少,从某个维度证明系统处理能力越强
并发数:同一时间间隔内对系统造成压力的请求数,通常在压测软件中叫做模拟用户数,通过线程或进程数量来模拟
错误率:这个也很重要,根据业务/产品逻辑能承受多少的错误率,有些场景下对错误率要求很严格的,如涉及到软妹币的,错误率太大就代表着财富的流失,至于多少错误率合适,这个具体问题具体定指标
不妥的地方欢迎指正