用压测工具登陆一个账户,对一个接口并发请求100个。和登陆100个账户对一个接口请求一次。哪个是正确的方式,不想去创建那么多账户
压力测试的话 登录一个账号 就可以了
发请求的目的是测试接口在高并发情况下的性能表现,如响应时间、吞吐量等。使用一个账户可以更真实反映在高并发下的性能
当开发人员进行的单元测试中100%覆盖我们的代码时,为什么需要测试人员?在创建测试时,测试人员为什么应审查单元测试?因为100%的单元测试代码覆盖率还不够。
代码覆盖率工具跟踪代码的执行情况,并提供有关该执行情况的指标。最常见的措施之一是声明覆盖率。语句覆盖率给出了已执行语句占程序中语句总数的百分比。许多组织设定了单元测试覆盖率的目标,共同的目标是80%的语句覆盖率。
开发人员为获得100%的单元测试覆盖率而感到自豪,项目团队的成员将其与拥有高质量的代码联系在一起。但是,即使测试执行了每一行代码,然后我们将代码称为“完全测试”,这也会产生误导。
100%的单元测试覆盖率并不意味着我们已经进行了良好的测试,甚至并不意味着测试已经完成。测试可能会丢失重要数据,而只能使用成功的数据进行测试,而无法测试导致失败的数据。 100%的单元测试覆盖率没有说明缺少代码,缺少错误处理或缺少要求。
测试也可能实际上没有检查代码的功能。仅执行代码而不检查其功能仍然在覆盖率指标中。
以下示例说明了仅依靠单元测试覆盖范围会导致什么问题。代码是Python,测试是使用unittest模块编写的。希望这些示例能激发测试人员检查单元测试,改进这些测试或通过功能测试来补充它们,以填补空白—即使测试覆盖率为100%。
问题:压力测试的并发请求是否可以只使用一个账户?
回答:在进行压力测试时,使用一个账户并发请求100次和使用100个账户各自请求一次的方式都是可行的。具体使用哪种方式取决于被测试接口的要求和测试的目的。
如果被测试接口对并发请求不做限制,并且要求测试请求的身份信息一致,那么可以使用一个账户并发请求100次。代码示例如下:
import requests
from concurrent.futures import ThreadPoolExecutor
def send_request():
url = "http://example.com/api"
headers = {
"Authorization": "Bearer token" # 使用同一个身份信息
}
response = requests.get(url, headers=headers)
print(response.status_code)
def run_concurrent_requests():
with ThreadPoolExecutor(max_workers=100) as executor:
for _ in range(100):
executor.submit(send_request)
run_concurrent_requests()
如果被测试接口对并发请求有限制,或者需要测试每个账户各自请求一次的情况下,就需要使用100个账户各自请求一次的方式。代码示例如下:
import requests
from concurrent.futures import ThreadPoolExecutor
def send_request(username):
url = "http://example.com/api"
headers = {
"Authorization": f"Bearer {username}" # 每个账户使用不同的身份信息
}
response = requests.get(url, headers=headers)
print(response.status_code)
def run_concurrent_requests():
usernames = ["user1", "user2", "user3", ...] # 100个不同的账户
with ThreadPoolExecutor(max_workers=100) as executor:
for username in usernames:
executor.submit(send_request, username)
run_concurrent_requests()
需要注意的是,使用多个账户进行并发请求时需要确保账户的有效性和授权状态,以免因身份信息错误或失效导致请求失败或测试结果不准确。