1:请简要说明 Selenium WebDriver 的自动化测试原理?
答案: Selenium WebDriver是调用浏览器的原生接口来操作浏览器,也就是说测试脚本操作浏览器的过程就是在测试脚本中创建WebDriver对象,再通过这个对象调用WebDriver API来访问浏览器接口,从而操作浏览器的过程。

2:2:Selenium Grid的原理是什么(5分)?
答案:Selenium Grid的结构是由一个HUB节点和若干个Node节点组成,HUB用来关联各个Node的状态,并且接受远程客户端代码的调用请求,再把请求命令转发给各个Node来执行。当测试用例需要同时在多个平台和浏览器上执行时候,就可以使用Selenium Grid。

3:Fiddler如何抓到APP应用的包(5分)?
答案:
电脑上安装有fiddler抓包工具
安装有fiddler的电脑必须跟手机处在同一个网络里
在fiddler中设置好捕获https请求
配置Fiddler允许远程连接
手机上设置代理服务器,主机名是安装电脑的ip,端口是fiddler的端口。

4:接口文档中一般包含哪些哪些内容?
答案:
1:请求的URL地址
2:请求的方法
3:请求的参数(参数的名称和字段类型)
4:返回结果

5:为什么要做接口测试?平常你是怎么设计接口测试用例的(10分)?
答案:
1:  通过性验证:首先肯定要保证这个接口的功能是好的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正常的。
2: 接口的安全:
2.1 绕过验证:比如说购买了一个商品,它的价格是300元,那我在提交订单的时候,把这个商品的价格修改成3元,检查后端有没有做验证,甚至修改成负数。
2.2 绕过身份授权:比如说修改商品信息接口,那必须是卖家才能修改,那我传一个普通用户看看能不能修改成功,我传一个其他的卖家能不能修改成功。
2.3 参数是否加密:比如说我登录的接口,用户名和密码是不是加密的,如果不加密的话,别人拦截到你的请求,就能获取到你的信息,中国互动出版社的网站密码传输是明文的。
2.4 密码安全规则,密码的复杂程度校验。

3:异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验,比如说必填的参数我不填,输入整数类型的我传入字符串类型,比如长度是10,我传11,总之就是说你说怎么来,我就不怎么来。但是最主要关注以下三点,必传非传,参数类型,参数长度。

4:性能测试:
4.1接口的并发性能,比如一个账号,同时(大于2个请求),对最后一个商品下单,或者不同的账号,对最后一个商品下单。
4.2接口响应的时间,接口的响应时间太长了,肯定需要优化,一般接口响应式毫秒级别。

6:你在做性能测试时候,一般需要关注哪些指标(5分)?
答案:
1:并发用户数(要注意并发用户数、注册用户数、在线用户数的三者之间的区别)
2:响应时间(遵循2-5-8的原则)
3:TPS:每秒处理事务的必输,是衡量系统很重要的一个指标
4:点击率
5:吞吐量
6:资源使用率(包括cpu,内存,磁盘、网络)

7:jmeter断言的目的和具体步骤(5分)?
答案:jmeter中添加断言的步骤:
1:选择http request,右键add->Assertions->Response Assertion
2:添加一个Assetion Result用来查看Assertion执行结果,thread group---右键add---listen ---assertion result
运行后,如果http response中没有包含期待的字符串,那么test就会fail

8:写出下列的Linux命令(每道题2分,总共10分)?
1:如何查看所有java的进程
ps -ef | grep java

2:如何查看3306端口占用情况
netstat -anp | grep 3306

3:循环查看log2019.log最后的3行内容
tail -fn 3 log2019.log

4:显示当前系统正在执行的进程的相关信息
top

5 :如何启动和关闭tomcat服务
先cd到启动.sh文件的目录
启动tomcat: ./startup.sh
关闭tomcat: ./shutdown.sh

9:什么叫预测试,预测试是怎么进行的?预测试一般为多长时间?
答案:就是冒烟测试(smoke testing),就是对开发提交的新版本进行核心功能的测试,检查功能通不同,业务流程能不能完成,一般需要半天左右。

10:什么是测试方案?什么是测试策略?
答案:测试方案是指导我们怎么测的问题,里面的主要内容是测试点,测试策略是指导我们要测试什么方面,比如要进行功能测试、性能测试、兼容性测试等等,并且指出需要依赖于什么工具。

11:monkey你们工作中是怎么用的?
答案:我们将monkey作为一个向待测试应用发送随机的按键消息的测试工具,验证待测试应用在这些随机的输入面前是否会崩溃或者闪退。
Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

12:如何获取APP的日志?
答案:
1:在cmd命令行里,输入adb shell logcat > d:\android.log
2: 打开模拟器中App应用程序,比如QQ
3: 在cmd命令行里,结束命令,ctr+c
4:在d盘的根目录下能够android.log日志文件。

13:说5个adb shell的命令?
答案:
1:adb shell:进入连接设备的shell模式
2:adb devices:查看连接中的设备
3:adb shell logcat:捕获日志
4:adb reboot:重启安卓设备
5:adb shell monkey -p <packagename> -v 500

14:除了在真机上测试APP,你还用过什么工具测试(5分)?
答案:模拟器,和云测试平台

15:cookies机制和session机制的区别
cookies机制和session机制的区别,这个也是经常会问的
cookies数据保存在客户端,session数据保存在服务器端;
cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗;
session较安全,但占用服务器资源

16:HTTP请求报文与响应报文格式
请求报文包含三部分:
a、请求行:包含请求方法、URI、HTTP版本信息
b、请求头部(headers)字段
c、请求内容实体(body)
响应报文包含三部分:
a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应头部(headers)字段
c、响应内容(body)实体

17:oracle、sql server、mysql默认的端口号分别是多少(5分)?
oracle 默认端口号为:1521
sqlserver默认端口号为:1433
mysql 默认端口号为:3306

18:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数

19:python中列表和元祖有什么不同?
列表的值是可以改变的
不能改变项值,保证数据的安全性

20:你在工作中是如何搭建Appium环境(5分)?

1// 创建节点属性,用电脑类似于hub控制手机类似于node
         DesiredCapabilities dc = new DesiredCapabilities();2// 自动化名
         dc.setCapability("automationName", "Appium");// 苹果XCUITest 3// 系统设置
         dc.setCapability("platformName", "Android");// iOS(区分大小写) // 系统版本,可以省略
         // dc.setCapability("platformVersion", "4.4");//iOS 4// 设备名
         dc.setCapability("deviceName", "Android Emulator");// iOS Simulator// Android属性
         dc.setCapability("appPackage", "com.tencent.mobileqq");// 测试的包名
         dc.setCapability("appActivity", "");// 应用启动制作5//创建url1
 URL url = new URL("http://192.168.1.126:4723/wd/hub"); 6//创建驱动对象
         
         AndroidDriver ad=new AndroidDriver(url,dc);