软件测试基础概念
1、什么是软件测试?其目的是什么?你怎么看待软件测试?
是为了发现错误而执行程序的过程。在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
目的是暴露程序中的错误。发现测试对象与预期的差异。具体地不同测试阶段对应不同测试目的。
软件测试工作者要站在用户的额角度思考问题,从用户的实际使用环境、习惯着手验证被测对象应用表现。与软件开发的创造性思维不同,软测活动的思维模式则是破坏性的通过构建正常、异常输入去考验被测对象的健壮性。测试工作是一项极其重要的质量保证活动。因为测试部门是软件发布质量把控的出口,又可能是用户意见反馈的入口。
2、软件测试的生命周期?各阶段对应的工作?
测试周期是指从测试项目计划建立到BUG提交的整个测试过程,包括软件项目测试计划,测试需求分析,测试用例设计,测试用例执行,BUG提交五个阶段。软件测试周期与软件生命周期并行,存在于软件生命周期的各个阶段。
需求分析阶段:测试人员了解需求、对需求进行分解、分析,得出测试需求。
测试计划阶段:根据需求编写测试计划/测试方案。确定测试范围,测试通过的标准,测试的时间、人力、物力、资源、风险等。输出测试计划文档
测试设计、测试开发阶段:测试人员搭建测试用例框架,根据需求和设计编写一部分测试用例。输出测试方案文档。
测试执行阶段:测试执行阶段是软件测试人员最为重要的工作阶段,根据测试用例和计划执行测试。
测试评估阶段(BUG提交):在执行的过程中记录、管理缺陷,测试完成后编写测试报告,进行测试评估。
3、测试计划和测试方案的内容和区别?
测试计划确定测试范围,测试通过的标准,测试的时间、人力、物力、资源、风险等;
测试方案确定测试的方法、类型;确定用例设计的方法,缺陷管理流程;缺陷严重程度的划分、用例格式等。
测试计划一般由测试经理、测试主管或项目测试负责人制定,属于管理文档,解决的是做什么的问题。测试方案由测试工程师设计,属于技术文档,解决的是怎么做的问题。
4、需求评审的内容?参与人员?测试人员为什么要参与需求评审?
内容:同步产品对于需求的详细设计,收集大家对于需求的各种反馈。
参与人员:产品、设计、研发、运营,测试等其他岗位的人
当面同步需求,对于需求的合理性、全面性的反馈。
5、测试用例的设计方法有哪几种,分别对应什么典型业务功能?
等价类划分
-
- 等价类即是某个测试对象的输入域的集合。是一种常用的黑盒测试方法。它将全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,从而用少量代表性的测试数据取得较好的测试结果。等价类可分为有效等价类和无效等价类。
- 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
- 在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
- 实例:三角形等价类划分https://blog.csdn.net/slforeverlove/article/details/48296121
- 业务:邮件注册功能。
- 测试用例实际就是各个等价类的排列组合。
边界值分析
-
- 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
- 大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
- 构造测试数据是要考虑3个点的选择:上点,即边界值点;内点,即与范围内的点;离点,离上点最近的点,当域是开区间时离点在域内,闭区间时离点在域外。
- 边界值设计法为每一个有效等价类多增了2个上点的用例。为每一个无效等价类选择的是离点的用例。
- 应用场景与等价类相同
判定表驱动分析
-
- 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
-
判定表通常由四个部分组成。
1)条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
因果图法
-
- 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视。
- 针对需求规格,将原因及影响对应关系分为两组:输入与输出,输入与输入。每种又分别对应四类
- 输入与输出:关系主要有恒等、与、或、非。
- 恒等:输入a,一定产生对应的e。没有a的输入,就不会产生e的输出。
- 与(^):只有同时有a和b的输入,才能产生对应的e。
- 或(v):输入a或者b,就可以产生对应的e
- 非(~):只有不输入a,才能产生对应的e
- 输入与输入:异、或、唯一、要求。
- 异:即互斥,所有输入条件只能成立一个,可以一个都不成立。
- 或:所有输入条件至少成立一个,可以多个条件共存
- 唯一:所有输入条件中只能且必须成立一个。
- 要求:如果输入条件a发生了,那么b也会发生。
-
采用因果图法设计测试用例的步骤:
1)分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。
2)分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。
3)由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
4)把因果图转换为判定表。
5)把判定表的每一列拿出来作为依据,设计测试用例。
场景设计
错误推测法
6、缺陷的级别及管理流程?
7、测试准入和通过的标准?
8、测试模型有哪些?
9、如何保证测试覆盖率?测试用例评审方式,如何组织,为什么要评审,评审内容?
测试覆盖率从用例设计方法和用例评审会议来答
10、敏捷模型?瀑布模型?
11、测试报告的内容有哪些?
12、测试过程中如果发现不可重现的缺陷怎么处理?
13、测试流程是什么?
14、测试方法有哪些?
15、测试类型有哪些?
16、α测试和β测试的区别?
17、什么是敏捷测试?什么是探索性测试?
18、V模型和W模型的区别?
19、何为上线?之前工作中上线是怎么做的?
20、测试用例的内容、优先级定义、以及如何编写?
21、如何测试一个水杯?
22、拆分需求注意事项?
23、项目组成员包括哪些?
24、回归测试?回归几轮?
25、什么情况下使用自动化测试?
26、scrum模型中的一些特殊术语?
27、把你熟悉的一个游戏简单分析如何进行测试?
28、如何搭建测试环境?
29、app和web的额测试环境有什么区别?
30、系统项目的构成:前端、UI界面、客户端、后端、系统服务端代码、WEB服务器(Apache)、应用服务器(Tomcat轻量级的应用服务器)、数据库服务器
31、如果构造测试数据?构造测试数据的方式有哪些?
32、如何确认测试数据的正确性?
33、你们测试是否与开发共用一个环境?如果是,如何保证测试结果不受影响?
34、什么是接口测试?为什么要做接口测试?怎么做接口测试?
35、接口是否通过测试怎么判断你?
36、接口测试用例怎么设计?
37、接口自动化是什么?
Mysql相关
1、增删改查的SQL语句(多表查询、子查询)?
2、查询成绩最好的学生信息。
3、常用聚合函数有哪些?
4、分组关键字?排序关键字?查询关键字?
5、什么是索引?
6、MySQL有哪些约束条件?
7、多表连接有哪些方式?
8、MySQL事务是什么?
9、什么是存储过程?
10、如何进行模糊查询?
11、where和having有什么区别?
12、内连接外连接的区别?
13、drop,delete,truncate的区别?
14、视图的作用以及更新原则?
15、唯一键与主键的区别?
16、项目中怎么使用的数据库?
Linux相关
1、jar包和war包的区别?
2、什么是日志,以及日志的级别?
3、你常用的Linux版本?如何查看版本?
4、你常用的Linux命令?
5、了解shell脚本吗?
6、Linux防火墙你都知道哪些?
iptables、firewalld
7、怎么启动和关闭服务?
8、何为负载均衡ngnix?
9、查看端口占用情况?
10、跨服务器传输文件
11、本地连接服务的工具?
网络相关
1、cookie和session的区别?
2、简要论述一下三次握手和四次挥手?
3、如果建立连接之后客户端突然中断如何处理?
4、web服务器和应用服务器的区别?
4、http、https、ftp、telnet、tomcat、apache、pop3、smtp、stfp默认端口?
5、浏览器中的F12有什么作用?
6、app中ios端和Android端的开发语言是什么?
7、原生app和混合app、webapp是什么?
8、访问一个网站的过程是什么?
9、常见服务器有哪些?