2022年最新软件测试面试题+答案解析(每日20题,持续更新中)【二】
前言
好久不见,甚是想念。各位朋友们,我又携带着最受大家欢迎的面试题第二弹回来了,可能会有朋友要问了:哎呀,你咋不更了,这不是上次那一份资料用完了嘛,这不,我又厚着脸皮去问我们公司的主管:Boss,给我份面试题呗。Boss瞥了我一眼,冷笑了一下就不做声了,最终在我答应带他上白银,他才拿了这份资料给我٩(๑❛ᴗ❛๑)۶老规矩:一天20题,喜欢的朋友点个关注就不会错过我的更新了,关注我,带你装*,带你飞。
文末有福利!!!
二十一、挑一个你项目中你负责的比较小的模块并且跟我介绍一下,然后说一下你针对这个模块的测试设计了哪些异常用例?
学生信息绑定模块—学籍号正常16位
异常用例:
① 学籍号为空,相应提示信息;
② 学籍号少于16位,相应提示信息;
③ 学籍号输入字符、特殊字符,相应提示信息;
④ 未存在的学籍号,相应提示信息;
⑤ 重复绑定学籍号,数据是否重复;
⑥ 不同网络条件下学籍号绑定;
⑦ 大数据量下绑定的响应时间;
二十二、微信发红包的测试用例?
功能
- 在红包钱数,和红包个数的输入框中只能输入数字
- 红包里最多和最少可以输入的钱数 200 0.01
- 拼手气红包最多可以发多少个红包 100
- 超过最大拼手气红包的个数是否有提醒
- 当红包钱数超过最大范围是不是有对应的提示
- 当发送的红包个数超过最大范围是不是有提示
- 当余额不足时,红包发送失败
- 在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,
- 1是否可以输入它们的混合搭配
- 输入红包钱数是不是只能输入数字
- 红包描述里许多能有多少个字符 10个
- 红包描述,金额,红包个数框里是否支持复制粘贴操作
- 红包描述里的表情可以删除
- 发送的红包别人是否可以领取
- 发的红包自己可不可以领取 2人
- 24小时内没有领取的红包是否可以退回到原来的账户
- 超过24小时没有领取的红包,是否还可以领取
- 用户是否可以多次抢一个红包
- 发红包的人是否还可以抢红包 多人
- 红包的金额里的小数位数是否有限制
- 可以按返回键,取消发红包
- 断网时,无法抢红包
- 可不可以自己选择支付方式
- 余额不足时,会不会自动匹配支付方式
- 在发红包界面能否看到以前的收发红包的记录
- 红包记录里的信息与实际收发红包记录是否匹配
- 支付时可以密码支付也可以指纹支付
- 如果直接输入小数点,那么小数点之前应该有个0
- 支付成功后,退回聊天界面
- 发红包金额和收到的红包金额应该匹配
- 是否可以连续多次发红包
- 输入钱数为0,"塞钱进红包"置灰
性能
- 弱网时抢红包,发红包时间
- 不同网速时抢红包,发红包的时间
- 发红包和收红包成功后的跳转时间
- 收发红包的耗电量
- 退款到账的时间
兼容
- 苹果,安卓是否都可以发送红包
- 电脑端可以抢微信红包
界面
- 发红包界面没有错别字
- 抢完红包界面没有错别字
- 发红包和收红包界面排版合理,
- 发红包和收到红包界面颜色搭配合理
安全
- 对方微信号异地登录,是否会有提醒 2人
- 红包被领取以后,发送红包人的金额会减少,收红包金额会增加
- 发送红包失败,余额和银行卡里的钱数不会少
- 红包发送成功,是否会收到微信支付的通知
易用性(有点重复)
- 红包描述,可以通过语音输入
- 可以指纹支付也可以密码支付
二十三、装饰器有了解吗?简单介绍一下装饰器
装饰器是将另一个函数作为输入并修改/扩展其功能的函数;可以抽离出大量与函数功能本身无关的雷同代码并继续重用;
二十四、有用过什么样的装饰器?举个例子
1、Python3+selenium-unittest之装饰器(@classmethod)
setup():每个测试case运行前运行
teardown():每个测试case运行完后执行
setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次
二十五、有了解过公钥私钥吗?
一、公钥加密
假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。
我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用
数字2,就是我的私钥,来解密。这样我就可以保护数据了。
我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,
只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。
二、私钥签名
如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
道我的公钥是1,那么这种加密有什么用处呢?
但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
解密看是不是c。他用我的公钥1解密,发现果然是c。
这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。
三、公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。
二十六、list 怎么去重?
1、使用两个for循环遍历集合所有元素,然后进行判断是否有相同元素。两两比较如果相等的话就删除第二个。
2、背过特性的都知道HashSet可以去重,把List集合所有元素存入HashSet对象,接着把List集合元素全部清空,最后把HashSet对象元素全部添加至List集合中,这样就可以保证不出现重复元素。
3、对于大数据,采用Stream相关函数去重是最简单的了。Java8中Stream提供了对List 做简单去重的处理,通过调用distinct方法,可以实现对类型Integer、Long、Char 等基本类型以及String类型的去重。需要注意的是,无法对自定义对象进行去重处理。
4、Lambda表达式是Java8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。利用Lambda表达式能很方便的对list对象进行去重,而且不会造成代码入侵。不过,Lambda表达式只能出现在目标类型为函数式接口的上下文中。
二十七、有一个字典,反转 key-value
a={1:10,2:20,3:30}
b={v:k for k,v in a.items()}
print()
print(a.items())
print(b)
二十八、有用过列表推导式吗?
回来查下推导式,原来就是常用的list的for in for,有点想笑,这么简单的列表创建问题问得让我摸不着头脑,有些术语听起来很深奥,其实就是常用的表达式,这好比你去问别人设计模式,你用过什么设计模式,什么工是工厂模式?什么是单例模式等等,虽然对术语可能一知半解或者解释不清,其实就是常常在用的。
newlist = [i for i in range(1, 100) if i%3==0]
二十九、你对 python 面向对象有什么概念?能举一个测试工作中用到面向对象的场景吗?
Selenium框架中提取公共功能,比如登录功能;说明:我们把一些公共的功能,可以提取出来,并且在公共的功能中创建属于这个对象的属性,然后其他的方法就可以使用这个对象的属性了
面向对象编程其实就是:类 + 对象
三十、你测试的话,会怎么样设计测试用例?就是说测试用例会有哪些文件?比如说正常的 python 文件和正常的数据文件,还有其他的吗?
测试报告文件、测试日志文件、
三十一、有用过 Git 吗?
三十二、数据驱动你是怎么理解的?
使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据。可以将测试脚本与测试数据分离,使得测试脚本在不同数据集合下高度复用。不仅可以增加复杂条件场景的测试覆盖,还可以极大减少测试脚本的编写与维护工作。
Python下的数据驱动模式(ddt)库,结合unittest库以数据驱动模式创建测试用例。
ddt库包含一组类和方法用于实现数据驱动测试。可以将测试中的变量进行参数化。
三十三、你是用什么实现的引入外部数据集合?
通过Python下的数据驱动模式(ddt)库,获取外部excel数据,对变量进行参数化;
三十四、假如有这样一个场景,一个登陆我们写 10 条 case,但是逻辑都是一样的,但是自动化的话我不可能同样的逻辑赋值十遍,那你有什么办法来解决这个问题?
业务逻辑是相同的,其中登录的测试数据是不同的;可以使用数据驱动模式,比如python下ddt库对测试数据进行变量参数化;
三十五、unittest 在运行过程中有一些不优美的地方,你当时在项目中使用的时候有没有发现什么?
执行顺序是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z;只能通过TestSuite类的addTest方法,按顺序加载测试用例;或者通过修改函数名的方式;
三十六、你当时用的是 unittest 框架,那你的用例和数据是怎么去隔离开的?
DDT数据驱动模式;业务逻辑和测试数据分离;通过ddt类库读取excel中的数据实现变量的参数化,达到不同测试用例的运行;
三十七、HTMLTestRunner 这个第三方库的报告还是比较简陋的,你当时生成的报告里面主要体现了哪些东西?
测试人员;开始时间;合计耗时;测试结果统计(通过,失败,通过率);每条失败用例的断言信息;
三十八、HTML 测试报告怎么可以看起来更直观?一个不懂你项目的人看到你的测试报告也能立马知道你出错的原因是什么??
用Pytest+Allure生成可视化的HTML测试报告;框架代码中设计try exception和断言,报告中显示失败的结果信息;
三十九、有用到关键字驱动吗?
四十、两个接口的返回值要做一个字段的对比,你用 Python 会怎么去做?
尾言
突发奇想,咱们面试题已经开始了第二期, 有的朋友和我说,能不能把面试题做个合集,我拍脑一想,也是啊,为什么不做个合集呢,于是乎,我就把资料进行了打包,
需要的朋友可以加文末卡片中的微信,免费领取!!!
相关文章
- 前端高频面试题(二)(附答案)
- python常用面试题_Python+Selenium 常见面试题整理[通俗易懂]
- 百度前端一面常见面试题(附答案)
- 《面试季》经典面试题(三)
- 滴滴前端二面react面试题总结
- 数据库面试题+sql语句解析
- 69道 Spring 面试题及答案
- Redis高频面试题大集合
- vue双向绑定原理面试题_面试可以记笔记吗
- JAVA面试题库_jpa面试题
- Hive SQL 大厂必考常用窗口函数及相关面试题
- 2022最新SpringCloud面试题附完整答案
- 图解面试题:如何实现精细化运营?
- 90%的前端开发都答不上来的js异步面试题
- 腾讯前端vue面试题合集2
- C++面试必备:常见C++面试题汇总及详细解析
- 手撕面试题ThreadLocal!!!
- Redis常见面试题解析(redis常见面试题)
- 突破mysql面试:sql面试题解析(mysqlsql面试题)
- 目Oracle应聘者的面试考试之路(oracle 公司面试题)
- Redis面试题及深度解析(redis面试题及分析)
- Redis面试指南100道有趣的回答(redis面试题100题)
- Redis限流知识解析了解这些面试题吧(redis限流面试题)
- 题解析Redis缓存雪崩的面试题(redis缓存雪崩面试)
- 关于访问控制的一首PHP面试题(对属性或方法的访问控制)