Willin Wang 8 роки тому
батько
коміт
d8da644775
1 змінених файлів з 27 додано та 1 видалено
  1. 27 1
      project/user/bdd.md

+ 27 - 1
project/user/bdd.md

@@ -140,7 +140,7 @@ Result:
 并且需要注意:
 
 1. 测试前需要添加测试数据(测试用户),且信息不能与其他测试用例冲突(并行执行测试)
-2. 测试后要删除测试数据
+2. 测试后要删除测试数据,不要使用清空数据库之类的操作,以免对其他测试用例产生影响
 3. 测试前也需要删除测试数据(以免前一次测试失败数据未删除而产生数据污染)
 
 检查测试用例是否覆盖完整,以及测试用例是否写错。
@@ -150,3 +150,29 @@ Result:
 测试用例参考: <https://coding.net/u/willin/p/bdd-practice/git/commit/cb2f32432000bcb3dc8cf9eb54e0bbf709b5887f>
 
 根据测试用例,开始编写功能模块代码。
+
+另外,有一种情况是测试无法覆盖的,就是登录半小时的限制,我们也没有必要让测试用例一直运行等待半个小时再测。可以直接检查Redis里的缓存是否正常,以及TTL超时是否在合理范围内。
+
+示例:
+
+```js
+test('Login trial redis ttl', async(t) => {
+  const value = await client.get('trial:guid-xxx');
+  // 循环错误3次,加上已经限制还再继续尝试的1次
+  t.is(value, 4);
+  const ttl = await client.ttl('trial:guid-xxx');
+  // 限制超时应当小于半小时
+  t.true(ttl <= 1800);
+});
+```
+
+剩下的编码部分就没什么可讲的了。 注意逻辑判断,测试代码覆盖率,没必要的判断不要加。
+
+注意点:
+
+* 数据库连接,使用连接池,并在所有查询完成后释放;
+* 数据库查询禁止  `select field1, (select xxx) as field2` 嵌套查询;
+* 慢SQL,如多张表`JOIN`的查询,根据业务逻辑,考虑加Redis缓存;
+* 代码覆盖率要求`95%`以上,分支覆盖`90%`以上,只有异常捕获的代码和测试环境下的分支可以ignore;
+* 不要用 `[].forEach()` 方法做轮询,直接用`for`;
+* 算法、逻辑细节。