1.设置抢购活动,比如活动对应的代金券、开始时间、结束时间、秒杀券的数量等
2.定时开始抢购活动,禁止超卖
3.用户抢购限制,一个用户只能购买一单
创建OAuthControllerTests生成token,文件存在根目录下
public class OAuthControllerTest extends OAuth2ServerApplicationTests {
@Test
public void writeToken() throws Exception {
String authorization = Base64Utils.encodeToString("appId:123456".getBytes());
StringBuffer tokens = new StringBuffer();
for (int i = 0; i < 2000; i++) {
MvcResult mvcResult = super.mockMvc.perform(MockMvcRequestBuilders.post("/oauth/token")
.header("Authorization", "Basic " + authorization)
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.param("username", "test" + i)
.param("password", "123456")
.param("grant_type", "password")
.param("scope", "api")
)
.andExpect(status().isOk())
// .andDo(print())
.andReturn();
String contentAsString = mvcResult.getResponse().getContentAsString();
ResultInfo resultInfo = (ResultInfo) JSONUtil.toBean(contentAsString, ResultInfo.class);
JSONObject result = (JSONObject) resultInfo.getData();
String token = result.getStr("accessToken");
tokens.append(token).append("\r\n");
}
Files.write(Paths.get("tokens.txt"), tokens.toString().getBytes());
}
}
分为两种情况进行压力测试
1、多人测试抢购代金券
模拟5000个并发,2000个账号进行抢购
结果:数据库中t_seckill_vouchers表的amount会为负数,t_vouchers_orders的订单会超过100,卖多了
2、某个用户发起多个抢购请求
模拟10000个并发,1个账号进行抢购
JMeter察看结果树中有来自全局常量类的响应数据,显示出错
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。