软件测试面试汇总
您好,我是xxx。我毕业于xx大学xxx专业。在校期间通过自学获得C语言计算机二级证书、四六级证书。在校必修过的课程有C、Java、数据结构、Linux操作系统、网络操作系统、服务器配置与管理、虚拟化与云计算等,成绩很好。并且在校期间积极参加多种社团活动,后担任社团的骨干人员。我认为我的自学能力较强,善于总结复盘,有较好的团体意识,性格踏实稳重。我的介绍结束。
你好,我叫xx,来自xx,毕业于xx。目前有两年的功能测试经验。最近的一份工作是xx公司,主要参与app系统测试,负责xxapp,一款类似抖音的短视频app功能测试,负责过的功能模块有拍摄、上传、搜索、推荐引擎等。主要运用边界值,等价类,错误推测等常见黑盒测试方法。
我是最近才开始陆续参加面试,现在也有一些公司进展到最后环节了,但是Offer暂时都还在洽谈的过程中,还没有具体确定。
公司对于这个岗位的期待是什么样子的?
实习期和转正后的薪资?
试用期我们一般几个月?
您选拔员工的标准是什么,除了技术外。
如果我有幸入职,对于我这个岗位,您对我职业规划的建议是什么呢?
我们公司是几点上班?正常大部门部门作息制度都是五天八小时吗?工作时长。
我如果入职,是跟我们公司直接签合同吗?
咱们公司是做哪方面的测试?哪方面的项目。
在大学参加了很多社团,我们学校图书馆是分为老师馆员和学生馆员的。我做的是学生馆员负责人,是学生和老师一个沟通的桥梁,然后主要负责的是对新一届的学生馆员的筛选,培训,排班,安排活动等一些事情。
有部分就是因为感兴趣然后去参加的,有些是通过学习然后成为重要的一部分。比如团总支通过自己学习公众号的排版编辑等一些内容,后面就会负责每个月其中部分的发布。比如在校图书馆掌握图书编号上架出借归还这些,之后竞选成为负责人后,对新的馆员进行一些培训管理,也会经常组织一些活动,增加团队精神等。
现在计划工作,夯实项目经验,提高专业实践的能力在考虑别的。
我认为积累实际工作经验更有意义。想先适应社会,觉得工作中学到的不比考研中少。没有这个方面的打算,没有这个方面的打算,更想投入工作中。
我通过四年的学习,对专业产生了更多新的认识。所以,想通过读研的方式提升自己的认知水平与眼界,就是为了日后更好的投入到实际工作中。考过不仅仅提升了自己的专业知识水平,也让自己的心智更加成熟。当然,所有竞争都会有成功也会有失败,虽然我尽了自己最大的努力,但是,未能在考研上取得一个满意的结果,在看到考研成绩的那个瞬间,我很失落,甚至有些沮丧。但正是因为准备考研的这大半年的时间,让我的抗压能力、耐挫能力有了很大的提升,所以,我及时的调整了自己,以积极的心态投入的春招的就业当中。
虽然,考研未果,没能让我在专业水平上有直接提升的机会,但这个准备考研的过程,却让我将大学四年的学习做了串联与梳理,让自己的心态得到了锻炼、使自己的专注力、抗压能力、韧性得到了大大的提升。我相信,这些宝贵的心理财富,会让我在未来职场中的适应与成长更加快速。
通过一些书(软件测试,软件测试的艺术、软件测试实用教程),和线上视频,还有一些发布的博客(橙好测试开发、陈琦聊测试)论坛(51testing论坛)和公众号(搜狗测试、软件测试资源分享)
面对新的知识时整体的学习计划和思路:
1、主动了解不知道的知识与工具
通过网络检索,或者访问一些学术网站、技术论坛等查找资料,在查找资料的同时收藏好的网站及文档,为后续知识学习做积累。可以向身边的人进行请教。 找出问题后,认识和分析这些问题,弄清解决的办法在哪里。 先了解知识的背景原理,之后进行系统化的学习,同时了解相仿的知识并权衡它们的利弊。
2、把学习知识的过程变得体系化、把每一个任务当作一次学习机会、在解决问题中要勤反思勤总结、要把学到的知识转化成自己的
职业规划:(后期学习规划,或者想通过实习掌握什么技能。)
对这个行业有更多的了解。因为我刚刚毕业,对社会工作环境还不了解,所以还没制定详细的方案。我对于xx工作非常有兴趣,这是一个可以将兴趣与我的工作结合的工作,但我知道,我需要在这个行业里不断地学习和锻炼,扩充自己的知识面,提升自己的能力,让这份工作变得更有意义。
很多公司对性能测试和自动化测试工具有要求,由于之前的工作主要涉及的是功能测试,所以这方面的知识储备不够。不过最近我在学习这方面的知识,希望以后在工作中能深入学习。
好入手,在校期间已有计划,所以有自学相关知识,所以找工作的时候就投一些测试岗。
我觉得我个人的性格比较适合做测试。我比较细致耐心,很有条理考虑事情比较全面,这样对于我在设计测试用例时很有帮助,而且我能够很好的与人协调沟通,当我们测试和开发发生沟通上的矛盾时我也能很好的解决,我平常喜欢刷微博、知乎看热门评论,喜欢考究大众心理,这有助于我站在用户角度设计测试点。良好的分析技能。善于沟通,可以用报告和说服其他人。
测试的发展前景好, 具有挑战性,对测试的未来很看好,善于发现问题。对测试特别感兴趣,喜欢测试。测试岗位空缺更大一点。职业寿命长。
1、角度不同。开发想的是怎么去实现这个功能。而测试则需要考虑这个功能实现了什么,有什么使用场景,设计得是不是合理。因此,注定开发会更容易陷入细节,而测试更容易跳出细节在更高的层次上进行分析。
2.开发是创造,测试是破坏。测试要做的就是怎么去攻破这个软件,找出它的问题。是否有种破坏的快感?
掌握软件测试基础知识,流程,测试用例方法,数据库相关知识,抓包分析,接口测试、测试工具、性能测试等。掌握测试方法比如黑盒、白盒、灰盒测试、功能性能测试等一些知识。熟悉软件测试基础理论和测试流程,测试方法等,有app测试、web测试、接口测试经验。熟悉数据库增删改查操作,会使用一些测试管理工具。
一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
(1) 按测试方法分类:白盒测试、黑盒测试
(2) 按测试阶段分类:单元测试、集成测试、确认测试、系统测试、验收测试
(3) 按测试类型分类:功能测试、界面测试、性能测试(负载测试、强度测试)、容量测试、接口,自动化,安全,数据库、压力测试、安全测试、兼容性测试、安装测试、文档测试、易用性测试、边界测试、健壮性测试、本地化测试、无障碍测试、回归测试、冒烟测试、Monkey测试、A/B测试
(4) 按测试模式分类:瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试
例:除了测试功能外还有那些方面要关注:安装测试、界面测试、网络测试、系统权限、兼容性测试、健壮性测试、性能测试、专项测试、升级测试、安全测试、接口测试。逻辑功能测试,易用性测试,安装/卸载测试等。
等价类:(无效等价类、有效等价类)、
边界值:(最小值、略高于最小值正常值、略低于最大值、最大值)
错误猜测法、场景值、因果图、判定表、路径覆盖法、
例:等价类 发送红包时:
发送成功:用户输入符合要求的金额,发送成功
发送失败:用户什么都不输入,不能发送成功
用户输入超出范围的值,不能发送成功
用户输入非数字的值,不能发送成功
边界值:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢:选取的边界值数据应该包括:-1,0,1,59,60,61,79,80,81,99,100,101。
首先是需求分析阶段:需要提取功能点、编写需求分析说明书。
然后进入测试设计阶段做一个测试计划和方案,比如针对每个测试内容如何展开测试、采用什么测试工具,再确定哪些内容先测、哪些后测、开始和结束的测试标准分别是什么。然后具体写出测试用例。
接着进入测试执行阶段。对预期结果和实际结果做对比 后提交BUG 最后可以做一下回归测试 进行测试总结。
公司严格规范测试流程和测试文档,首先是参与需求评审,编写测试计划、测试方案、测试用例,进行测试方案及用例的测试组内部评审,外部评审。
提取部分一级用例提交研发自测,研发自测通过后开开始执行一轮系统测试。
测试过程中发现并提交、跟踪问题。
问题修复后进行回归测试。
一轮测试完成后对修复包进行冒烟测试,测试通过则进行二轮测试。
二轮测试完成后会进行需求交叉测试。
完成测试编写系统测试报告提交验收测试。验收测试通过输出验收测试报告。
着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。主要是测试软件的功能性需求
划分等价类、▪ 边界值分析法、▪ 错误推测法、▪ 因果图法、▪ 判定表组成法、▪ 正交试验设计、▪ 场景法
自动化测试工具 (如QTP)
性能测试工具 (如loadrunner)
测试管理类 (如jira)
安全测试工具
渗透测试工具
版本号,功能模块,优先级别,前置条件,步骤,预期结果,实际结果等。
首先我要测它的外观、颜色是否符合要求、她所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等。
在设计测试用例时一般从以下几个方面进行分析:功能测试,性能测试,界面测试,安全性测试,兼容性测试,可用性测试,可靠性测试,本地化/国际化测试。
1、Alpha测试
Alpha测试是由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。
2、Beta测试
Beta测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,这是在开发者无法控制的环境下进行的测试。由用户记录下遇到的所有问题,定期向开发者报告。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试
3、验收测试
验收测试是以用户为主的测试,软件开发和QA人员也应该参加,测试一般在用户所在地进行,由用户验证软件产品是否满足了所有的需求的一系列的验收测试工作。
仅限于做项目的公司,部门内部测试稳定后,根据合同中需求由发包商进行验收测试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。
区别:两者的主要区别是测试的场所不同。
端到端的测试:也称为链测试。
它从头到尾验证整个软件及其与外部接口的集成。端到端测试的目的是测试整个软件的依赖性、数据完整性以及与其他系统、接口和数据库等的通信,以模拟完整的生产场景。可以验证完整的系统流程,并通过检测问题和增加子系统的测试覆盖率来提高信心。现代软件系统是复杂的,与多个子系统相互连接,这些子系统可能与当前系统不同。任何一个子系统的故障都可能导致整个系统的崩溃,而端到端测试可以避免这种风险。
软件缺陷产生的原因
软件自身的特点团队设计和实现问题管理问题
对比分析软件测试的W模型和模型
v模型是软件测试在软件开发之后,发现错误或缺陷比较迟,修改成本高
W模型是软件开发和软件测试同步进行的,发现错误或缺陷相对比较早,修改成本较低
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。需要验证软件外部功能是否符合用户实际需求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。可以设计测试用例尽可能覆盖程序中的分支语句,分析程序内部结构。通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
测试的对象不同,集成测试的测试对象是软件本身,系统测试的测试对象是软件及其运行环境组成的一整个系统。
e测试的依据不同,集成测试的依据是概要设计,系统测试的依据是软件规格说明,
测斌的方法不同,集成测试采用的是白盒十黑盒测试,系统测试完全采用的是薰盒测试。
测试的侧重点不同,集成测试的侧重点是各个单元模块的接口及模块集成后所实现的功能,系统测试的主要内容是功能测试、性能测试、安全性测试等
测试人员不同,集成测试是由开发人员或开发人员和测试人员共同完成的。系统测试是由专门的测试人员完成的。
测试和调试的区别
测试是发现错误的过程,调试是发现错误之后修正错误的过程。从职责上进,测试只需要发现错误,不需要修正错误,而调试的职责就是修正错误。
软件评审是除开发人员之外的人员或小东对需求、代码进行评审的正式评价方式。其目的是发现软件中存在的缺陷,找出违背执行标准的情况或其他问题,注意评审活动有软件项目可行性评审、需求评审.设计评审.代码评审,测试评审。
编号、BUG的名称、BUG的优先级、BUG的严重级别、BUG的复现步骤(预期结果、实际结果)、附件(截图\日志\视频、目的是为BUG佐证)
bug编号;
bug严重级别,优先级;
bug产生的模块;
首先要有bug摘要,阐述bug大体的内容;
bug对应的版本;
bug详细现象描述,包括一些截图、录像…等等;
bug出现时的测试环境,产生的条件即对应操作步骤;
唯一性。要能判断出是哪一条代码错误引起的。
可重现。提供这个bug的精确步骤,使开发人员容易看懂。
一致性。bug描述及所有信息要前后一致,不可有歧义。
完整性。最好能抓图,一目了然;测试环境和特定条件一定要描述清楚,
简洁性。通过使用关键词,可以使软件缺陷的标题描述短小简练,又能准确解释产生缺陷的现象。
跟踪性。也许随着版本的变化,或者测试的深入,对bug有了新的认识或者新的判断,及时补充相关信息,能够提供给开发更有用的信息。
客观性。软件缺陷描述不要带有个人观点,不要对开发人员进行评价,软件缺陷报告是针对产品的。
对于不能重现的bug:
1、保留信息。遇到问题,最好抓图,搜集错误日志,保留测试现场环境,一旦发现此问题不可重现,这些数据和信息将很重要。
2、提高意识。很多人在遇到这类问题时,往往觉得后来操作不可重现了,因此就忽视了。这样往往会把此类bug遗留到产品发布后。欠的帐总要还得。
3、自我分析。对于自己分析这类问题,其实对自己的提高是最大的。分析思路:环境问题和操作顺序。
4、寻求帮助。如果研发可以帮忙,并且研发是负责任的话,只有信息全,研发分析往往是最快的途径。如果研发忙或者不乐意做,也是不可厚非的。但就要寻求组内能力强的人员或者组内讨论分析,集中大家的力量往往可以事半功倍。
在做上传视频的测试时,发现华为荣耀V10上传手机自带相机专业模式录制的视频会闪退。而ios上传同个视频提示合成失败。
我将手机自带相机录制的专业模式和普通模式录制的同样时长的视频发到电脑上,用格式工厂软件查看视频的不同之处,之后发现视频编码是不同的。
我继续网上查阅了视频编码方面的知识,发现mp4视频有几种编码,而继续测试验证发现我们的app上传的视频只支持mp4视频中的H.264编码格式。于是提交了视频上传不支持非H.264格式的视频。并补充完善了相关用例。
(因为在公司没有查日志权限,所以其实应该先查日志)
增:insert into book values ('三国演义', '罗贯中', 88, '古典小说'),
('水浒传', '施耐庵', 120, '古典小说');
删:delete from book where name = '红旗谱';
改:update 表名 set 列名1=新数据1,列名2=新数据2列名3=新数据3 where 查询条件
查:select * from book;
select name, author from book where name = '三国演义';
关联查询:
一、外连接
1.左连接 left join 或 left outer join
SQL语句:select * from student left join score on student.Num=score.Stu_id;
2.右连接 right join 或 right outer join
SQL语句:select * from student right join score on student.Num=score.Stu_id;
3.完全外连接 full join 或 full outer join
SQL语句:select * from student full join score on student.Num=score.Stu_id;
二、内连接
join 或 inner join
SQL语句:select * from student inner join score on student.Num=score.Stu_id;
此时的语句就相当于:select * from student,score where student.ID=course.ID;
三、交叉连接
cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。
SQL语句:select * from student cross join score;
建表:
查看 ls 作用:列出目录内容
格式:ls [选项] [目录名]
ls命令选项
-a 列出目录下的所有文件,包含.开头的隐藏文件
-l 列出文件的详细信息
-i 查看文件的iNode号(iNode会指向文件块所在的位置)
-h 以容易读取的方式显示文件大小
-d 仅列出目录本身,而不显示目录中的文件
别名 alias
创建目录 mkdir 、删除文件 rmdir、 创建文件 touch、 删除文件或目录 rm、
复制文件或目录(可以对目标文件或目录重命名) cp
查看文件内容cat tac more less head tail
1、继承Thread类,重写run方法
2、实现Runnable接口,重写run方法。【可以避免由于Java的单继承特性而带来的局限。适合多个线程去处理同一资源的情况】
3、实现Callable接口,重写call方法。【有返回值,允许抛出异常】
4、使用线程池【减少创建新线程的时间,重复利用线程池中线程,降低资源消耗,可有返回值】