|
@@ -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`;
|
|
|
+* 算法、逻辑细节。
|