V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  TommyLemon  ›  全部回复第 3 页 / 共 34 页
回复总数  669
1  2  3  4  5  6  7  8  9  10 ... 34  
2019-06-05 11:00:00 +08:00
回复了 jzyff 创建的主题 程序员 大家平时写完代码都是怎么做自测的
@javaWeber @love2328 @snowfuck @bigmercu @dyllen @Kahnn @ericgui @lihongjie0209
全自动化 API 测试,不用写任何代码,不用填任何配置
https://www.v2ex.com/t/570669#r_7431950
2019-06-05 10:53:47 +08:00
回复了 liudaqi 创建的主题 程序员 借问一下,大家业务代码都是怎么测试的?
很多 bug 都是改出来的,原本已经没 bug 了(至少不会有容易复现的 bug ),
改了后没有经过严谨地验证,很容易出现新 bug 或引发原本不会发生的旧 bug。

单元测试是个好东西,只要完整编写用例,覆盖足够多的排列组合情况,
后续每改动一次代码就跑一次完整的测试用例,bug 就很容易暴露出来。

但问题是单元测试代码工作量太大了,而且改了业务代码,还得同步修改测试代码。
现在用 APIJSONAuto 自动化接口测试,不用写任何代码,点几下按钮就行了

https://i.v2ex.co/StOLewJO.jpeg

自动化接口管理工具,自动生成代码、自动静态检查、自动化回归测试、自动生成文档与注释等。
* 自动生成接口文档,清晰可读永远最新
* 自动校验与格式化,支持高亮和收展
* 自动生成各种语言代码,一键下载
* 自动管理与测试接口用例,一键共享
* 自动给请求 JSON 加注释,一键切换
* 自动保存历史请求记录,一键恢复

代码已开源,可以点 Star 支持下哦 ^_^
https://github.com/TommyLemon/APIJSONAuto/
2019-06-04 15:11:18 +08:00
回复了 jzyff 创建的主题 程序员 大家平时写完代码都是怎么做自测的
2019-06-04 15:06:39 +08:00
回复了 jzyff 创建的主题 程序员 大家平时写完代码都是怎么做自测的
单元测试代码工作量太大了,而且改了业务,还得同步修改测试代码。
现在用 APIJSONAuto 自动化接口测试,不用写任何代码,点几下按钮就行了

https://i.v2ex.co/StOLewJO.jpeg

自动化接口管理工具,自动生成代码、自动静态检查、自动化回归测试、自动生成文档与注释等。
* 自动生成接口文档,清晰可读永远最新
* 自动校验与格式化,支持高亮和收展
* 自动生成各种语言代码,一键下载
* 自动管理与测试接口用例,一键共享
* 自动给请求 JSON 加注释,一键切换
* 自动保存历史请求记录,一键恢复

代码已开源,可以点 Star 支持下哦 ^_^
https://github.com/TommyLemon/APIJSONAuto
2019-06-03 14:56:14 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@nicoljiang 感谢支持
2019-06-01 20:30:58 +08:00
回复了 PingCAP 创建的主题 推广 势高,则围广: TiDB 的架构演进哲学
@sparkle2015 好的,感谢
2019-06-01 17:52:07 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@TommyLemon 首先得有
2019-06-01 17:51:47 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@polebug 放荣誉(首选得有)、使用的企业 /项目 的开源项目多了去了,连阿里的也是,
这也是为了让用户放心,免得总有人问“这个项目有没有 /有哪些公司在用呢?”之类的。
2019-06-01 17:49:01 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@yinzhili 采用敏捷开发方式,目前就 49 个类,没必要分太多包导致不好找,
杀鸡焉用牛刀,按照场景选择合适的方式就好。
Log 为了不依赖其它库就加了个简单的类,自己的工程里随你用什么方式,
后续也会提供扩展,用户可重写相关方法,自由使用 Log4J 等打印 APIJSONORM 的日志。
2019-06-01 17:45:27 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@sagaxu 哈哈
2019-06-01 16:51:08 +08:00
回复了 PingCAP 创建的主题 推广 势高,则围广: TiDB 的架构演进哲学
图片都看不了,在别的平台有发这篇博客吗?麻烦发下链接哦
2019-06-01 16:14:53 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@primordial 感谢支持 ^_^
2019-06-01 12:28:52 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@TommyLemon 确实是误判为 bug 的报告用例 2
src/main/java/zuo/biao/apijson/JSONObject.java: 411 (可信度: 95%)
1 这里比较了 clazz 和 null,说明 clazz 可能为空指针
2 调用 clazz 的 java.lang.Class.getName 方法(使用可疑的空指针)

对应实际文件
https://github.com/APIJSON/APIJSON/blob/d8cfc9e6be87bd6116ecf8a125a52021f0154761/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/JSONObject.java
内方法
```java
@Override
public Object put(String key, Object value) {
if (value == null) {
Log.e(TAG, "put value == null >> return null;");
return null;
}
if (StringUtil.isEmpty(key, true)) {
Class<?> clazz = value.getClass();
if (clazz == null || clazz.getAnnotation(MethodAccess.class) == null) {
throw new IllegalArgumentException("puts StringUtil.isNotEmpty(key, true) == false" +
" && clazz == null || clazz.getAnnotation(MethodAccess.class) == null" +
" \n key 为空时仅支持 类型被 @MethodAccess 注解 的 value !!!" +
" \n 如果一定要这么用,请对 " + clazz.getName() + " 注解!" +
" \n 如果是类似 key[]:{} 结构的请求,建议用 putsAll(...) !");
}
key = value.getClass().getSimpleName();
}
return super.put(key, value);
}
```
406 行
Class<?> clazz = value.getClass();
Class 是对象声明后就有的,到执行这行前 value 已经判断过,又不会为 null,
所以实际上 clazz 不会为 null,407 行
if (clazz == null || clazz.getAnnotation(MethodAccess.class) == null) {
中 clazz == null 是一个冗余的判断,后面删掉了,实际上 411 行
clazz.getName()
永远不会因为 clazz == null 而导致 throw NullPointerException,
所以这也是一个误判为 bug 的用例。

其它的你自己找吧,太费时间了,我也没有全部都验证过,即便假设只有这两个是误判,那就是
(1 - bugs/lines) = (1 - 14/10617) = 高达 99.868136%
2019-06-01 12:19:26 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@TommyLemon 确实是误判为 bug 的报告用例
src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java: 897 (可信度: 65%)
zuo.biao.apijson.server.AbstractSQLConfig.putWhere(String, Object, boolean)中
AbstractSQLConfig.combine 可能的空指针解引用

对应实际文件
https://github.com/APIJSON/APIJSON/blob/d8cfc9e6be87bd6116ecf8a125a52021f0154761/APIJSON-Java-Server/APIJSONLibrary/src/main/java/zuo/biao/apijson/server/AbstractSQLConfig.java
内方法 AbstractSQLConfig.putWhere 实际上在前面已经用
combine = getCombine();
做了处理,return 的值不会是 null
```java
@NotNull
@Override
public Map<String, List<String>> getCombine() {
List<String> andList = combine == null ? null : combine.get("&");
if (andList == null) {
andList = where == null ? new ArrayList<String>() : new ArrayList<String>(where.keySet());
if (combine == null) {
combine = new HashMap<>();
}
combine.put("&", andList);
}
return combine;
}
```
2019-06-01 12:13:40 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@my8100 最后这个我的总结的 (1 - 16/10617) = 99.85%
而且这 16 个是 [可能] 的 bug,已经确认有几个是误判,并非真的 bug,所以实际上 99.85% 已经“谦虚”过了
2019-06-01 11:54:03 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@my8100 具体你可以下载报告,issue 里提供了链接,还可以去官网看看,issue 里也有官网链接
2019-06-01 11:52:02 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@blindpirate @carlclone 两位说我是培训班 /培训机构出来的,我不知道该如何证明不是,
但从法律上来讲,谁主张谁举证,麻烦提供证据,谢谢!
By the way,对于培训班 /机构,我就不发表自己的看法了,以免引战。
2019-06-01 11:48:36 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@blindpirate APIJSON 提供了全自动化的接口测试,143 个测试用例,在 #176 楼回了
https://www.v2ex.com/t/568631#r_7414951
2019-06-01 10:55:14 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@thisisgpy “最主要的是,码云那个证书并没有一毛钱作用。码云上的用户啥水平大家心里没点数么?”
厉害厉害,把您自己拿到的更有价值的东西、你更好的成就 show 给大家看看,让大家都瞻仰下您这位大神
2019-06-01 10:52:31 +08:00
回复了 TommyLemon 创建的主题 程序员 技术改变世界,前后协同变革 自动化 ORM 可靠度高达 99.85%
@my8100 代码覆盖率 0 是指业务接口,直接使用 自动化接口测试即可,
里面已经放了 143 个测试用例(默认业务需求测试账号 60 个,APIJSON CRUD 各种功能测试账号 83 个)
1  2  3  4  5  6  7  8  9  10 ... 34  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   750 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 21:24 · PVG 05:24 · LAX 14:24 · JFK 17:24
Developed with CodeLauncher
♥ Do have faith in what you're doing.