志在指尖
用双手敲打未来

java测试(java开发转测试需要学什么)

java测试

项目开发过程中运用的单元测验结构有Junit、TestNG以及Mockito,Junit和TestNG运用的比较多,Mockito最近才开端运用。
TestNG与JUnit的相同点
1.运用annotation,且大部分annotation相同。
2.都可以进行单元测验(Unittest)。
3.都是针对Java测验的东西。
TestNG与JUnit的不同点:
1.JUnit只能进行单元测验,TestNG可以进行单元测验,功用测验,端到端测验,集成测验等。
2.TestNG需求一个额外的xml装备文件,装备测验的class、method乃至package。
3.TestNG的运转办法愈加灵活:命令行、ant和IDE,JUnit只能运用IDE。
4.TestNG的annotation愈加丰富,比方@ExpectedExceptions、@DataProvider等。
5.测验套件运转失利,JUnit4会从头运转整个测验套件。TestNG运转失利时,会创建一个XML文件说明失利的测验,使用这个文件履行程序,就不会重复运转已经成功的测验。
———————https://blog.csdn.net/SystemZYF/article/details/77746632
TestNG,即Testing,NextGeneration,下一代测验技术,是一套依据JUnit和NUnit思维而构建的使用注释来强化测验功用的一个测验结构。TestNG规划包括一切类型的测验:单元,功用,端到端,集成等。学习TestNG之前需求先学习编程语言Java、装备本地JDK环境(JDK1.5版本或以上)和装置java开发东西eclipse。java
1)在eclipse中装置testNG
打开EclipseHelp->MarketPlace,在查找框里边输入TestNG查找,然后装置TestNG插件。
2)装置成功后,在项目的package上右键可以看到TestNG–>CreateTestNGclass。
这儿可以勾选TestNG的注解办法。
@BeforeSuite:被此注解的办法将在一切测验运转之前运转该办法。
@AfterSuite:被此注解的办法将在一切测验运转之后运转该办法。
@BeforeTest:被此注解的办法,将在测验运转之前运转。
@AfterTest:被此注解的办法,将在测验运转之后运转。
@BeforeClass:被此注解的办法,将在当时类的第一个测验办法调用之前运转
@AfterClass:被此注解的办法,将在当时类的一切测验办法调用之后运转
@BeforeMethod:被此注解的办法,将在每个测验办法调用之前运转
@AfterMethod:被此注解的办法,将在每个测验办法调用之后运转。
@DataProvider:标志着一个办法,提供数据的一个测验办法。注解的办法必须回来一个Object[][],其中每个目标[]的测验办法的参数列表中可以分配。该@Test办法,希望从这个DataProvider的接纳数据,需求运用一个dataProvider称号等于这个注解的名字。
咱们先勾选一下@BeforeTest、@AfterTest、@DataProvider,主动生成的类文件如下:
这儿报错了,是因为咱们还没有将TestNG加入到咱们的library中来,点击错误,会有importLibrary的选项,点击便有了,如图
至此环境搭建完成,可以开端写测验的case了。
3)从一个简单的测验case开端下手,代码如下:
packagecom.pingan.ff.zijin;importorg.testng.annotations.Test;importorg.testng.annotations.DataProvider;importorg.testng.annotations.BeforeTest;importorg.testng.annotations.AfterTest;publicclassNewTest{@Test(dataProvider=”dp”)publicvoidf(Integern,Strings){
System.out.println(“第一个参数是”+n+”,第二个参数是”+s);
}@DataProviderpublicObject[][]dp(){returnnewObject[][]{newObject[]{1,”a”},newObject[]{2,”b”},
};
}@BeforeTestpublicvoidbeforeTest(){
System.out.println(“————开端测验————“);
}@AfterTestpublicvoidafterTest(){
System.out.println(“————完毕测验————“);
}
}
右键RunAs–>TestNGTest,运转后成果如下:
————开端测验————
第一个参数是1,第二个参数是a
第一个参数是2,第二个参数是b————完毕测验————
从测验的成果可以看到履行的次序是beforeTest()–>Test()–>afterTest(),一起Test()办法从dataProviderdp里边接纳参数。
4)TestNG默许情况下,会生成两种类型的测验报告HTML和XML,测验报告坐落”test-output”目录下。右键项目刷新一下项目就可以看到:

java开发转测试需要学什么

一、为什么从开发转测验
我从2019年5月开端从一名java开发女程序猿正式转为测验开发工程师,原因除了机缘凑巧之外,当然是由于这个职业对测验工程师的要求现已越来越高,简略做些UI脚本录制和回放的自动化,参阅度娘写出结构demo却不知道问题出在哪里的测验人员,现已不能满意企业快速迭代产品,确保产品质量的需求。
当一个产品越来越庞大、用例越来越多,用例怎么设置、脚本怎么规划、代码结构怎么优化,当需求变动时又怎么做到高可保护、高健壮性的问题会接踵而来。所以,一名优秀的测验开发工程师是必须具备优秀的代码才能,甚至常识面是需求比一般的开发人员更广的,比方他需求了解自动化测验、服务器布置、网络架构、软件功用、软件安全等等方面的常识。
所以开发工程师转测验之后可做的内容十分的多,测验这块范畴也需求更多有开发布景的人员参加。
二、前语
布景唠嗑完,咱们来说说面试题,由所以开发转测验,首要开发的进阶根底常识是必须要把握的,面试官也肯定会问(说不定直接是开发组的人面的),接着会问一些功用测验的常识点,可是一般不会多,然后是比较重要的自动化测验部分,做自动化测验结构有很多,每个公司用的也不一样,假如没用过面试官说的,就说自己用过那套的逻辑就好。
假如没有在工作中实践过,十分有必要的告知咱们,在面试之前也一定要多百度了解多动手写demo,不要让面试官问的东西和术语你都没听说过,那么还没开端就结束了的面试只会剩余尬聊(哭晕)。
最终前面聊得愉快的话,面试官一般还会继续考察你的其他才能,比方功用、安全、Linux、数据库、软件架构等。下述内容为咱们准备了每个常识点比较常见的面试题,咱们能够参阅而且发散准备,最终记住准备必问题目:为什么从开发转测验?参阅我第一章的答案?
三、开发根底面试题
自动化常用的言语是java和python,参阅面试题:
(1)JAVA常识
Q1:List、Set、Map之间的差异
List是一个有序而且答应元素重复的调集,它的底层数据结构是数组,数组的优缺点都很明显,便是查询速度很快,可是要做数据移动,比方添加、删去速度就会很慢。
Set是一个无序且不答应元素重复的调集,它的底层数据结构是哈希表,它的优缺点是跟数组彻底相反的,既查询速度慢,可是添加、删速度很快。
Map也是调集的一部分,它最大的特点是key-value形的,而且key不能重复呈现,可是value能够重复呈现,这对咱们某些业务,如用户重复处理能起到重要效果。
Q2:ArrayList与LinkedList的差异?
ArrrayList说白了便是个数组,所以天然也是有数据的优缺点的,比方支撑随机拜访,查询速度快。而LinkedList的底层数据结构是链表,所以是不支撑随机拜访的,在代码顶用下标拜访一个元素时,ArrayList的timecomplexity是O(1),而LinkedList是O(n)。
Q3:Hashtable与HashMap有什么不同之处?
Hashtable是过时了的遗留下来的类,后面新增的是HashMap。Hashtable的办法是同步的,所以时刻上比较慢,但HashMap没有同步策略,尽管时刻更快了可是也导致它另外一个问题:HashMap是线程不安全的。由所以异步的,在线程并发时可能会导致数据错乱。
Q4:Java中++操作符是线程安全的吗?
当然不是线程安全的操作,由于这个进程涉及到多个指令,比方先读取变量值,然后进行添加操作,最终存储回内存,整个进程可能会呈现多个线程交差。所以说它不是线程安全的。
Q5:int和Integer哪个会占用更多的内存?
由于Integer是一个方针,不只需求存储指向方针的指针,还要存储方针值,所以会占用更多的内存。可是int是八种数据类型之一,不需求实例化才能运用,所以占用的空间更少一些。
Q6:Java中sleep办法和wait办法的差异?
这两个办法是继承自不同的类的,所以尽管都能够用来暂停当时运行的线程,但sleep()仅仅短暂停顿,并不会开释锁,而wait()是条件等候,运用了该办法之后,还要开释锁,不然其他等候的线程就不能在满意条件时获取到该锁。而且sleep必须捕获反常的,但wait不需求捕获反常
Q7:解释Java堆空间及GC?
当经过Java指令启动Java进程的时分,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建方针的时分,就从对空间中分配内存。GC是JVM内部的一个进程,回收无效方针的内存用于将来的分配。
(2)Python常识
Q1:python的八大基本数据类型是?
int、str、float、list、bool、tuple元组、dict字典、set调集
Q2:python中可变数据类型和不行变数据类型有哪些?
不行变数据类型:数值型、字符串string、元组tuple,这类数据类型改变了变量的值适当所以新建了一个方针,也便是假如值是是相同,那么只用一个内存地址保存
可变数据类型:列表list、字典dict:答应变量的值发生改变,即假如对变量进行append、+=等这种操作后,仅仅改变了变量的值,而不会新建一个方针,变量引证的方针的地址也不会改变
Q3:python字典和json字符串相互转化办法是?
字典转json运用:json.dumps()
json转字典运用:json.loads()
Q4:Python中@staticmethod和@classmethod的差异
首要说一下什么是一般办法,一般办法需求传递参数,类调用的时默认会将类的实例方针传进去。
@staticmethod装修的静态办法与一般函数相同:实例和类均可调用,可是不需求传递默认的参数进去
@classmethod装修的类办法:也需求参数,运用时需求将调用的类传进去
Q5:什么是装修器?
装修器的实质是一个闭包函数,完成的功用是在不修改原函数及调用方式的情况下对原函数进行功用扩展的,是开放封闭原则的典型代表,咱们在业务中有编程场景能够用上装修器,比方用户登陆后的权限校验、履行函数前的准备处理、履行后的功用清理、以及更高档的业务处理等等。
Q6:python中常见的反常举例
Exception一切反常类的基类
AssertionErrorassert语句失利
FileNotfoundError文件翻开失利
AttributeError企图拜访方针没有属性
Q7:Python是怎么进行内存管理的?
Python一个高效言语的原因之一是由于它有十分完善的内存管理机制,在python中万物皆方针,所以环绕方针的内存管理是整个的核心。第一:方针的引证计数机制,python是运用引证计数来坚持追踪内存中的方针。第二:废物回收机制,当一个方针的引证计数归零时,它将被废物收集机制处理掉,确保方针可回收。第三:内存池机,Python供给了对内存的废物收集机制,可是它将不用的内存放到内存池而不是回来给操作体系制
(3)数据库常识
Q1:数据表project有code字段,其间code中的编码名有重复,怎么消除重复行?
selectdistinctcodefromproject
Q2:什么是内链接、左链接、右链接、全链接?
(1)INNERJOIN产生的成果会集,是左和右的交集(2)LEFTJOIN回来左表的悉数行和右表满意ON条件的行,其他null代替(3)RIGHTJOIN回来右表的悉数行和左表满意ON条件的行,其他null代替(4)FULLJOIN会从左表和右表那里回来一切的行,假如其间一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替。这个问题基本是问数据库问题必问的,咱们还能够深化准备下哪些业务场景用到哪种链接。
Q3:某个字段被树立索引后,数据的什么操作会运用到该索引?
(1)对树立了索引的字段做where条件查询时
(2)多表做join操作时会运用索引
(3)对树立了索引的字段做min()或max()时
(4)对树立了索引的字段做sort排序操作时
其间咱们用索引最多的时分在查询场景,但一起索引查询也会添加内存耗费,所以索引查询该怎么优化是一个更大的问题,此类问题也是数据库常见面试题之一,有兴趣的小伙伴能够自行查阅资料。
(4)http常识
Q1:http协议是不是安全的?假如不是,怎么确保传输安全?
HTTP的衔接很简略,是无状态的,所以不安全,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版。(SSL协议的对称密钥加密、非对称密钥加密Google查资料)
Q2:简述cookie和session的差异
session在服务器端,而cookie在客户端(浏览器)
cookie由所以放在客户端的,存在不安全性,简略被黑客运用
session放在服务端的,安全相对较高,可是假如网站拜访量较大的时分,session的存储机制会占用服务器较多内存,所以一起需求考虑功用优化的问题
Q3:什么是socket?
网络中的进程一般是经过socket通讯的,socket是在应用层和TCP/IP协议通讯之间的笼统层,它把TCP/IP层复杂的操作笼统为几个简略的接口,供应用层调用以完成进程在网络中通讯,socket函数的实质是操作文件,如读写I/O、翻开进程、封闭进程。
(5)Git常识
Q1:gitpull和gitfetch之间有什么差异?
简略来说,gitpull是gitfetch+gitmerge。
1.gitpull会拉取一切的提交而且合并到当时处理的分支中,假如没有细心管理分支,可能会频繁遇到抵触。
2.gitfetch会拉取方针分支中一切本地不存在的提交,将这些长途提交存储到本地库房中,但不会把这些提交合并到当时分支中,假如跟小伙伴的代码存在较大可能心时,建议先用gitfetch拉取代码,后用gitmerge合并代码
Q2:git怎么进行版本回退
gitreset–hardHEAD^
Q3:gitlab怎么进行分支保护和代码检查
Gitlab是布置在自己服务器的一套git代码版本管理体系,布置完毕后让自己的成员在该网址上注册好账号,管理员树立对应的项目组而且拉相关成员进组,需求给对应的成员设置好角色,由于角色不同决定了对整个项目的操作权限不同。代码分支管理在设置中的ProtectedBranches,在Allowedtomerge下选择对应角色的成员既有权力管理master分支,而且在其他成员将自己分支合并到master分支之前做好代码检查工作。
四、测验开发面试题
Q1:接口测验如例怎么设计
Q2:自动化结构的搭建思路,别离有什么模块,效果是什么?
用例模块、发送恳求、大局配置文件、数据自动采集、读取数据、接口断语、日志记载、测验报告
Q3:测验数据有几种,别离放哪里?
大局数据:写入配置文件一次性耗费数据:从随机函数生成需求被接口屡次读取数据:参数化,放入excel、json、或许从数据库读取接口数据文件:数据驱动、运用excel管理测验接口
Q4:影响数据流的接口怎么处理,比方删去这种接口怎么测验
办法一:最终单独处理这个接口,单独造独立的数据去删去,丰厚数据
办法二:衔接到数据库中操作
Q5:测验脚本数据怎么规划设计
V1.0:跑通一个流程的接口(约10个),常量数据脚本
V2.0:跑通一个流程的接口(约10个),数据参数化,数据与脚本分离
V3.0:跑通一切接口,数据参数化,数据与脚本分离
V4.0:多组有用数据,确保一切接口能悉数跑通且提高覆盖率
V5.0:多组无效数据,加强测验覆盖率
Q6:运用什么结构完成自动化?讲述运用进程
unittest、pytest、postman、jmeter、Selenium、Appnium等
Q7:unittest、pytest结构对比
pytest相较于unittest最为跳跃的一点应该便是fixture机制。对于unittest来说,每个用例的类中都需求去写入setUp和tearDown。也便是咱们所说的前置和后置,而不行避免的,很多用例的前置和后置都是一样,重复的复制粘贴致工作量添加,代码量也添加。
Q8:pytest的@pytest.mark.parametrize装修器效果是什么?
@pytest.mark.parametrize装修器能够让咱们每次参数化fixture的时分传入多个项目。回想上一节,咱们参数化的时分只能传入1个字符串或许是其他的数据方针,parametrize每次多个参数,愈加灵敏。
Q9:postman+Newman相关问题
是否会运用postman完成接口的基本调试?
变量有几种,效果域别离是什么?
怎么运用变量?
sandbox怎么运用,怎么完成断语
怎么完成接口参数化,以及接口传递
Newman的效果是什么,怎么运用
怎么输出html格式的测验报告
Newman是否能够改造
Q10:selenium常用的八大定位法
Id、name、link_text、partial_link_text、tag_name、class_name、css_selector、xpath
Q11:GUI测验怎么提高脚本的稳定性
不要右键复制xpath(十万八千里那种途径,肯定不稳定),自己写相对途径,多用name定位,sleep等候尽量少用(影响履行时刻)、运用WebDriverWait,结合WebDriverWait和expected_conditions判别元素办法,自己封装一套定位元素办法
五、扩展问题
Q1:安全测验有哪些方面?
XSS、CSRF进犯、SQL注入进犯、web木马进犯、文件上传进犯、账密暴力破解、验证码缺陷、用户权限、端口扫描、服务检测、中间件安全。对这块有要求的小伙伴找本书看看,推荐《web安全防护攻略根底篇》
Q2:简述功用测验、负载测验、压力测验
功用测验是经过自动化的测验东西模拟多种正常、峰值以及反常负载条件来对体系的各项功用指标进行测验。
负载测验-核实在坚持配置不变的情况下,测验方针在不同操作条件(如不同用户数、业务数等)下功用行为的可接受性
压力测验:压力测验主要是为了测验硬件体系是否到达需求文档设计的功用方针,譬如在一守时期内,体系的cpu运用率,内存运用率,磁盘I/O吞吐率,网络吞吐量等,压力测验和负载测验最大的差别在于测验目的不同。
Q3:常用的功用指标的称号与详细意义。
呼应时刻、并发用户数,吞吐量,功用计数器,TPS,HPS

未经允许不得转载:IT技术网站 » java测试(java开发转测试需要学什么)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载