1. 软件生命周期是什么?
软件生命周期:需求调研(可行性研究)、需求分析(需求规格说明书)、设计(系统架构、模块设计、表结构设计、接口设计等,产出概要设计文档和详细设计文档)、编码(代码)、测试(测试报告)、实施部署、产品运维支持。
2. 软件测试阶段有哪些?
软件测试阶段主要有需求测试、单元测试、集成测试、系统测试、验收测试
需求测试:主要是对需求规格说明书进行测试,找到需求规格中的缺陷。
单元测试:是针对软件基本组成单元(函数、类)来进行正确性检验的测试工作,目的是检测软件模块对《详细设计说明书》LLD的符合程度。
集成测试:是对单元之间及单元与第三方接口之间的测试,目的是验证接口是否与设计相符,是否与需求相符。(即检测软件模块对《概要设计说明书》的符合程度)。
系统测试:是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试工作。
验收测试:交付用户部署前,进行验收测试。主要有Alpha测试和Beta测试,其中Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,即发放一部分给用户进行测试,并要求用户报告异常情况、提出批评意见,然后软件开发公司再对β版本进行改错和完善。
3. 你觉得作为测试人员应该从什么时候介入?
测试基本原则,测试尽早介入(越早找出缺陷,修复成本越低,风险越低),所以我们公司的测试介入是在需求人员产出需求规格书的时候就介入了,测试规格说明书。
4. web和App测试上有什么区别?
1. 系统结构方面
Web项目:B/S架构,基于浏览器的;Web测试过程中,客户端会随服务器端同步更新,所以只需更新服务器端即可。
App项目:C/S架构,基于客户端的;App测试过程中,只要修改了服务端,那么客户端用户所有核心版本都需要进行回归测试1次。
2. 性能方面
Web项目:主要关注服务端性能,需要监测服务端响应时间、CPU、Memory,另外则还需系统能支持多少用户同时在线;超过最大用户数,系统会给出什么样的反映
App项目:主要需要关注客户端性能,需要监测终端设备的响应时间、CPU、Memory,另外则还需监测流量、电量等
3. 兼容性方面
Web项目:首先,考虑操作系统兼容(Windows7、Windows10、Linux等);其次,考虑浏览器兼容(Edge、Firefox、Chrome、360等)
App项目:首先,考虑设备系统兼容(Android【华为、联想、小米、三星等】、 iOS【ipad、iphone】、Windows【Win7、Win8】、OSX【Mac】);其次,考虑手机设备的大小、型号、分辨率的兼容
4. 测试工具方面
Web测试: 自动化工具通常使用Selenium,性能测试工具通常使用LoadRunner / JMeter
App测试:自动化工具通常使用Appium / Monkey,性能测试工具通常使用JMeter
5. 专项测试方面
App专项测试
安装:需考虑安装时的中断、弱网以及安装后删除安装文件等情况
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新等几种情况
卸载:需考虑卸载后App相关文件是否删除干净
权限测试:设置某个App是否可以获取该权限,比如是否可访问短信、读取联系人、相册、照相机、位置信息等
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置
界面操作:关于手机端测试,需注意横竖屏切换、多点触控、手势、事件触发区、前后台的切换(从后台回到App,检查是否停留在上次操作界面、功能和应用状态是否一样)等
干扰测试:电话响应(接通、呼叫挂断、呼叫保持)、收发短信、中断(插拔数据线、手机锁屏、闹钟、蓝牙等)、电量不足、关机、重启、死机等
网络测试:首先,弱网络测试(模拟2G、3G、4G、WiFi网络状态以及丢包情况,重点要考虑回退和刷新是否会造成二次提交);其次,网络切换测试(网络断开后重连、3G切换到4G/WiFi等)
5. 谈谈你以往测试工作的具体测试流程。
我们公司的软件测试流程主要是先进行需求分析,然后对需求评审,后面根据需求提取测试项和测试子项,编写测试方案和测试用例,测试用例写完之后进行测试用例评审,版本转测试后执行用例,测试过程中存在Bug的话就在禅道管理工具上进行Bug的提交管理,Bug修改完成之后对Bug进行回归测试,最后整个需求测试完成之后提交测试报告。
6. 说说做好测试用例设计工作的关键是什么?
1、 需求分析评审过程中做好对需求覆盖的完整性、有效性、可理解性、清晰性、可维护性。
2、 熟悉测试用例设计方法,对不同的功能场景使用合适的用例设计方法。
3、 结合以往的经验和线上问题的反馈,对于该需求可能出现问题的地方重点设计测试用例覆盖。
4、 做好测试用例的评审。
7. 软件项目测试从什么时候开始,依据是什么?
在整个软件开发过程中,测试应该尽早介入,我们公司从需求分析评审阶段测试就开始了。
8. 简述Bug缺陷的生命周期。
我们公司的Bug生命周期是这样的:
测试人员发现bug之后新建一个bug提交给测试经理,此时bug状态为新建
测试经理判断是否是重复bug,如果是则把bug走给提交bug的测试人员让其关闭,关闭理由为非问题关闭或者重复问题关闭;如果测试经理确定是不重复的bug,则把bug走给开发经理,此时bug的状态为打开状态,待开发修复
开发经理判断bug是否要推迟修复,如果是则把bug延迟,此时bug状态为推迟修改;如果不要推迟修改,则把bug分配给具体开发人员
开发人员接收到bug后,定位如果不是问题,可以与测试人员沟通拒绝bug,拒绝之后bug状态为已拒绝;定位如果是问题,则开始修复bug,修复完成后提交给测试人员回归验证,此时bug状态为已修复
测试人员接收到bug后,对bug进行验证,如果验证通过则关闭bug,此时bug状态为已关闭,如果验证不通过,把bug重新打回给开发重新修改,此时bug状态为回归测试失败重新打开,直到bug完全修复关闭为止。
9. 你们项目测试工作是怎么分配的?
每一次迭代任务有不少需求,把不同需求分给不同的测试人员,主要是根据时间、人员能力、对需求的熟识度等因素分配任务。
10. 你们项目的测试环境有几个?
1、 开发环境(DEV):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。
2、 测试环境(UAT):测试人员平时用的环境,一般有测试维护,如构建部署等,测试环境由测试做主。
3、 预发布环境(PRO):在线上的独立的一个环境,为避免因为测试环境和生产环境的差异性等带来的缺陷漏测而设立的一套环境,其配置等基本和线上一致,只是预发布环境web服务器不在线上集成服务器范围之内,为单独的一台机器;
4、 生产环境(PRD):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者修改。