软件测试基础面试题

1、原生怎么测试?

哒:拿原生APP/程序来说,这个就相当于是可以直接下载安装在系统中的app/程序。你需要从安装测试,兼容性测试,性能测试和功能测试等方面进行测试。首先安装测试,将拿到的安装包安装到windows or ios or Android 等系统中,按照安装步骤看是否有报错导致无法安装,安装步骤是否和预期一致;兼容性测试,测试看程序在不同手机型号或者电脑型号上是否正常运行,和其他常用程序一起运行是否出现问题等;功能测试,在安装成功之后,需要进行程序本身的功能测试,验证程序的功能。性能测试,在功能测试通过后,需要在性能上对程序进行一些优化;

2、webview怎么测?

哒:WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。主要从兼容性和功能性上面看,首先功能层面,请求一个远程网络地址,或者请求一个存放在本地的一个页面看能否按预期正常的展示在视图里面;从兼容性层面上,如果请求页面格式为除HTML格式,看能否展示出来,从用户易用性上说,测试展示出来的页面宽度和高度是否适合用户浏览,是否有无法展示出来的区域,或者展示的不清楚的区域。

3、数据库怎么测试?

哒:增删查改。查询上,精确查询一条数据,模糊查询多条数据,查询条件为中文,特殊字符,空格,有字符长度限制的,输入超过限制的字符进行查询,使用多条件联查,与或非,异或等,输入不存在的值进行查询。增:增加一条满足所有字段格式的数据,看是否成功添加,看字段有哪些条件限制,依次对这些字段造数据,进行破坏性测试,看是否有添加成功。设置了主键或唯一的字段,增加重复值,看能否添加成功,改:修改一条存在的数据,是否可以按预期改动,修改一条不存在数据,针对主键字段修改成重复数据,针对非空字段修改成null,针对数字类型修改成字符类型等等。删:正常删除一条存在的数据,删除一条不存在的数据,多条同时删除,如果有外键的话且已被其他表应用,看是否可以删除。

4、线程和进程的区别?

哒:它们的根本区别:进程是操作系统分配资源的基本单位,线程则是任务调度的基本单位;

进程由多个线程组成,是线程的容器:

在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享CPU、内存等资源。


5、软件测试有哪些原则?

软件测试应尽早执行,并贯穿于整个软件生命周期
软件测试应追溯需求
测试应由第三方来构造
穷举测试是不可能的,要遵循 Good-enough 原则
必须确定预期输出(或结果)
必须彻底检查每个测试结果
充分注意测试中的群集现象(缺陷的二八定理:80%的缺陷出现在20%的代码中)
严格执行测试计划,排除测试的随意性
注意合法合理的输入,也要注意非法的非预期的输入
检查程序是否做了不该做的
测试应从“小规模”开始,逐步转向“大规模”
反复使用同样的测试会使软件具有抵抗力
关注缺陷的修复

6、软件产品质量特性是什么? ?
功能性:适应性、准确性、互操作性、依从性、安全性。

可靠性:成熟性、容错性、以恢复性。
可使用性:易理解性、易学习性、易操作性。
效率:时间特性、资源特性。
可维护性:易分析性、易变更性、稳定性、易测试性。
可移植性: 适应性、易安装性、遵循性、易替换性。

7、cookie、session、token 的区别?

cookie:这是能永久保存在用户浏览器中的,并以key/value 形式存储的用户数据。

              cookie由服务端生成,发送给浏览器,浏览器保存,然后用户下次请求同个网站时,会把该cookie一同发送给该服务端。可以省去用户的某些操作,比如登陆页面,将存放了用户登陆信息的cookie,一起发送给服务端,那么用户可以省区登陆相关操作。

session:保存在服务端,但不会永久保存,会在用户关闭浏览器或者超过时限后删除。服务器想要知道当前是哪个用户在请求自己,服务端会给每个客户端配有不同的标识,客户端访问的时候带上这个标识,那么服务器就知道是谁在请求,并作出相关处理。

       当服务端是分布式负载均衡的话,那么下一步请求到了另外一台服务器那么session是没有的。

token:在Web领域基于Token的身份验证随处可见。在大多数使用Web API的互联网公司中,tokens 是多用户下处理认证的最佳方式。

        基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中,而是由服务端生成之后发送给客户端,然后由客户端来发送给服务端,服务端再验证客户身份。所以和session的保存方式来相比较,如果服务端是负载均衡的,负载均衡器可以将用户信息从一个服务端传到另外服务端。

8、堆和栈是什么?有什么区别?

    哒:1. 当线程创建的时候,操作系统(OS)为每一个系统级(system-level)的线程分配栈。通常情况下,操作系统通过调用语言的运行时(runtime)去为应用程序分配堆。 2. 栈附属于线程,因此当线程结束时栈被回收。堆通常通过运行时在应用程序启动时被分配,当应用程序(进程)退出时被回收。 3. 当线程被创建的时候,设置栈的大小。在应用程序启动的时候,设置堆的大小,但是可以在需要的时候扩展(分配器向操作系统申请更多的内存)。 4. 栈比堆要快,因为它存取模式使它可以轻松的分配和重新分配内存(指针/整型只是进行简单的递增或者递减运算),然而堆在分配和释放的时候有更多的复杂的 bookkeeping 参与。

 

你可能感兴趣的:(软件测试)