2021-10-12

测试基础

现峰师兄的博客:http://blog.sina.com.cn/u/1760715297

自动化测试环境搭建:

https://yuque.antfin.com/ideroa/legsmq/od22gz
按照步骤一步一步做。
主要问题:
1 修改环境变量:参考两个网址教程操作
mac环境下创建bash_profile文件并写入内容https://www.jianshu.com/p/1386906bdbd1
mac使用zsh终端环境变量配置无效的解决方案https://www.jianshu.com/p/d972b1482c91
2 安装brew node appuim
2.1 brew安装很成功,使用brew doctor 发现一些warning 但是不是问题,按照指令修改即可
参考教程:https://blog.csdn.net/weixin_39142112/article/details/88424256?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
2.2 安装node出现问题: 没有urc4c。解决: brew install urc4c 。就可以了。
接下来 brew install node 又出现了新问题,这是因为图快使用了代理。这是不可以的。还是需要 brew install node 。这样就安装成功了。
安装 appuim 没问题,按照教程。但是教程中的 appuim doctor 需要安装doctor才可以。自行百度教程就可以用。

在postman中测试接口

1:在huskar 搜索 dispatch_web 找到物流的service页面,复制ip地址,每次都会更新,获得url: http://10.3.3.56:8012/rpc 其中 10.3.3.56是ip地址,8012是端口
http://10.3.134.25:9080/rpc
2: 选择post 向指定资源提交数据进行处理请求
3: 选择 body (post请求时必须要带的参数,里面放一些key-value键值对 )输入代码,
选择 raw (可以上传任意类型的文本,比如text、json、xml等,所有填写的text都会随着请求发送;), 设置代码类别为 :JSON
4: //除了有注释的行,其他的不需修改
{
“args”: { //入参。
“knightId”: “1727366” 根据对应接口的输入参数类别选择 “ ” , 全家桶中有骑手,商家等的id
},
“iface”: “me.ele.galaxy.dispatch.web.api.KnightService”, //接口,可以在idea代码中 双击两次shift 找到对应接口,也可以在代码列表找。
“ver”: “1.0”,
“soa”: {
“req”: “12345”
},
“method”: “kickOffTXDKnight”, //方法名,需要和接口名字对齐。
“context”: {
“routing-key”: “shardid=10”
}
}

控制台item的使用:

https://www.jianshu.com/p/ba08713c2b19

1: git在item控制台输入 git直接下载。

https://blog.csdn.net/weixin_41640070/article/details/79911203
2: 在文件里新建文件夹,控制台 ls找到当前文件夹下的文件夹,cd到达目标文件夹。

3: git clone git链接直接下载代码到文件夹中。
git push 到 e2ejiangyang
cd e2ejiangyang
cd e2ejiangyang
git status
git add .
git commit -m “update”
git push

idea的使用:

https://yuque.antfin-inc.com/docs/share/5af52790-3309-4567-a284-efbd68c3823e?#
setting.xml

替换下面文件夹中的setting.xml
桌面-访达-前往-前往文件夹-/Users/eleme/.m2
在这里插入图片描述
在这里插入图片描述
替换完.xml 后,记得下载插件 lombok
在这里插入图片描述

1: 打开idea,打开对应文件,设置build, 选择maven的文件位置。
打开代码不要用open,用new-projectfromexsitingsource,否则build会出现问题。
2: idea是最好的java开发环境
3: idea没有看到界面介绍文档,再继续挖掘一下。点开idea后,菜单栏在屏幕最上方,不在idea界面,mac就是这样,修改不了。
多挖掘就会用了.idea的使用,包括界面外观设置和构建项目:2019】IntelliJ IDEA 入门到实战教程
bilibili大法好。
安装idea官网有社区版本,免费功能少一点,选择jbr8,适用java8。
现在都是用java8,是长期维护的比较好,java11是推广新功能,短期维护不好用的。
idea安装是绑定jdk1.8,安装过程有选择jbr1.8的,但是为了开发最好独立安装jdk。自己装的还需要激活呢,有个网站专门有激活码。
idea的安装文件也有很多门道,就不要修改他们。可以在软件里修改配置。
工具栏-view-tool window-toolbar, 会有保存打开这些出现,同行的小扳手是界面设置黑白字体大小,代码行字体大小等等。旁边三个蓝箱子堆砌是project结构,界面左列的project点一下文件列表就可以收起。
bilibili教程和mac的格局不同,setting不在file,而是在小扳手🔧,打开后就是设置,按照对应的一层层去找,每个tab自己也有内容,有的可能只有列表。
终端terminal还没有看到在哪里。代码run后会出现运行结果。界面最下行会有过程和耗时。
idea不会自动编译,如果修改代码咩有编译,再次运行还是之前的代码。所以需要设置自动编译,就像eclipse。或者python不需要编译,可解释语言
idea识别区分大小写,即首字母输入小写是不会自动推荐类的,类的首字母是大写。也可以在🔧设置
编译:把源代码变成计算机可以识别的代码,只检查语法和语义,不检查逻辑错误。
项目里固定有src,存储包名类名;创建包src点击new,package.先创建包com.balabala. 再在包下面创建类首字母大写。代码写完右键出来就可以选择run。就会在操作台看到结果。
为什么要建package?
****答:1: 先建package是相当于建文件夹,方便管理,方便maven管理
2: Java为类生成的字节码文件,出现同名问题。包管理类名空间,包提供一种命名机制和可见性限制机制。
3: package = c++ - namespace,用于管理类名。

还可以打包成jar包,然后编译得到.jar文件,在控制台执行java命令得到结果,类似c++的.exe文件。为什么要打包呢??为了得到可以在服务器上运行的可执行文件。
快捷键和bilibili介绍的不同,自己查用。设置:command,
快捷键冲突时可以修改
mac: 自动生成构造函数: control+fn+enter
windows-control= mac-command
windows-alt= mac-control 也不一定也有可能是option
windows-insert= mac-fn+enter
Windows-shift=mac- 向上胖箭头
自动补全结尾,括号双引号分号等,command+shift+enter
很多缩写很好用,command+j 之后再输入字母会有很多提示一下子就出来了:
sout:输出
fori:for循环
psvm:主函数。
对对象循环:新建类对象后,对象名.for 就可以
如果不按command+j, 输入字母会有类名或者关键字的推荐。
代码格式自动调整: command+option+l
选中代码放进if/while中:command+option+t
command + 有很多用处,可以自行探索,用的时候百度也可以,不用记了。
注释:
单行注释:// 巴拉巴拉或者 command+/
多行注释:/巴拉巴拉 /
段落注释:/
巴拉巴拉*/

听不懂:
GroupID:com.dajiangtai 标示组
artifactid: 项目,比较小的概念,在groupid之下。
构建maven项目,需要选择一个骨架?

maven:

https://www.runoob.com/maven/maven-setup.html
eleme@E118435-BJ ~ % vim .zshrc
eleme@E118435-BJ ~ % vim .zshrc
eleme@E118435-BJ ~ % cd /usr/local/apache-maven-3.3.9
eleme@E118435-BJ apache-maven-3.3.9 % cd …
eleme@E118435-BJ local % cd …
eleme@E118435-BJ /usr % cd …
eleme@E118435-BJ / % cd
eleme@E118435-BJ ~ % source .zshrc
eleme@E118435-BJ ~ % mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: “mac os x”, version: “10.15.7”, arch: “x86_64”, family: “mac”

是一个依赖包管理平台,是一个项目管理工具。当需要构建java项目的时候需要很多依赖包,maven用很简单的语句来构建支持。
学习网址:maven-菜鸟课程
1: 有固定的目录结构
2: POM:项目管理对象,被maven管理
3: 项目依赖:一个项目a依赖另一个项目b,则b将先编译,b的变更将会影响a。
4: 公司或者组织下有多个项目,所以需要先构建一个项目id,即工程标识。groupid=组织id可以生成路径=网址,通常是唯一的。
项目id和构件id, 构件是项目生成或者使用的东西,每个构件是唯一的。
是构件的类型,如jar。每个插件可以构建不同类型的构件。
5: 很多命令,需要在控制台进行?
6: plugin:插件。一种计算机应用程序,应用中缺少某项功能,又不想很大,就用plugin交互提供
7: maven 和 ant的区别。ant也可以管理压缩包项目,每个项目中都有一个文件夹/lib,包含 .jar等文件。如果每套代码都要提交这个,占内存,👎。maven就是管理jar文件的仓库,放在本地存储中,为项目提供jar的地址id等,不需要再包含在内,就可以用。如果本地没有,就可以去远程仓库找,这就是repostories。
8: maven-pom标签大全详解
9:每次配置环境都不行,奇奇怪怪。不影响idea使用,idea已经配置过。

java学习


java代码和python语法差不多,明天找菜鸟课程自学一下,idea maven java的用法。看看语雀的文档,因为什么都不懂,所以看的一脸懵。
java 和python:
**答:python是轻量的项目,更简单。java架构大项目。
java-菜鸟课程 -----可以在网站搜索想了解的词 command f
有一本书,java编程思想。
源文件和类名保持一致,类中包括表示状态的变量,表示行为的函数。
主方法入口-main函数(psvm),每个类都有吗??
**答:不是。有的类只描述状态和行为。
如果想要观察这个类,需要给编译器一个公共接口:有两种选择:
**1—构建新的类,构建主方法入口,调用类的变量和方法。
**2—类内部构建主方法入口,代码主要在这个函数中运行,而且是第一运行,类似c++的 main函数。
**3主方法入口必须是public,才可以被java解释器运行类。

枚举限制了变量的值的范围,可以减少bug。选择题比填空题容易判断。
常量标识符:f 常量名称为全部大写,常量的值不可修改。
数据类型都有自己的默认数值。

implements:实现
interface:接口 这两者的不同是什么??接口是对象之间的通信协议,用于继承中,只定义派生中用到的方法,方法名?方法实现却由派生类决定??接口是什么呢?是对象间沟通的桥梁,和类同样需要定义。

interface 和 class 相同,用来定义接口 和 类;
implement是 用于子类继承 interface定义的接口的关键字。
public interface A{}
public interface B{}
public class C implement A,B{}

static:静态。修饰符的作用是什么??
**答:用于定义某个变量为类变量,定义方法为静态方法,直接被类调用

final:取其最终之义,不能修改变动。常量变量,不可以被子类重写的方法,不可以被继承的类。

this: 本类。

public class Dog{

**构造函数,new来调用
public Dog(){//默认构造函数,一般不写出,默认存在
}
public Dog(int agen){//自定义构造函数,一般有输入或者打印输出
this.dogAge=agen;
/this 本类,代表对象。没有对象的时候不能用。构造函数构造出对象所以可以用this.而方法不可以/
}
**构造函数,两种实现

public setAge(int ages){ //方法命名,第一个单词小写,第二个单词首字母大写
dogAge= ages; //不需要this
}
int dogAge;//成员变量,第一个单词小写,第二个单词首字母大写
public void barking(){//方法
int voice;//局部变量
}
//类变量??
static String bark=“wangwang”;
/*静态修饰符不仅可以修饰变量,也可以修饰方法。
*静态变量可以被所有对象和类名直接调用。
静态方法只可以访问静态变量。main函数呢?带static标识符,它是静态函数吗?他会使用非静态变量吗?/
}
成员变量和类变量有很多不同,先记住成员变量归属于对象,即类的实例;而类变量归属于类,即所有类的实例。

import 是为了简化使用 package 之后的实例化的代码。假设 ./aaa/bbb/ccc/ 下的 A 类,假如没有 import,实例化A类为:new aaa.bbb.ccc.A(),使用 import aaa.bbb.ccc.A 后,就可以直接使用 new A() 了,也就是编译器匹配并扩展了 aaa.bbb.ccc. 这串字符串。
**package类似构建文件夹,把类放在文件夹下面。import类似 cd,进入该文件夹,直接在该文件夹下可以使用类,构建类的实例

对象和引用:对象是类的实例,new创建对象后,在堆内存开辟空间;引用存放对象的地址。
堆内存和栈内存:优先队列和栈;手动释放和自动释放。不是特别的明白??????
引用类型是什么???举例:对象和数组
Dog dog; //只给对象dog分配了引用空间,即对象的内存地址,并没有给对象分配数据空间,
dog.age=4;//错误。没有数据空间,不可以赋值。
dog = new Dog(); //开辟数据空间
dog.age=4;//有了数据空间,可以进行赋值。

抽象方法??

java专为数组的增强版for,类似python的for.
while 和 do while 都是循环,在设置合理时输出结果也也一致。但是底层逻辑不同,需要注意!

print 和 println 的区别?? 为什么是 小写L??
答: print 将信息显示在命令窗口,输出光标定位在最后一个字符之后;
printf 将信息格式化显示在命令窗口,输出光标定位在最后一个字符后;
格式化指生成制定格式的信息。举例:“年-月-日”/ “月/日/年”
println 将信息显示在命令窗口,输出光标换行定位在下一行开头。

正则 表达式:对刚接触的人来说,比较晦涩难懂。用到再查。

字符和字节的区别:
**答:字节byte,是计算机存储的计量单位,有八位,取值0-255
字符:计算机使用的文字符号,1 2 3 a b c等

方法格式:
访问标识符【public 】 返回参数【可能是类对象,Dog】 方法名【首字母小写,第二个单词后的首字母大写】(输入参数)

IDEA打开某个类:点对象名-command+鼠标左键
如何确定类文件的位置:project 同行 右边第一个符号:小轮胎

@NoArgsConstructor@AllArgsConstructor@Data@Builder等 这是注解,有些用于自动隐式表示getter setter方法,不需要列出函数,代码更加简洁明了。
需要安装插件 lombok 在设置界面找到plugin 就可以下载安装
@auto wired 自动注入。自动帮你把引用的对象的setter/getter方法省略,它会自动帮你set/get。
@Service创建UserServiceImpl的的实例时,名字必须叫做"userService。
@override 表示重写,会自动检查父类中是否存在以下函数名,否就报错。如果不加,即使父类没有这个函数,编译也会成功,这不行。

java反射机制–动态获取信息,动态调用对象

java反射在框架设计中应用广泛,我们所熟悉的crowdapi使用了大量的反射方法。一个基础知识点
● 概念
○ 百度搜索得到:程序->访问,检测,修改->自身(状态,行为)的能力,
根据自身行为的状态和结果->调整,修改->应用描述的行为状态。
○ 运行状态中,可以知道任意一个类的属性和方法;
调用任意一个对象的属性和方法。
○ 框架设计的灵魂
○ 关键-class对象。 得到class对象,反向获得class的信息。
○ java文件->编译->.class文件->类加载放在方法区,同时生成class对象放在堆内存
○ new 对象 会在堆内存中开辟空间
○ 类名.class 是常量,放在运行时常量池。
● 内容
○ 关键是class对象,三种方式获得
■ Class.forName(String name) 完整类路径
● 创建一个Class对象,会进行类加载,初始化静态域
■ 类名.class
● 获取类的字面常量,不会对类进行加载,不会初始化静态域
■ 对象名.getClass()
● 加载完成后,获取Class对象,不是生成获取Class对象,
○ 三个方法的应用:
■ newInstance()-通过无参构造函数实例化对象
■ getSuperClass()-获取该类的父类Class对象
■ getIntefaces()-实现的接口
○ 反射–java.lang.reflec包下的几个类
■ AnnotatedElement-顶级接口,提供获得注解相关功能,一般都会实现它
■ GenericDeclaration-提供获取泛型相关的功能
■ Memeber-作为对象内部方法和属性的声明的抽象,包括名称,修饰符
■ AccessibleObject-提供权限管理的功能,可以提权限访问私有属性
■ Constructor, Method, Field 通过以上功能类+函数拿到对应(构造函数,方法)的信息
● 原理
Method.invoke->直接调用MethodAccessor.invoke,MethodAccessor是所有同名method共享的一个实例<-由ReflectionFactory创建;由Native/java代码生成,超过15次从native切换成java生成.前者初始化快,执行效率低,所以后期切换。
● 应用
○ crowdapi–每次拿到类名,初始化一些方法…
○ 动态代理:
■ 代理模式-中介,为其他对象提供一个代理->对对象访问。代理类为委托类<-预处理消息,过滤消息,传递消息。代理类利用委托类完成服务,执行结果封装处理。
■ 动态代理:反射机制->运行时->构建代理类
● 构建handler->实现 InvocationHandler->Proxy.newProxyInstance生成代理对象
● 原理:生成目标代理类,字节码文件,返回实例化对象,根据构造函数返回代理对象。。。。
■ e2e应用
● 调用rpc接口
在e2e组件中继承父类ExecComp ,init方法中,
iOrderDispatchService = EleRpcInvokeUtil.bindingRpc(IOrderDispatchService.class, “lpd_cs.dispatch_dock”);
就是重载父类的方法,IOrderDispatchService.class作为入参,就是class对象,会将它实例化,
然后接下来的方法 ExecResult run 中调用IOrderDispatchService.class的方法

在测试用例中 也是这个操作
ExecResult execResult = RunningMan.run(IOrderAppend.class, compParam);

git分支开发:

菜鸟有个简易教程https://www.runoob.com/git/git-branch.html
git设置一个代码库,每人一个分支开发代码,互不干扰,最后融合在一起,最后处理干扰情况。是一种防止冲突的做法。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值