【蚂蚁金服】
一、自我介绍
二、Tcp和udp:
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路
3.运输层:主要为两台主机上的应用提供端到端的通信
4.应用层:负责处理特定的应用程序细节
三、TCP三次握手和四次分手
三次握手
主动方A收到了FIN信号,返回ACK信号给被动方B,表示从被动方B到主动方A的连接关闭了,也就是被动方不能再发送数据给主动方
四、Dns的作用
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串
DNS系统:通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析),DNS协议运行在UDP协议之上,使用端口号53
五、接口和抽象类的区别
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板
六、怎么理解测试这项工作的
就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别
七、Qtp怎么使用的
QTP:QuickTest Professional,关键字驱动(如控件)的功能测试工具,能够对各种编程语言开发的软件进行功能测试,可以用VBScript脚本语言编写程序
执行计划的步骤
创建测试脚本:按照计划录制脚本并保存
增强测试脚本
执行测试
分析测试结果
https://www.cnblogs.com/xiezhidong/p/6784684.html
八、写测试用例
测试用例主要由8部分构成:所属的模块、名称、编号、等级、描述、预制条件、操作步骤、预期结果
常用命令:
非xPath方式和xPath方式
十一、TestNG怎么使用???
1、Selenium是浏览器自动化工具,主要用来Web的自动化测试
TestNG是一个设计用来简化广泛的测试需求的测试框架
编写测试的过程:
编写测试的业务逻辑并在代码中插入TestNG Annotation
将测试信息添加到testng.xml文件或者build.xml中
运行TestNG
注:TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试
2、测试信息尤其是测试数据不再写死在测试代码中,好处就是修改测试数据时不需要修改代码/编译了,从而有助于将测试人员引入单元测试/集成测试
3、注解:
@BeforeSuite: 被注释的方法将在所有测试运行前运行
@AfterSuite:被注释的方法将在所有测试运行后运行
@BeforeTest: 被注释的方法将在测试运行前运行
@AfterTest: 被注释的方法将在测试运行后运行
@BeforeGroups: 被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行。
@AfterGroups: 被配置的方法将在列表中的gourp后运行。这个方法保证在最后一个属于这些组的测试方法调用后立即执行。
@BeforeClass: 被注释的方法将在当前类的第一个测试方法调用前运行。
@AfterClass: 被注释的方法将在当前类的所有测试方法调用后运行。
@BeforeMethod: 被注释的方法将在每一个测试方法调用前运行。
@AfterMethod: 被注释的方法将在每一个测试方法调用后运行。
属性:
@alwaysRun 对于每个bufore方法(beforeSuite, beforeTest, beforeTestClass 和 beforeTestMethod, 但是不包括 beforeGroups)
如果设置为true,被配置的方法将总是运行而不管它属于哪个组。
对于after方法(afterSuite, afterClass, ...): 如果设置为true,被配置的方法甚至在一个或多个先调用的方法失败或被忽略时也将运行。
@dependsOnGroups 这个方法依赖的组列表
@dependsOnMethods 这个方法依赖的方法列表
@enabled 这个类的方法是否激活
@groups 这个类或方法所属的分组列表
@inheritGroups 如果设置为true,这个方法被属于在类级别被@Test annotation指定的组
@DataProvider 标记一个方法用于为测试方法提供数据。
被注释的方法必须返回Object[][], 其中每个Object[]可以指派为这个测试方法的参数列表。从这个DataProvider接收数据@Test方法需要使用一个和当前注释相同名称的dataProvider名称
@name 这个DataProvider的名称
@Factory 标记方法作为一个返回对象的工厂,这些对象将被TestNG用于作为测试类。这个方法必须返回Object[]
@Parameters描述如何传递参数给@Test方法
value 用于填充这个方法的参数的变量列表
@Test 标记一个类或方法作为测试的一部分
@ alwaysRun 如果设置为true,这个测试方法将总是运行,甚至当它依赖的方法失败时
@ dataProvider 这个测试方法的data provider的名称
@ dataProviderClass 用于查找data provider的类。
如果不指定,将在当前测试方法所在的类或者它的基类上查找data provider。
如果这个属性被指定, 则data provider方法需要是指定类的static方法。
@ dependsOnGroups 当前方法依赖的组列表
@ dependsOnMethods 当前方法依赖的方法列表
@ description 当前方法的描述
@ enabled 当前类的方法/方法是否被激活
@ expectedExceptions 测试方法期望抛出的异常列表。如果没有异常或者抛出的不是列表中的任何一个,当前方法都将标记为失败.
@ groups 当前类/方法所属的组列表
@ invocationCount 当前方法被调用的次数
@ successPercentage 当前方法期望的成功率
@ sequential 如果设置为true,当前测试类上的所有方法保证按照顺序运行。甚至测试们在parallel="true"的情况下.
@ 这个属性只能用于类级别,如果用于方法级别将被忽略。
@ timeOut 当前方法容许花费的最大时间,单位毫秒。
@ threadPoolSize 当前方法的线程池大小。方法将被多线程调用,次数由invocationCount参数指定
注意:如果invocationCount没有指定则这个属性将被忽略
https://blog.csdn.net/lykangjia/article/details/56485295
十二、事务(DB)
四大特性:数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。原子性:指事务包含的所有操作要么全部成功,要么全部失败回滚
事务
不考虑事务的隔离性,会发生的几种问题:
事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。
MySQL数据库为我们提供的四种隔离级别:
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证
十三、假如你现在来测试登陆这个模块的话,你怎么测试
(1)基本功能测试点
(2)页面测试
(3)安全测试
十四、你是测试工程师,如何保证软件的质量
从两个角度:1.质量是全员质量,公司每个成员都有责任参与质量保证。2.从测试角度来保证质量,测试也分为多个层次。
1、质量管理
(1)代码质量:开发通过单元测试保证
(2)让用户参与UAT测试,保证用户体验(使用质量)
(3)引入QA,保存过程环节质量
(4)系统测试工程师保证系统质量满足需求
2、质量保证
(1)测试策略:质量是多维度的,功能测试、性能测试、兼容性测试等多种测试类型的结合
(2)用例质量:采用合适的用例方法,如何进行需求分析,用例评审
(3)执行质量:如何保证执行深度(界面、关联模块、数据库、日志)与广度(系统测试类型
(4)缺陷质量:Bug评审,引入合适的Bug流程
(5)过程质量:合理的软件测试流程,测试过程监控