lsekfe 发表于 2021-10-26 13:26:53

功能测试和性能测试的区别

我们在求职的时候,发现有的是招聘的功能测试,有的招聘的是性能测试,那么功能测试和性能测试的区别是什么呢?
1、侧重点不同
功能测试的侧重点是功能是否满足客户需求。比如说我们拿到一个节假日搞活动的需求,这个需求有好多种场景,比如说是百分比打折还是满减打折,是否有优惠券,活动是否可叠加使用,如果可叠加使用,优先使用哪种优惠策略等等,做功能测试时,我们必须把这些需求都搞清楚,并且尽可能的将所有可能出现的场景都测试到,功能测试注重产品的每一个细节。功能测试要保证的是每一个功能点都无问题,以防在生产环境上客户使用的过程中出现问题。而且功能测试完成后,需要提交测试用例、测试总结报告和用户操作手册等文档来追踪整个测试过程。另外,功能测试更注重客户的使用感受,测试工程师应该站在客户的角度来使用功能,而不是站在开发者的角度,因为真正使用系统的还是客户,只有更多的考虑客户的使用感受,才能将系统做更大范围的推广。
性能测试的侧重点是响应速度是否能满足客户的需求。对于性能测试来说,我们要做的是,分析可能出现瓶颈的操作,对其进行压测,或者是某个需求的整个操作流程,进行在线测试。同一个需求,我们先要分析要在哪些点进行压测,比如说勾选订单,计算优惠券的时候,又比如说选择好优惠券,提交订单的时候,如果在这些点需要进行压力测试,那需要在这些步骤之前添加集合点,并设置并发数量,查看响应时间、吞吐量及系统的性能是否满足要求。性能测试完成后,要根据性能测试的结果,分析最佳用户量,最大用户量,系统性能等等数据,并根据测试数据,分析系统瓶颈,分析有无可优化的地方。性能测试要保证的是在多用户并发操作系统的情况下,系统能健壮并稳定的运行,并且客户能有好的体验效果。
下面我们通过测试用例的方式更直观的体现一下两者的区别。
场景:开通一个满50-10,满100-30的活动,只有指定商品才可以使用该优惠券
功能测试用例
用例名称前提条件操作步骤预期结果
指定商品价格满50,可以使用-10的优惠券
1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和>=501、优惠券可以使用
指定商品价格不满50,不可以使用优惠券
1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和<501、优惠券无法使用
商品总价格>50,但是符合优惠条件的商品总价格<50,不可以使用优惠券
1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单和不符合优惠条件的订单,勾选商品的总价格>50,但是符合优惠条件的商品总价格<501、优惠券无法使用
优惠券只能使用一次50-10的优惠券已经被使用了1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和>=501、50-10的优惠券不能使用了
勾选订单后系统自动使用最优优惠券,且可自行修改
1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和>=1001、系统自动使用-30的优惠券2、客户可自行修改要使用的优惠券
使用优惠券的订单可以提交成功
1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和>=1003、提交订单1、订单提交成功2、订单价格显示正确
优惠券不在有效时间段内,不能使用优惠券的使用日期是未来的某个时间段或者过去的某个时间段1、将一些商品加入购物车2、勾选一些符合优惠活动条件的订单,且价格总和>=501、优惠券无法使用
操作流程简单易用
1、使用优惠券下单1、操作简单2、符合用户使用习惯
......



性能测试用例
50个用户并发使用优惠券 1、设置50个虚拟用户并发使用优惠券1、优惠券使用成功2、优惠券使用正确3、响应时间<0.1s4、吞吐量>=4.3/sec
100个用户并发使用优惠券 1、设置100个虚拟用户并发使用优惠券1、优惠券使用成功2、优惠券使用正确3、响应时间<0.2s4、吞吐量>=4.3/sec
200个用户并发使用优惠券 1、设置200个虚拟用户并发使用优惠券1、优惠券使用成功2、优惠券使用正确3、响应时间<0.3s4、吞吐量>=4.3/sec
500个用户并发使用优惠券 1、设置500个虚拟用户并发使用优惠券1、优惠券使用成功2、优惠券使用正确3、响应时间<0.5s4、吞吐量>=4.3/sec
......

当然这里的性能指标是我自己举例用的,真实的性能测试中,需求里都会给出要满足什么样的数据。通过我们列举的功能和性能测试用例可以非常清晰的看出,功能测试用例注重细节,边边角角、不同场景都要测试到,而性能测试更注重响应时间、吞吐量等数据。
[*]参与的时间段不同功能测试贯穿于项目的整个发展阶段,从需求分析开始,经历测试用例的编写、测试用例的评审、执行测试、bug回归、测试文档的整理等等,一直到项目结束为止。而性能测试一般是在项目的后期进行。比如说我们拿到一个需求或者项目,在前期基本功能尚未完善的情况下,一般是不进行性能测试的。一直到项目后期,功能基本实现且无致命bug的情况下才进行,因为性能测试主要是测试系统或者功能的性能,在功能尚未完成或者存在问题的情况下,性能测试毫无意义。
[*]使用工具不同功能测试又分为手工测试和自动化测试,如果是手工测试,不需要使用工具,只是通过输入和查看输入的方式来验证功能是否正确;如果是自动化测试,需要我们使用工具(如selenium、QTP等)对脚本进行录制,并且对脚本进行修改后让脚本能按照我们设置的数据进行自动化的测试。性能测试主要是通过工具进行测试(如Loadrunner、Jmeter等)。说了这么多不同,但是功能测试和性能测试的最终目的都是一样的,都是希望系统能稳定的运行,单纯的功能合适或者性能测试都是不完整的,为了客户能有更好的体验,只有合理的将功能测试和性能测试结合起来,才能使一个系统更加完美。

页: [1]
查看完整版本: 功能测试和性能测试的区别