AI面试

1、请你简单介绍一下软件质量的六个特征

1. 功能性:软件所实现的功能满足用户需求的程度.功能性反映了所开发的软件满足用户称述的或蕴涵的需求的程度,即用户要求的功能是否全部实现了。 
2. 可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度。可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,且反映了在故障发生时能继续运行的程度。 
3. 易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度。易使用性反映了与用户的友善性,即用户在使用本软件时是否方便。 
4. 效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度。效率反映了在完成功能要求时,有没有浪费资源。 
5. 可维修性:在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时,进行相应修改所做的努力程度。可维修性反映了在用户需求改变或软件环境发生变更时,对软件系统进行相应修改的容易程度。一个易于维护的软件系统也是一个易理解、易测试和易修改的软件,以便纠正或增加新的功能,或允许在不同软件环境上进行操作。 
6. 可移植性:从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。

2、请问你认为单元测试可行吗?

可行,单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。事前可以保证质量,事后可以快速复现问题,并在修改代码后做回归自测。可行性考虑的是要用一些可行的方法做到关键的代码可测试,如通过边界条件、等价类划分、错误、因果,设计测试用例要覆盖常用的输入组合、边界条件和异常。

 

3、请对朋友圈点赞功能设计测试用例

  

4、接口测试常见的bug有以下几个:

特殊值处理不当导致程序异常退出或者崩溃

类型边界溢出,导致数据独处和写入不一致

取值边界外未返回正确的错误信息

权限未处理,可以访问其他用户的信息

逻辑校验不完善,可以利用漏洞获取非正当利益

状态处理不当,导致逻辑出现错误

数组类型item个数为0或者item重复时程序异常退出

 

5、请你说明一下对一个页面需要进行哪些测试

1、功能测试2、界面测试3、性能测试4、安全性测试5、可用性测试6、兼容性测试7、本地化测试

 

6、如何对一个杯子检测

1.功能 (1)水倒水杯容量的一半 (2)水倒规定的安全线 (4)水杯容量刻度与其他水杯一致 (5)盖子拧紧水倒不出来 (6)烫手验证 2.性能 (1)使用最大次数或时间 (2)掉地上不易损坏 (3)盖子拧到什么程度水倒不出来 (4)保温时间长 (5)杯子的耐热性 (6)杯子的耐寒性 (7)长时间放置水不会漏 (8)杯子上放置重物达到什么程度杯子会被损坏 3.界面 (1)外观完整、美观 (2)大小与设计一样(高、宽、容量、直径) (3)拿着舒服 (4)材质与设计一样 (5)杯子上的图案掉落 (6)图案遇水溶解 4.安全 (1)杯子使用的材质毒或细菌的验证 (2)高温材质释放毒性 (3)低温材质释放毒性 5.易用性 (1)倒水方便 (2)喝水方便 (3)携带方便 (4)使用简单,容易操作 (5)防滑措施 6.兼容性 (1)杯子能够容纳果汁、白水、酒精、汽油等。 7.震动测试 (1)杯子加包装(有填充物),六面震动,检查产品是否能应对铁路/公路/航空运输。 8.可移植性 (1)杯子在不同地方、温度环境下都可以正常使用。

7、可以请你介绍一下自己的专业技能吗?

8、你觉得自动化测试有什么意义,需要做些什么

自动化测试的意义在于 1、可以对程序的新版本自动执行回归测试 2、可以执行手工测试困难或者不可能实现的测试,如压力测试,并发测试, 3、能够更好的利用资源,节省时间和人力 执行自动化测试之前首先判断这个项目是不是和推广自动化测试,然后对项目做需求分析,指定测试计划,搭建自动化测试框架,设计测试用例,执行测试,评估

9、请问你是怎么看待测试,你都知道哪些测试的类型,用过哪些测试方法?

测试是软件开发中不可或缺的一环,测试通过经济,高效的方法,捕捉软件中的错误,从而达到保重软件内在质量的目的。

测试分为功能测试和非功能测试,非功能测试又可以分为性能测试、压力测试、容量测试、健壮性测试、安全性测试、可靠性测试、恢复性测试、备份测试、协议测试、兼容性测试、可用性测试、配置测试、GUI测试。

测试方法用过等价划分法、边值分析法、错误推测法、因果图法。

10、请你说明对购物车功能进行测试,需要哪些测试用例

参考回答:

界面测试

• 界面布局、排版是否合理;文字是否显示清晰;不同卖家的商品是否区分明显。

2.功能测试

未登录时:

• 将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加;

• 点击购物车菜单,页面跳转到登录页面。

登录后:

• 所有链接是否跳转正确;

• 商品是否可以成功加入购物车;

• 购物车商品总数是否有限制;

• 商品总数是否正确;

• 全选功能是否好用;

• 删除功能是否好用;

• 填写委托单功能是否好用;

• 委托单中填写的价格是否正确显示;

• 价格总计是否正确;

• 商品文字太长时是否显示完整;

• 店铺名字太长时是否显示完整;

• 创新券商品是否打标;

• 购物车中下架的商品是否有特殊标识;

• 新加入购物车商品排序(添加购物车中存在店铺的商品和购物车中不存在店铺的商品);

• 是否支持TAB、ENTER等快捷键;

• 商品删除后商品总数是否减少;

• 购物车结算功能是否好用。

3.兼容性测试

• 不同浏览器测试。

4.易用性测试

• 删除功能是否有提示;是否有回到顶部的功能;商品过多时结算按钮是否可以浮动显示。

5.性能测试

• 压力测试;并发测试。

 

11、App测试和Web测试的区别

  • web和app的区别
    • web项目,一般都是b/s架构,基于浏览器的。
    • App则是C/S的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。

首先从系统架构来看的话,Web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是App端是不能够保证完全一致的,除非用户更新客户端。如果是App下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。

    • 性能方面

      • web页面可能只会关注响应时间。
      • App则还需要关心流量、电量、CPU、GPU、Memory这些了。
    • 兼容方面

      • Web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。
      • App的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。
    • 相比较web测试,app更是多了一些专项测试:

      • 一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。

      • 而弱网测试是App测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机制。避免用户的流失。

      • 安装、卸载、更新:

        • web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除App相关的文件等等。
      • 界面操作

        • 现在app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。

12、登陆界面

参考回答:

黑盒测试方法

输入正确用户名和密码,验证是否登陆成功

输入正确的用户名和错误的密码,验证是否登陆失败并且提示信息正确

输入未注册的用户名和任意的密码,验证是否登陆失败并且提示信息正确

用户名和密码都为空,验证是否登陆失败并且提示信息正确

用户名和密码两者之一为空

若启用了验证码,输入正确的用户名密码验证码是否能登陆成功

输入正确用户名和密码,错误的验证码,能否登陆成功并且提示信息正确

用户名和密码是否大小写敏感

页面上的密码框是否加密显示

后台系统第一次创建的用户重新登录时是否提示修改密码

忘记用户名和忘记密码的功能是否可用

前段功能是否根据要求限制用户名和密码的长度

点击验证码图片是否可以更换验证码,更换后的验证码是否可用

刷新页面是否会刷新验证码

如果验证码具有时效性,分别验证时效内和时效外验证码的有效性

用户登录成功但是会话超时后是否重定向到用户登录界面

不同级别的用户登录系统后的权限是否正确

页面默认定位焦点是否定位到用户名输入框中

快捷键tab和回车键是否可以正常使用

非功能性需求,从安全,性能,兼容三个方面

安全:

用户密码后台存储是否加密

用户密码在网络传输过程中是否加密

密码是否具有有效期,密码有效期到期后是否提示修改密码

不登陆的时候直接在浏览框中输入登录界面后的url地址,是否会重新定位到登陆界面

密码输入框是否不支持复制粘贴

页面密码输入框中输入的密码是否可以在页面源码模式下被查看

用户名和密码输入框中输入xss跨站脚本攻击字符串验证系统的行为是否被篡改

连续多次登陆失败后系统是否会阻止用户后续的尝试

统一用户在同一终端的多种不同浏览器上登陆,验证登录功能的互斥性是否符合设计预期

同一用户先后在不同终端的浏览器上登陆用户名和密码输入框中输入典型的sql注入攻击字符串验证系统的返回页面

,验证登陆是否有互斥性

性能测试:

单用户登陆的响应界面是否符合预期

单用户登陆时后台请求数量是否过多

高并发场景下用户登录的响应界面是否符合预期

高并发场景下服务端的监控指标是否符合预期

高集合点并发场景下是否存在资源死锁和不合理的资源等待

长时间大量用户连续登录和登出,服务器端是否存在内存泄漏

兼容性测试:

不同浏览器下验证登陆功能的页面显示和功能正确性

相同浏览器的不同版本下验证登陆功能的页面显示和功能正确性

不同终端的不同浏览器下验证登陆功能的页面显示和功能正确性

不同分辨率下……

补充:弱网测试

网络切换和网络延迟时登陆界面是否正常

是否支持第三方登陆

是否可记住密码,记住的密码是否加密

 

13、测试的相关流程

1.参加需求会议,充分了解需求,主动提出需求中不合理的地方
2.制定测试计划
3.根据需求,进行测试用例的编写
4.测试用例评审
5.执行测试,测试过程中发现的bug进行记录、跟踪、验收
6.进行回归测试
7.整理测试报告
8.跟进项目上线,跟进用户的反馈
 
14 测试网络协议
1、一致性测试:

检测协议实现本身与协议规范的符合程度。

2、互操作性测试:

基于某一协议检测不同协议实现间互操作互通信的能力

3、性能测试:

检测协议实现的性能指标,比如数据传输速度,连接时间,执行速度,吞吐量,并发度,

4、健壮性测试:

检测协议是现在各种恶劣环境下运行的能力,比如注入干扰报文,通信故障,信道被切断
 
15 java序列号和反序列化
  概念:
        序列化:把Java对象转换为字节序列的过程。
        反序列化:把字节序列恢复为Java对象的过程。
    用途:
        把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;在网络上传送对象的字节序列。
    序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements      Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
posted @ 2020-07-16 12:26  我们村里的小花儿  阅读(415)  评论(0编辑  收藏  举报