软件测试面试常问问题及解答

一、工作流程?测试计划、测试用例、测试报告都包含什么内容?

工作流程如下:

测试计划:

1).应该做什么(了解需求)
2).怎么去做(测试方案,测试方法,测试工具,测试人员,测试环境)
3).什么时候做(测试进度安排
4).风险控制(标准的定义:包括BUG等级的定义,软件测试通过标准的定义等)

测试用例:

项目名称 功能模块名 功能特性 测试目的 预置条件 参考信息 版本号 编制时间 测试编号 测试用例名称 重要级别 测试类型 操作步骤 作者 备注

测试报告:

测试概要(测试方法、范围、测试环境、工具)
测试结果与缺陷分析(功能、性能)
测试结论与建议(项目概况、测试时间 测试情况、结论性能汇总)
附录(缺陷统计)

二、测试用例设计思路

功能方面考虑:根据业务流程、功能逻辑使用等价类划分、边界值、错误推测等测试方法设计

系统方面考虑:兼容性测试(浏览器、操作系统、手机机型)、应用环境(网络)、性能测试(数量的考虑)、时序

安全性方面:SQL注入、特殊字符

三、工作中遇到过什么问题 是怎么解决的

 因人而异,最好让面试官体会到你能积极主动的沟通解决问题

四、web测试与APP测试有什么相同之处和不同之处

 1、相同点
不管是传统行业的web测试,还是新兴的手机app测试,都离不开测试的基础知识,即是不管怎么变,测试的原理依然会融入在这两者当中。
1)设计测试用例时,依然都是依据边界值分析法、等价类划分等;
2)多数采用黑盒的测试方法,来验证业务功能是否得到正确的应用;
3)需要检查界面的布局、风格和按钮等是否简洁美观、是否统一等;
4)测试页面载入和翻页的速度、登录时长、内存是否溢出等;
5)测试应用系统的稳定性等。
2、不同点
相对于web测试,手机软件测试,除了要考虑基本的功能测试、性能等,还要考虑手机本身固有的属性特征。所以对比web测试和手机测试,手机测试过程中还需要注意如下几个方面特性:
1)手机作为通信工具,来电、去电、接收短信等操作都会对app应用程序产生影响,所以app测试第一个要考虑的属性特征是:中断测试。
中断测试有人为中断、新任务中断以及意外中断等几种情况,主要从以下几个方面进行验证:
a.来电中断:呼叫挂断、被呼叫挂断、通话挂断、通话被挂断
b.短信中断:接收短信、查看短信
c.其他中断:蓝牙、闹钟、插拔数据线、手机锁定、手机断电、手机问题(系统死机、重启)
2)手机用户对app产品的安装卸载操作:从上一个版本/上两个版本直接升级到最新版本。
全新安装新版本
新版本覆盖旧版本安装
卸载旧版本,安装新版本
卸载新版本,安装新版本

3)版本的升级测试

4)手机不同机型和不同系统的适配:可以用monkey

5)APP打开速度的测试:让开发写个测试脚本在客户端,监控一下服务器响应后回到客户端显示的时间

6)APP安装速度的测试

7)手机网络测试:2G/3G/4G/wifi 等网络下APP的运行情况

8)APP占用的手机cpu、内存及电池温度、耗电量、流量的测试:Emmage

使用步骤:

  • 很简单,就是安装Emmage了
  • 运行Emmage,设置采样的时间间隔,例子是10S采集一次的,当然你也可以选择1S。
  • 选择要测试的移动应用。
  • 开始测试。
  • 开始测试之前,其实会准备好一系列要跑的想法,一般我是按照Tab来分,性能测试呢主要目地是检测常用的一些功能在手机端的性能表现,当然也可以真对某个功能反复的测试,原理是相通的,所以。。。
  • 开始测试之后,就会启动我们要测试的应用。
  • 按照料想的方式进行操作应用,并记录大概的时间点。
  • 操作应用完成之后,结束测试,
  • Emmagee就自动生成了报表,取出来可以进行下一步的分析。

9)web自动化测试使用的工具较常用的是QTP,而android手机自动化测试工具比较常用的是monkey、monkeyrunner。

五、报bug都包含哪些内容

1)bug的简单描述

2)操作步骤、期望结果、实际结果、特殊数据/特定环境、错误截图/错误日志

六、性能测试是如何做的  监控哪些指标

 见性能测试思路及性能测试课堂笔记

七、LR常用函数

一、关联函数:

  web_reg_save_param("关联名称","LB=左边界","RB=右边界","Ord=1",

                     "Search=NoResource",LAST);

二、检查点函数:

  web_reg_find("Fail=NotFound","Search=Body","SaveCount=regcheck(统计参数名)",

               "Text=需查找的文本",LAST);

三、添加集合点:

  lr_rendezvous("集合点名称");

注意:集合点应放在事务外,否则将影响事务处理时间的统计;

  集合点策略在controller场景中进行设置。

四、LR脚本其他常见函数格式:

  1、web_link("网站或链接名称","Text=需要单击的链接名","Ord=2(存在多个同名链接时需要指定位置)",LAST);

  2、web_url("网站或链接名称","URL=网站或链接地址",……,LAST);

  3、web_submit_form("login.pl",

                  "Snapshot=t3.inf",

                  ITEMDATA,

                  "Name=username","Value=admin",ENDITEM,……LAST);

  该函数会自动检测在当前页面上是否存在form,然后将后面的ITEMDATA数据进行传递;

  4、web_submit_data("login.pl",

                  "Action=网站URL",

                  "Method=POST",

                  ITEMDATA,……,LAST);

八、环境的搭建 部署

 Linux操作环境的常用命令:

安装命令:rpm yum tar

其它命令:mkdir 创建 cp 复制  mv 移动 cat 打开文本 rm 删除  killall 杀进程 chmod 改变文件的权限 chown 改变文件所有者

九、SQL语句  至少连表查询

例句:

1.图书(图书号、图书名、作者编号、出版社、出版日期),作者(作者姓名、作者编号、年龄、性别),用一条SQL语句查询年龄小于平均年龄的作者姓名、图书名、出版社。

select a.作者姓名,b.图书名,b.出版社 from 作者 a join 图书 b on a.作者编号=b.作者编号 where a.年龄<(select AVG(年龄) from 作者)

2.升序降序查询:ORDER by 字段名 DESC(降序)/ASC(升序)

3.删除:DELETE

4.更新:Update

5.从第五行开始查,查5行:select * from 表 LIMIT 4,5;

6.分组:group by

十、Monkey命令 :(详见Money知识篇)

adb shell monkey-p 包的签名 -v -v (日志) --ignore crashes/timeout  (异常处理)--pct-touch (动作百分比)

十一、Linux下数据库的使用

数据库操作命令:

连接数据库:MySQL-h-u 用户名-p 密码 

修改密码:mysqladmin -u用户名 -p旧密码 password 新密码

常用:Use、 Create 、Show databases、 Show tables、 Drop 、Delete、 Insert 

十二、接口测试是怎么做的

 接口验证和数据库验证 :验证接口的连通性及输入参数后的返回结果是否正确;链接数据库(先驱动数据库、在连接、查询、关闭数据库)查询是否插入相应的数据

十三、Java冒泡程序(可参考)

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

  冒泡排序算法的运作如下:

  1.  比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2.  对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3.  针对所有的元素重复以上的步骤,除了最后一个。
  4.  持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码

 1 public class BubbleSort{
 2      public static void main(String[] args){
 3          int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
 4          for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序
 5              for(int j = 0 ;j < score.length - i - 1; j++){    //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
 6                  if(score[j] < score[j + 1]){    //把小的值交换到后面
 7                      int temp = score[j];
 8                      score[j] = score[j + 1];
 9                      score[j + 1] = temp;
10                  }
11              }            
12              System.out.print("第" + (i + 1) + "次排序结果:");
13              for(int a = 0; a < score.length; a++){
14                  System.out.print(score[a] + "\t");
15              }
16              System.out.println("");
17          }
18              System.out.print("最终排序结果:");
19              for(int a = 0; a < score.length; a++){
20                  System.out.print(score[a] + "\t");
21         }
22      }
23  }
原文地址:https://www.cnblogs.com/minna/p/5267876.html