招商银行笔试题目:
笔试题库:
1.测试流程,静态测试和动态测试的区别?
静态测试和动态测试的区别:是否执行代码,执行代码是动态,不执行是静态人工检查
2.http协议的标识符有哪些? 什么含义,TCP连接两台设备间通过一一连接,TCP报文头部相关的,结构,长度,2层循环计算题,除法取余数运算?
URL:统一资源定位符,用于标识该地址的唯一归属
- 方法(Method):
GET:用于请求获取指定资源。例如,在浏览器中输入网址就是发送一个 GET 请求来获取网页内容。
POST:用于向指定资源提交数据,通常用于表单提交。
PUT:用于向服务器上传指定资源的最新内容。
DELETE:用于删除指定的资源。
HEAD:类似于 GET 请求,但只返回响应头信息,不返回响应体。
OPTIONS:用于获取服务器支持的 HTTP 请求方法。
- 状态码(Status Code):
200 OK:表示请求成功,服务器已成功处理了请求。
404 Not Found:表示服务器未找到请求的资源。
500 Internal Server Error:表示服务器内部错误,无法完成请求。
- 首部字段(Header Field):
Content-Type:指定请求或响应主体的媒体类型。
User-Agent:标识发出请求的客户端类型(如浏览器类型、操作系统等)。
Referer:表示当前请求的来源页面。
TCP :报文结构:源地址:ip mac(32)目的ip+mac(32),标准长度20字节就是20*8=160位
A%b
3.JavaScript支持的数据类型:
8种数据类型:基本类型1、空null 2、布尔型:TRUEorFalse 3、字符串:string 4、数字型:12345 5、undefined
引用类型:6对象object,7数组(array,数组下标是从0开始,举例let arr = [1, 2, 3];
)
特殊类型8、符号Symbol(ES6引入,举例let s1 = Symbol9、函数function)function add(a, b)
)
4.ABD 简称?
Android bridge debubg :andiroid调试工具,用来进行安卓设备的调试使用的,sdk底层代码调试使用的;使用链接:Android Debug Bridge的使用-CSDN博客;
5.安卓自带的压测工具有哪些?selenium通过什么协议与service连接?
1)Monkey 2)HTTP协议
Selenium通过JsonWireProtocol和HTTP协议与service连接。
1JsonWireProtocol:这是Selenium用于与远程服务器进行通信的Web服务协议,通过HTTP请求完成与远程服务器的交互。
HTTP协议:Selenium代码与浏览器驱动程序之间通过HTTP协议进行数据交互,这种通信方式不关心客户端的具体形式,只要数据的格式和协议能够被服务端解析即可。
6.自动化测试效率怎么提高?简述下自动化测试中数据驱动的理解?
答:效率提升:1.选择合适的测试工具 2.搭建稳定的测试平台或者测试环境 3、编写可维护的自动化脚本,维护方便,定义明确 4、批量执行或者多脚本并行减少执行耗时 5、自动化执行与持续集成系统连接,出现BUG自动触发跟踪减少分析用时 6、选择合适的测试数据节约测试时间 7、脚本定期的维护更新;
2】数据驱动:数据驱动测试是一种测试方法,它的核心思想是通过不同的测试数据来验证同一个测试逻辑,数据输入验证自动化测试的准确性;
7.Web端自动化测试工具selenium方面:原理,元素定位的八种方法,要点分别是什么;优缺点,支持的脚本语言有哪些,哪些浏览器支持哪些浏览器不支持等?
Selenium提供了八种元素定位方法,这些方法包括ID定位、Name定位、Class定位、Tag Name定位、Link Text定位、Partial Link Text定位、CSS Selector定位和XPath定位。 这些方法各有其优缺点,适用于不同的场景和需求。
语言:1. Java2. Python3. PHP4. JavaScript5. Perl6. Ruby 7. C#
支持的浏览器:包括IE、Mozilla Firefox、Safari、Google Chrome、Opera、Edge等。
· ID定位:通过元素的ID属性进行定位,是最直接、最快速的方式。使用find_element_by_id方法。优点是速度快,因为ID是唯一的。缺点是如果页面上没有明确的ID或者ID不唯一,则无法使用这种方法。
· · Name定位:通过元素的Name属性进行定位,使用find_element_by_name方法。优点是简单易用,适用于有name属性的元素。缺点是需要保证name值唯一,否则定位失败。
· · Class定位:通过元素的Class属性进行定位,使用find_element_by_class_name方法。优点是可以通过类名找到多个元素,适用于有多个相同类名的元素。缺点是如果类名不唯一,可能会导致定位错误。
· · Tag Name定位:通过元素的Tag Name进行定位,使用find_element_by_tag_name方法。优点是简单快速,适用于根据元素类型进行定位。缺点是如果页面上有多个相同类型的元素,这种方法可能会返回多个结果。
· · Link Text定位:用于定位超链接元素,通过完整的链接文本进行定位,使用find_element_by_link_text方法。优点是直接明了,适用于超链接文本唯一的情况。缺点是如果链接文本不唯一,则无法准确定位。
· · Partial Link Text定位:通过链接文本的部分内容进行定位,使用find_element_by_partial_link_text方法。优点是适用于链接文本较长或经常变化的情况。缺点是对文本变化敏感,需要定期更新测试脚本以适应变化。
· · CSS Selector定位:通过CSS选择器进行定位,是一种灵活且强大的选择方式。优点是功能强大,可以选择几乎所有的HTML元素。缺点是编写复杂的CSS选择器可能需要一定的学习成本,且执行速度可能不如XPath快。
· · XPath定位:通过XPath表达式进行定位,是一种非常灵活且功能强大的选择方式。优点是能够精确地选择几乎任何类型的元素,即使是在复杂的DOM结构中也能找到目标元素。缺点是编写XPath表达式可能比较复杂,且执行速度相对较慢,因为需要遍历整个DOM树来查找匹配的元素
·
8.手机端自动化测试工具appium方面:原理,元素定位的八种方法,要点分别是什么;优缺点,支持的脚本语言有哪些,哪些浏览器支持哪些浏览器不支持等?
Appium的原理是基于WebDriver协议,用于自动化测试移动应用程序的工具。它支持iOS和Android平台,允许用户使用类似浏览器的自动化测试脚本来测试移动应用。Appium通过模拟用户与移动应用的交互,如点击、滑动等操作,来测试应用的性能和用户体验。
Appium支持多种脚本语言,包括但不限于Ruby、Python、Java、JavaScript、Objective C、PHP、C#和Robot Framework。这些语言可以用来编写自动化测试脚本,实现对移动应用的自动化测试。Appium的跨平台特性使其能够在不同的操作系统上运行,包括Android和iOS。此外,Appium还支持多种浏览器,包括但不限于Chrome和Firefox,尽管具体支持情况可能会因浏览器版本和配置而异。
Appium的元素定位方法主要包括八种,这些方法大多继承自WebDriver,但针对移动应用的特点进行了扩展和优化:
1.ID定位:通过元素的ID属性进行定位,这是最常用且推荐的方法,因为ID属性具有唯一性,不易受元素位置变化的影响。
2.Class Name定位:通过元素的类名进行定位,适用于类型较多的元素。
3.XPath定位:使用XPath表达式进行元素定位,适用于复杂的选择和定位。
4.Text定位:通过元素的文本内容进行定位。
5.Image定位:通过图像识别进行元素定位,适用于需要视觉元素匹配的场景。
6.Accessibility ID定位(Content-Desc):通过元素的描述性文本进行定位,适用于需要描述性文本作为标识的元素。
7.Android UI Automator定位:专为Android平台设计的UI Automator框架提供的定位方法。
8.其他属性定位:如resource-id、className等,根据元素的特定属性进行定位。
9、自动化测试方面:自动化测试的原理,哪些场景适合做自动化测试,哪些场景不适合
原理:以人为驱动的测试行为转化为机器执行的过程
自动化测试适用于那些需求稳定、需要重复执行相同测试,测试流程固定场景的场合,而不适合需求频繁变更或高度依赖人工判断和交互的测试场景
10.widows 消息机制描述(选择题)?
答:1、消息的接受,发送,处理
包括窗口和系统消息,消息的类型传递方式和处理函数
11.关于电影购票手机APP 的测试点?【买票,退票,登录,优惠,支付,订单管理,设备机型处理】
答:1、影片信息准确和完整性 2、选座功能准确和多人选座是否及时处理 3、支付流程的安全和稳定性 4,订单管理功能是否正常 5优惠活动的结算和显示是否正确, 6 用户注册登录的密码流程和安全性验证 7,界面是否对不同机型兼容,响应是否及时 8,退票和改签功能是否正常 9影片搜索功能是否正确
12.数据库方面: 4表链接和3层子查询,关键字驱动、数据驱动的理解:
4层链表使JOIN操作,根据条件不同进行连接;
3层子查询是子查询中再嵌套子查询,用于复杂的数据筛选和处理;
关键字驱动,使用关键字描述测试步骤和操作
数据驱动:不同数据驱动相同的测试逻辑,验证测试逻辑正确
13.C语言方面,循环、排序、指针,运算方面(绝对值,除法等):
14.sql题?
如:1、给一个表,写个语句查数据;
SELECT * FROM your_table;(假设表名是你的表)
2、关键字查询(根据关键字的最后两个字母进行升序排列);
SELECT * FROM my_table ORDER BY RIGHT((keyword_column, 2) ASC从右边的2列字母进行排序,按照ASC码升序排列;
3、A大于 B选择 A,否则选择 B,B大于C选择B否则选择A,写出语句;
select (case when a>b then a else b end),
(case when b>c then b esle a end)
from table_name
15、二分法编程:
def binary_search(arr, x):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
low = mid + 1
else:
high = mid - 1
return -1
16.设计用例:年月日,输入和输出结果
输入正确的年月日;输入无效的年-1年/0年;输入无效的月,13月;输入无效的日,32日,0.1日均需要提示错误重新输入;
17.设计用例:一个车载APP,可以使用支付宝,余额宝,银行卡,储蓄卡支付,用户自定义顺序支付等,写出测试点:
1、支付宝和余额宝支付可以正常跳转到支付宝界面,支付成功后,返回支付界面显示正确,如果密码错误提示重新支付
2、调整银行卡和储蓄卡界面,支付正确正常返回,支付错误提示重新输入支付密码,超过次数支付失败
3、支付金额需要正确,输入的支付密码安全性,支付时网络不佳,中断,余额不足等异常情况自定义支付的功能是否生效,异常情况下是否正常,支付成功和失败的提示信息是否正常;
4、
18.设计用例:天数范围1到31,月份是1到12,年份是1986到 2020
输入合法组合,验证输出结果是否正确,输入无效的值,分别输入,组合输入,预期提示错误等等
19.设计用例:一个注册信息的流程,需要输入手机号,验证码,点击注册进行注册,根据场景,设计尽可能完整的测试用例
20、计算100-999的水仙花数,没有要求语言(简答题-编程题)
21.打印99乘法表,没有要求语言(编程题)?
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}{i}={i * j}“, end=”\t")
print()
22.编程题,一个老头喝酒,第一天喝一半多一口,第234天都这样,第五天剩下一口,问一坛酒可以喝多少口;
def total_drinks():
remaining = 1
for day in range(4, 0, -1):
remaining = (remaining + 1) * 2
return remaining
print(total_drinks())
23.请写一个函数,在不转换为字符串的情况下,验证这个数字是否为回文数。即正序和倒序数值相同;
24.围绕银行的付款功能和接口进行测试分析;
功能测试:包括正常付款、退款、超额付款、付款限额等。
• 性能测试:付款的响应时间、并发处理能力。
• 安全测试:数据加密、身份验证、权限控制。
• 接口测试:与外部系统的交互是否正确。
• 兼容性测试:不同操作系统、浏览器的支持。
• 异常测试:网络中断、服务器故障时的处理
25.给一串英文编程统计每个单词出现的次数并打印;
26.数据库有个日期表,有一个日期字段,要你加一个字段判断第一个字段是星期几韵
ALTER TABLE your_table
ADD day_of_week VARCHAR(20);
UPDATE your_table
SET day_of_week = DAYNAME(date_column);
二、单项选择:
4095 1、假设用12个二进制位表示数据。它能表示的最大无符合整数为: C A2047 B2048 C4095 D4096
3、在 Loadrunner中,设计基于目标的场景时,如果一个项目对用户数的要求比较高时,最好以(用户并发数 )作为性能目标。
3、(B )定义了一个保留2位小数位且字段长度为10位的浮点型字段。A decimal(8,2) B decimal(10,2) C decimal(12,2) D decimal(2,10)
4、下面程序的输出结果是(B) Main( )
Int x=5,y,lf(x>0) y=1; y=0; lf(x<0) y=-1;
Printf( “ %d ”,y)
A-1B0C1D5
5、下列常用的测试用例设计技术中,不属于白盒测试技术的是D) A信息流分析法B数据流分析法C循环覆盖测试D状态图法
6、操作系统的主要功能有哪些? 进程管理、存储管理、设备管理、文件管理、作业管理
7、一个表达式为了达到100%覆盖率至少要设计多少条测试用例:2条,取边界值以及不符合的值
8、自动化测试框架定位控件方式:
自动化测试框架中,定位控件的方式主要包括以下几种:12
通过ID定位:每个元素应该有一个唯一的ID值,因此这是一种可靠的定位方法。格式为driver.findElement(By.id(“ID属性对应的值”))。
通过Name属性值定位:适用于通过元素的name属性值进行查找。格式为driver.find_element(By.NAME, ‘名称’)。
使用CSS Selector定位:通过编写或复制CSS选择器表达式来定位元素。格式为driverb .findElement(By.cssSelector(“css表达式”))。
使用XPath定位:通过编写或复制XPath表达式来定位元素。格式为driver.findElement(By.xpath(“xpath表达式”))。
通过Link Text定位:适用于通过链接的文本信息查找元素。格式为driver.findElement(By.linkText(“链接的文本信息”))。
9、黑盒自动化覆盖率计算方法:自动化脚本/总脚本,需求的满足比例,功能点的执行比例
10、产生系统死锁的原因? C
A、进程释放资源 B、一个进程进入死循环 C、多个进程竞争,资源出现循环等待 D、多个进程竞争共享型设备
11、软件缺陷理解:不符合预期或者规格说明的问题,可能导致软件程序中的问题,功能不准确,用户体验差,规格错误等问题,会影响软件质量与实际客户使用
12、网页自动化主要用到什么模块:
网页自动化主要用到的模块包括Selenium
13、界面自动化测试适合什么测试(自动化相关题至少出现3题)
业务流程比较固定,需求稳定且需要进行频繁回归测试
14、缺陷报告:发现缺陷的环境,缺陷的复现步骤以及截图,预期结果与实际结果,缺陷的状态,设备信息,日志文件,缺陷等级,解决时间,软件版本,提交人,解决时间等一些详细信息
15、Ping 发送什么类型的报文:ICMP 请求和应答报文
16、等价类:等价类划分法包括有效等价类和无效等价类,前者代表对程序有效的输入,后者代表对程序无效的输入。在设计测试用例时,需要考虑输入的条件和规则,如输入值的范围、类型、集合、布尔表达式等,根据这些条件划分等价类,并从每个等价类中选择代表性的数据进行测试。此外,等价类划分法可以与边界值分析结合使用,以更全面地测试软件
17、测试关键的问题是什么:主要1、确定测试目标,选择合适的测试方法,设计有效的用例,评估测试结果,管理测试过程中遇到的风险,评估风险等
18、逻辑覆盖测试:可以分为语句覆盖、判定覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖等。
19、测试开发阶段的行为:设计测试用例,开发测试脚本,搭建测试环境,准备测试数据,开发测试工具,测试用例评审等等,制定详细的测试计划
20、测试计划相关:测试目标,范围,策略,资源(设备,人力,时间等资源)测试进度安排,测试风险以及应对措施
21、菜单测试:菜单显示是否正确,操作响应是否及时,菜单跳转是否准确,菜单权限是否有效,菜单提示是否正确
22、单元测试、集成测试区别(缺陷方面):对于缺陷来说,单元测试产出的BUG是针对某一功能的BUG,定位解决范围小,集成测试产出的缺陷有可能和整个系统环境相关,可能是不同系统交互才会产生的BUG,更复杂定位更困难;单元内部的逻辑错误算法边界值错误,系统模块直接的接口错误,传递错误,集成后的功能错误等;
23、冒烟测试、回归测试区别:冒烟测试是在版本初期基本功能基本测试通过可以进入下一阶段测试,属于前期,产出的BUG比回归测试多,回归测试软件版本已经差不多稳定验证新的修订会不会引入新的BUG,执行时间长,执行范围广,只有一小部分的问题需要回归测试一般来说,回归测试在冒烟测试之后,版本也比冒烟测试稳定很多;
24、测试过程为什么制定执行策略:1、可以明确测试目标和重点,2、合理安排测试计划,保证测试资源合理利用3、提高测试以及测试团队的效率 4降低风险,重要功能优先测试,保证使用
25、测试按步骤分哪几个阶段测试步骤:测试计划,用例设计,环境搭建,测试执行,测试结果定位评估,BUG跟踪管理,测试总结,回归验收,测试总结;阶段分为:单元测试,集成测试,系统测试,验收测试,回归测试
26、Intent 基本服务中远程登录命令是什么:telnet、ssh
三、多项选择题:
1、下列关于图形矩阵的说法正确的是(A)
A图形矩阵可以用来辅助设计基本路径测试的用例
B图形矩阵每行对应一个结点,每列对应一条边
C图形矩阵的矩阵元素的值与结点间的连接无关
D对每个矩阵项可以加入连接权值
-
贷款期限分类通常分为短期贷款(1 年以内,含 1 年)、中期贷款(1 年以上,5 年以下,含 5 年)、长期贷款(5 年以上)。
-
案例设计方法包括等价类划分法、边界值分析法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
-
缺陷描述通常包含缺陷的概要描述、发现缺陷的环境、具体的缺陷表现、缺陷的严重程度、缺陷的优先级、缺陷的重现步骤等信息,以便开发人员能够清晰准确地理解和修复缺陷。
-
错误推测法是基于经验和直觉推测程序中可能存在的各种错误,从而有针对性地设计测试用例的方法。
-
网络兼容性测试是检查软件在不同网络环境(如不同的网络协议、带宽、网络拓扑结构等)下的运行情况,以确保软件能够在各种网络条件下正常工作。
-
软件测试原则包括:尽早测试原则、全面测试原则、独立测试原则、2/8 原则、杀虫剂悖论原则、测试活动依赖于测试背景等。
8、结算方式主要包括:(A,B ,C ):银行结算方式多样,包括银行汇票、商业汇票、银行本票、支票、信用卡、汇兑、委托收款、托收承付和信用证等
A、托收承付 B、委托收款 C、信用卡支付 D、汇税
9、白盒测试方式有哪些
白盒测试方式主要有逻辑覆盖法(包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖)、基本路径测试法、循环测试法等
四、简答题:
1、仔细阅读下面的需求及设计出的测试需求点。要尽可能全面地测试该需求,还需要哪些测试需求点?请补充完整。
需求:手机充值功能
详细步骤:第一步:进入手机充值页面;
第二步:输入要充值的手机号; 输入正确和错误的手机号码,输入非法符号的手机号码,输入,超长或者过短的手机号码
第三步:选择要充值的金额或输入要充值的金额(下限50,上限 1000);,输入-1,0,50,1000,10000的重值金额
第四步:选择充值按钮,并输入密码;输入密码错误,输入空白键,不输入直接点充值按钮,输入非法的充值按钮,网络异常时候的充值情况,查看系统的提示和反馈;输入充值成功的手机号再次充值查看是否可以正常充值
第五步:前台显示充值成功,并收到充值成功短信,完成充值。验证充值金额延迟时间,充值金额是否正常;检查充值导致的短信内容金额,格式,时间是否正常
2、数据库中有两张表
Storeinfo(store_name,sales_amount,date),Geography(region_name),
第一张表存储商店每天销售额,第二表说明商店分别属于哪个区域,
请用一条SQL 语句列出区域不为 SHENZHEN的店名及销售额
SELECT store_name, sales_amount
FROM Storeinfo
WHERE store_name NOT IN (
SELECT store_name
FROM Storeinfo
JOIN Geography ON Storeinfo.store_name = Geography.store_name
WHERE region_name = ‘SHENZHEN’
);
五、编程题:
1、给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums=<2,7,11.15>, target=9因为 nums<0>+nums<1>=2+7=9所以返回<0,1>
def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return []
nums = [2, 7, 11, 15]
target = 9
print(twoSum(nums, target))
2、有个年度统计表,结构如下:
Select Year
MAX(CASE WHEN month =1 THEN amount END) AS m1,
MAX(CASE WHEN month=2 THEN amount END) AS m2,
MAX(CASE WHEN month=3 THEN amount END) AS m3,
MAX(CASE WHEN month=4 THEN amount END) AS m4,
From your_table_name
GROUP BY Year;
3、给定一个字符串,返回这个字符串中出现的没有重复字母的连续子串的长度,如:给定签串“hello”,返回 3;给定字符串“aaaaaa”,返回1
笔试采用的机考方式,分数40分左右,建议多看看C++,不论C++/ C/Python /Java的笔
备注:标黄内容为补充题
问题 1
问题 3
def lengthOfLongestSubstring(s):
max_length = 0
start = 0
used_char = {}
for i in range(len(s)):
if s[i] in used_char and start <= used_char[s[i]]:
start = used_char[s[i]] + 1
else:
max_length = max(max_length, i - start + 1)
used_char[s[i]] = i
return max_length
print(lengthOfLongestSubstring(“hello”))
print(lengthOfLongestSubstring(“aaaaaa”))