面试小记--软件测试概念

一、软件测试的方法

(1)按是否查看程序内部结构分为:

  • 白盒测试:通过程序源代码进行测试而不是使用用户界面(研究里面的源代码和程序),白盒测试的测试方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。
  • 黑盒测试:又被称为功能测试,看不到源代码是通过使用整个软件的各个功能来进行测试的(只关心输入和输出结果),黑盒测试常用的方法有:边界值、等价类、错误推测法、功能分解法、因果图、判定表、正交试验法、场景法。

(2)按是否运行程序分为:

  • 静态测试(static testing):指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
  • 动态测试(dynamic testing):指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程。

(3)按阶段划分:

  • 单元测试:指对软件中的最小可测单元进行检查和验证
  • 集成测试:单元测试的下一阶段,指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。
  • 系统测试:是整个系统的运行以及与其他软件的兼容性
  • 验收测试:指的是在系统测试后期,以用户测试为主

(4)回归测试:指开发修复bug后,需要再次重新测试,保证bug已修复并且没有引入新的bug

(5)冒烟测试:指在对一个新版本进行大规模测试前,先验证下软件基本功能是否正常

(6)随机测试:指测试中所有数据都是随机生成的,其目的是模拟用户真实操作

二、b/s和c/s架构测试区别:
  • b/c(brower/server)结构:即客户端浏览器、服务器;客户端主要通过浏览器访问,因此侧重点为“客户端操作系统版本、客户端浏览器版本、客户端配置”,还需要关注链接测试、表单测试、脚本测试、activeX控件测试
  • c/s(client/server)结构:即客户端、服务器;需要安装客户端来访问系统,侧重点为客户端安装测试、客户端升级测试、客户端与服务器连接测试、服务器端数据测试、客户端可维护性测试
三、一个测试工程师应该具备哪些素质和技能:
  • 掌握基本测试基础理论
  • 测试工具使用(postman、jmeter、SQL等)
  • 可熟练阅读需求规格说明书等文档
  • 以用户的角度看待问题
  • 自动化测试技能--编码能力、工具、自动化框架(python接口/UI)
  • 性能测试工具使用(jmeter),性能测试流程
  • 良好的沟通能力(与开发/产品)
四、软件测试基本相关概念:
  • 缺陷测试报告的组成:编号、标题、版本号、错误严重级别、错误重新步骤、测试环境、附件、开发人员、执行状态
  • 软件测试的目的:尽可能早的找出软件缺陷,并确保其得以修复。
  • 软件测试一般分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试。
  • 软件测试一般从什么时候开始介入:软件测试应该在需求分析阶段就要介入,软件缺陷存在放大趋势,缺陷发现的越晚,修复花费的成本就越大。
  • 缺陷的生命周期:新增--提交--确认--分配--修复--验证--关闭
  • 为什么要写测试用例:便于维护、避免重复、便于跟踪统计、便于用户自测
  • 为什么要在一个团队中开展软件测试工作:因为没有经过测试的软件很难在发布之前知道该软件的质量,这个时候就需要在团队中开展软件测试工作。在测试过程中发现软件存在的问题,及时告知开发人员修改,保证软件质量。
  • 测试计划定义:一个叙述了预定的测试活动的范围、途径、资源及进度安排的文档。它确认了测试项、被测特征、测试任务、人员安排,以及任何偶发事件的风险。
  • 测试策略定义:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
五、数据库delete、drop、truncate差别:
  • drop:删除整个表的数据及结构
  • delete:可以删除整个表也可以只删除表中某一条数据(可回滚,效率低)
  • truncate:只能删除整个表的数据(也可称为截断表)不可回滚,效率高。
六、Linux常用查询语句:
  • 三种查看server.log的文件内容:tail、cat、tac、head、echo
  • 编辑start.sh文件,查看文件前10行内容和后十行内容
    vim start.sh
    head -n 10 start.sh
    tail -n 10 start.sh
  • 删除temp.conf文件:rm -rf temp.conf (-f 表示强制删除/-r 表示递归删除可删除子目录及文件)
  • 查看后台所有Java进程:ps -ef|grep java 或者 ps aux|grep java
  • 结束进程:kill+进程编号 结束不掉就用kill -s 9 进程编号
  • 将start.sh文件改为可执行权限:chmod u + x filename.sh,语法格式为:chmod [who] [opt] [mode] 文件名或目录名
    who:代表对象
    u:表示文件所有者
    g:表示同组用户
    o:表示其他用户
    a:表示所有用户
    opt:代表操作,可以为“+”表示添加某个权限、“-”表示取消某个权限、“=”表示赋予某个权限
    mode:“r”表示可读、“w”表示可写、“x”表示可执行。
  • 检查端口是否被占用:netstart -nat|grep“:80” 后面是listen状态说明正在使用,也可以用:netstart -an|grep 80;
  • 查看端口是被哪个程序使用:netstart -apn|grep 8080
  • 强制终止名词中包含test的进程:kill -9 ‘ps aux|grep ‘test’’
  • mysql允许的最大连接数:show variables like ‘%max_connections%’
  • mysql展示所有进程:show full processlist
  • 查看cpu占用率:top -bn l -i -c
  • df -h:删除比较大的无用文件
七、常见问题及回答

1.软件测试项目从什么时候开始为什么?
需求确认开始,因为在需求阶段,测试可以评审需求并进行静态测试,减少开发过程中的bug。

2.软件的评审一般由哪些人员参加?其目的是什么?
参加人员:需求业务人员、产品经理、项目经理、开发人员、测试人员;
目的:查看软件在未正式投入运行前是否还存在问题。对于不同软硬件平台能否正常运行,是否有与客户理解不一致的地方,同时可以对一些可以改进的地方再多加改进。

3.如何设计测试用例?什么样子的测试用例是好用例?
掌握边界值分析、等价类划分、错误推测等方法来设计测试用例。
好用例是一个完备的集合,它能够覆盖所有等价类以及各种边界值;需要从软件功能需求出发,全面地,无遗漏地识别出测试需求;最好是代码覆盖测试也全面的测试。

4.不能发现BUG的测试用例不是好的测试用例吗?
不一定,要看情况,如果测试用例质量高,没有发现bug,说明开发质量高。但一般程序都会有bug,如果没有发现BUG,就要思索测试场景是否有遗漏,需求是否理解没到位。

5.测试用例需要哪些人来评审?
产品经理,开发人员,测试人员,业务需求人员。

6.什么是bug?
没有实现需求说明书列出的功能,出现了没有需求说明书提到不该出现的事情;实现了多的功能;没有实现应该实现的逻辑。

7.简单概述缺陷报告,并说明包括哪些项?
缺陷描述,缺陷的优先级,缺陷的标题,缺陷所属版本号,缺陷所属的功能模块,操作步骤,预期效果,缺陷原因,缺陷所属的开发人员。

8.开发人员修复缺陷后,如何保证不影响其他功能?
重新执行测试用例,并且针对这个缺陷影响的相关点写新的测试用例。

9.开发人员说不是bug时,你如何应付?
首先把自己的理由,并以需求说明书为自己的站点,如果开发人员还是不认同,可以把自己的观点和理由,提交给产品经理,由其去决定是否为一个bug。

10.当测试过程发生错误时,有哪几种解决办法?
  a.跳转其他的测试流程;
  b.调用某个程序能绕过这个错误,继续后面的流程。

11.所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?
能修复,但不一定所有的缺陷都要修复。

12.进行测试时产生了哪些文档或记录?
测试用例,测试报告,测试日报

14.功能测试在 beta 版本对外的上线标准是什么?
测试用例全部跑完并且bug都已经关闭,然后业务验收后可以上线。

15.开发人员老是犯一些低级错误怎么解决?
  a.要求开发人员进行自测,把这些问题在开发阶段就解决好
  b.通过缺陷管理系统对开发人员进行控制

16.为什么尽量不要让时间富裕的员工去做一些测试?
  a.非专业测试人员,没有组织性的测试工作,没有规律和针对性,会影响到测试的质量和版本更新的速度。
  b.专业测试人员(但不是这个项目的测试员)这些人员不受测试计划的时候和任务约定,测试完毕后评估测试小组的工作质量,不利于bug管理。

你可能感兴趣的:(面试小记--软件测试概念)