zoukankan      html  css  js  c++  java
  • 软件测试面试问题及答案

    一直以来大大小小参与过不少面试,遇到过不少坑,但是没来的及好好总结汇总下。现在把之前遇到的问题汇总下,希望以后自己能加深印象。

    1、appium 怎么定位toast弹框

    appium1.6以后回答需要升级u2进行定位。

    2、什么是事务,知道事务提交、回滚

    事务是并发控制单位,用户定义的一个操作序列。这些操作要么都做,要么都不做,是不可分割的的工作单位。通过事务,sql server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性,主要用于一些对操作过程的完整性比较高的程序。(事务的特性:原子性、一致性、隔离性、持久性)。

    事务提交是提交事务的所有操作:具体来说就是将所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。

    事务回滚是数据库返回到事务开始的状态;事务在运行过程中发生某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,使数据回滚到事务开始时的状态。

    3、怎么进行数据库优化

    大致是有8种方法:(具体参考链接:https://www.cnblogs.com/luokakale/p/7242839.html

    a、选取最试用字段属性

    b、使用连接(join)代替子查询

    c、使用联合(union)来代替手动创建的临时表

    d、使用事务 

    e、锁定表

    f、使用外键

    g、使用索引

    h、优化查询语句

    4、什么是分布式系统架构

    分布式架构系统简单的说是运行在多个处理器上的软件架构设计。分布式系统是建立在网络之上的软件系统、正是因为软件的特性,所以具有高度的内聚性和透明性。

    5、linux中使用top什么命令可以查看系统详细内存

    top 按 c 查看显示完整命令

    6、python中列表和字典的区别,列表和元祖的区别

    元祖(tuple):元祖常用小括号表示,即:(),元素加逗号,是元祖的标识。

    列表(list):列表常用方括号表示,即:[],创建一个列表,只要把用逗号分隔的不同的数据项使用方括号括起来即可。

    字典(dict):字典是由花括号{}来包含其数据的,花括号内包含键(key)和其对应的值(value),一对键和值成为一个项,键和值用冒号:隔开,项和项之间用逗号,隔开,空字典就是不包含任何项的字典,也可理解为空字典就是花括号内不包含任何内容,直接使用花括号{}表示

    列表和字典的区别:字典的查找和插入的速度极快,不会随着key值的增加而增加,需要占用大量的内存,内存浪费多

    列表和元祖的区别:元祖比列表操作速度快,对数据不可更改、可用于字符串格式化中、可作为字典的key

    7、数据库中有使用过if等函数吗?

    if既可以作为表达式用,也可在存储过程中作为流程控制语句使用(具体参考链接:https://blog.csdn.net/caidingnu/article/details/88772170

    8、什么是脏数据?

    脏数据是在临时更新(脏读)中产生,比如事务A更新了某个数据项x,但是由于某种原因,事务A出现了问题,于是要把A回滚。但是回滚之前,另一个事务读取了数据X的值(A更新后),A回滚了事务,数据项恢复了原值。事务B读取的就是数据项X的就是一个“临时”值,这就是脏数据。

    9、什么是幂等性?

    就是用户对同一操作发起一次请求或者多次请求的结果是一致的。不会因为多次点击二次产生副作用。简单的例子,就是支付,用户购买商品使用支付,支付扣款成功,但是返回结果的时候网络异常,此事钱已经扣了,用户再次点击,此时会产生二次扣款,结果返回成功,用户查询余额返现多扣钱了。流水记录变成了两条、这就是幂等性。

    10、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

    1、检查系统是否有中毒的特征;
    2、检查软件/硬件的配置是否符合软件的推荐标准;
    3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
    4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
    5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

    11、安卓四大组件

    activity 通过Intent进行通信
    service service用于在后台完成用户指定的操作
    Content provider 指定数据集提供给其他应用程序
    Broadcast Receiver 对外部事件进行过滤

    12、什么是多线程,

    线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

    13、linux中vim模式有

    1、命令模式,2、编辑模式、3、末行模式

    14、计算机网络模型

    七层模型(应用层、表示层、会话层、传输层、网络层、数据链层、物理层)五层模型(应用层、传输层、网络层、数据链层、物理层)

    15、什么是子网掩码

    它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

    16、如果测试时间不够,你会怎么办?

    测试目前主要是产品测试和项目测试。做自己公司的产品测试,如果碰到不能按原计划完成,本着为质量负责,一般都可以申请延期。
    如果是做项目,迫于合同和客户验收的压力,碰到不能按原计划完成的情况,就是项目风险了。而处理的方式基本都是“先测客户比较关心的,比较常用的功能”,保证通过客户验收,拿到项目款。分析客户验收所关心的功能点(比如客户最近几天提过什么需求,肯定要测试,因为时间短,他肯定记得),分析系统最脆弱的地方,走通所有业务流程等。而客户验收时候,不关心和不可能想到得地方可以不测试(比如系统中很多同步功能)

    17、性能指标有哪些?

    注册用户数、在线用户数、并发用户数、请求响应时间、事务响应时间、每秒点击数、吞吐率、业务成功率、tps(每秒事务处理数)、资源利用率

    18、什么是接口?

    传递数据的通道就叫接口

    19、测试的基本6大法则

    功能性、可靠性、效率性、可移植性、可维护性、易用性

    20、接口测试测哪些东西

    a、通过性验证

    b、参数组合

    c、接口安全

    d、异常验证

    e、根据业务逻辑来设计测试用例

    21、用fiddler抓包时怎么制造异常情况;

    通过请求前打断点,可以修改请求参数

    22、 什么是mq,mq的特点是什么?

    把要传输的数据放在队列中保存消息的容器.

    mq的特点是:异步、解耦、广播、流控与销峰

    23、怎么保证软件测试质量

    测试人员需要做的工作

    测试策略的设计: 质量是多维度的,功能测试、性能测试、兼容性测试等多种测试类型的结合

    用例质量: 采用合适的用例方法、如何进行需求分析、用例评审

    执行质量: 保证执行深度(界面、关联模块、数据库、日志)与广度(系统测试类型)

    缺陷质量:bug评审,引入合适的bug流程

    过程质量:合理的软件测试流程,测试过程监控

    24、android和ios系统测试的不同点

    1、Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;
    2、多分辨率测试,Android端20多种,ios较少;
    3、手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
    4、操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
    5、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
    6、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有appstore,iTunes和testflight下载;
    7、升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)

    25、使用中间件,中间件的作用!

    具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

     26、什么是orm(对象关系映射)

    解决面向对象与关系数据库存在的互不匹配的现象技术,简单说,orm是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

    27、使用什么命令实现查看app手机内存

    adb shell dumpsys meminfo 包名(com.mbox.cn)

     28、什么是ANR(applicaton not responding)

    29、APP日志分析查找关键字 crash ANR Exception ERROR force closed

    30、多线程:线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

    31、unittest工作原理

    使用testcase 进行单元测试,通过testsuit 装载用例 使用testrunner执行用例,testresult执行用例。

    32、给你的一个测试项目,你怎么开展测试工作

    在拿到项目后,在熟悉需求、原型图后不必急着去设计用例,而是先需思考下测试思路,从哪方面下手,有哪些地方需要覆盖到,支持哪些平台,有哪些不同的常用场景,是否需要考虑到稳定性、性能等等,针对项目进行大概的测试规划,再根据大概的规划去逐个细化,最后形成用例,简单来说就是:
    1.明确测试任务
    2.分析测试范围
    3.制定测试计划和测试用例。

    end:希望大家能补充答案

     

  • 相关阅读:
    go语言之goroute协程
    Vue中Computed和Watch的用法及区别
    php判断复选框是否被选中的方法
    基于workerman的实时推送
    织梦引入公共模板
    织梦快速建站首页模板
    golang解决中文乱码的方法
    Vue项目中使用可视化图表echarts
    解决for循环中异步请求顺序不一致的问题
    layui多图上传实现删除功能的方法
  • 原文地址:https://www.cnblogs.com/xdg920/p/13099486.html
Copyright © 2011-2022 走看看