测试管理/自动化测试面试题
1. 敏捷开发相对传统瀑布流有哪些优势
敏捷开发相对于传统的瀑布流开发模型,具有以下优势:
灵活性更强:敏捷开发注重迭代和持续交付,能够更快速地响应变化,而瀑布流开发则需要在项目开始前做详细的计划和设计,一旦确定后就很难更改。
更高的透明度和可控性:敏捷开发中每个迭代都有可执行的软件产物,让开发团队、客户和其他利益相关者更容易理解项目的状态和进度,以便及时调整。
更高的用户参与度:敏捷开发强调与客户和用户的协作,能够在不断的迭代中快速反馈和调整需求,以满足客户的期望和需求。
更高的质量保证:敏捷开发通过持续的测试和集成,能够更快速地发现和修复问题,提高软件质量和可靠性。
总的来说,敏捷开发模型可以让团队更快、更灵活地开发软件,同时更好地满足客户需求,提高软件质量和开发效率。
2. 解释一下自动化测试的PO模式
PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性!
把一个页面看成一个对象,页面的元素看成对象的属性和行为。
主要分三层:
1.base层(对象库层):page页面一些公共的方法。如:初始化、元素定位、点击、输入、获取文本、截图等方法;
2.page层(操作层):封装对元素的操作。将每个涉及的元素操作单独封装一个操作方法,然后根据需求组装操作步骤,如登录方法=输入帐号+输入密码+点击登录三个操作进行组装;
3.scripts层(业务层):导包调用 page页面,将一个或多个操作组合起来完成一个业务功能。如:实现登录,直接调用page组装的登陆方法即可。
三者的关系:page层继承base层,scripts层调用page层
3.Python解释器是什么
python解释器(Python Interpreter)是一种程序,它可以读取Python代码并将其转换为计算机可以理解和执行的指令。Python语言的官方解释器是CPython,它是用C语言编写的,并且是Python语言的参考实现。除了CPython之外,还有其他的Python解释器,如Jython,IronPython和PyPy等。
本质上就是Python.exe,是用来解释运行编写的Python代码的,而Pycharm则是一个IDE(主要是让我们编写程序更加方便,或者说看起来更加简单,不需要用文本或在dos窗口编写代码),但是Pycharm是不带Python解释器的,所以要在安装Pycharm之前,安装好Python。
4.解释器的工作原理
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。
py文件的执行过程原理:
执行 python XX.py 后,将会启动 Python 的解释器
python解释器的编译器会将.py源文件编译(解释)成字节码生成PyCodeObject字节码对象存放在内存中。
python解释器的虚拟机将执行内存中的字节码对象转化为机器语言,虚拟机与操作系统交互,使机器语言在机器硬件上运行。
运行结束后python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
5.测试项目过程中,如何评估测试人员的好坏
测试效率:测试管理人员可以评估测试人员的测试效率,包括他们在规定时间内测试的用例数量、测试代码的覆盖率等等。
测试质量:测试管理人员可以检查测试人员编写的测试用例是否覆盖了系统的各个方面,测试用例是否能够捕捉到错误等等。
问题报告:测试管理人员可以评估测试人员提交的问题报告的质量和准确性,包括问题描述的完整性、问题的严重性等等。
团队合作:测试管理人员可以观察测试人员与其他成员的协作能力,例如,测试人员能否遵守时间表,与开发人员和其他团队成员沟通得如何等等。
责任心:测试管理人员还会根据测试人员对测试任务的认真程度、精度和质量来评估他们的责任心。
测试能力:测试管理人员会根据测试人员的经验、技能和专业知识来评估他们的测试能力。这可以通过观察他们在测试过程中的表现和参与到的测试类型及质量来评估。
6.测试项目过程中,如何评估测试质量的好坏
测试覆盖率:测试覆盖率是指测试用例对被测系统的覆盖程度。测试覆盖率越高,说明测试对被测系统的覆盖越全面,测试质量也相对更好。
缺陷发现率:缺陷发现率是指在测试过程中发现的缺陷数量与测试用例总数的比率。缺陷发现率越高,说明测试发现的缺陷越多,测试质量也相对更好。
测试执行效率:测试执行效率是指在规定的时间内完成测试用例的数量。测试执行效率越高,说明测试过程中花费的时间更少,测试效率更高。
缺陷解决率:缺陷解决率是指在测试过程中发现的缺陷被解决的比率。缺陷解决率越高,说明缺陷被及时修复,测试质量也相对更好。
敏捷测试过程的度量体系
测试质量和测试效率是需要度量的两个最基本的目标。团队可以梳理出一些能直接或间接反映质量和效率的指标。
测试质量直接的度量指标包括测试覆盖率、遗漏的缺陷率等。
测试效率的直接度量指标包括:每人•日设计多少用例/执行多少用例、自动化测试率以及缺陷验证周期等。间接的测试质量度量指标可以是度量测试环境的稳定性、可靠性等。
理论上可以用来度量测试质量和效率的指标有很多,如果所有的指标都进行度量,那么分析的工作量大不说,也容易让过程管理失去重点。团队应该根据自身情况选择合适的度量指标,基本的指导思想是:看重什么就度量什么;想提高什么,就度量什么。这也符合敏捷思维。
一个敏捷测试过程的度量体系如图所示,从测试质量、测试效率、产品质量三个方面进行度量,覆盖了测试设计、执行、缺陷报告等重要活动。测试计划和分析的质量会体现在测试覆盖率和缺陷相关的度量指标中。

通过上图可以看出,测试质量的度量指标大多数是根据测试用例(包括测试脚本)和发现的缺陷制定的。度量指标对测试工作质量的量化分析提供了基础。因此可以说,测试工作的质量是通过对测试结果的分析来评估的。根据测试结果计算每一个度量指标,通过度量指标分析、发现测试过程中的质量问题,在此基础上不断改进、完善。
基于测试覆盖率分析测试工作质量
评价测试质量的好坏首先要分析测试结果是否达到了既定的测试目标,测试目标是测试计划中最重要的内容之一,一般会用测试覆盖率来衡量测试目标的实现。测试覆盖率是对测试充分性的量化指标,指已执行测试覆盖的数据和事先定义/要求的目标之间的比值,趋向于或达到 100%,说明覆盖率足够高。通常从三个方面来衡量:代码覆盖率、功能覆盖率和业务覆盖率。
基于缺陷分析测试工作质量
缺陷作为测试活动的另一项重要输出,也可以作为评估测试质量的指标,包括缺陷在测试活动中的误报率、缺陷的遗漏率。
缺陷的误报率 = 无效的 bug 数 / 所报告的总 bug 数
通常情况下,缺陷的误报率应该掌握在 5~10% 以内。
缺陷的遗漏率 = 交付后发现的 bug 数 / 总 bug 数
交付后用户发现的缺陷值得分析,究竟是什么原因导致在研发过程中没有发现?如果是因为产品的业务需求没有覆盖到,则需要产品负责人考虑是否在下一版加到业务需求中,比如对某个操作系统的某个新版本的支持。如果是因为测试质量的问题,那要看问题出在什么环节,是测试分析、测试设计、还是测试执行,是人的问题还是工具的问题,然后有针对性地改进,比如添加测试用例、加强人员技能培训,或者改进测试工具。
7.当研发团队资源不足且需要按时交付新的需求时,作为项目管理者,要怎么做
与客户或相关利益相关方联系,了解他们对上线时间的期望和要求,并与他们沟通实际情况。如果必要,尝试与他们协商调整交付时间。
确定优先级,将重要的功能或任务放在前面,确保在短时间内能够交付最有价值的部分。
按照 Agile 方法,采用迭代开发,先实现 MVP(最小可行产品),随后逐渐迭代,逐步完善产品。
研发团队内部资源的分配非常关键,可以将一些任务外包或协助其他团队进行处理。也可以考虑加班或招募更多的开发人员来加速开发进度。
要确保沟通的畅通,团队内部及与利益相关方的交流要尽量充分,避免出现误解或遗漏信息的情况。
最终目标是在满足交付时间的前提下,尽量保证产品的质量和稳定性。
8.作为测试管理者,如何保障测试质量
为了保证测试质量,需要从测试的各个阶段入手。首先在需求阶段就要介入,参与需求评审,深入了解项目。在需求、UE、UI评审完成之后,可以组织需求反串讲,或者进行需求答疑,提前暴露出需求中不严谨或者大家理解不一致的情况,确保需求没问题再展开,避免后期返工。
其次,在用例设计完后要组织用例评审,确保用例的覆盖度,从测试、开发和产品的角度更充分的完善测试点。
接着在后端接口梳理完成,进行前后端联调的时候,测试可以提前介入,进行接口测试,提前了解接口的设计思路,在前期发现问题。
此外,开发完成后,需要对主流程进行冒烟测试,避免提测后质量太差,导致提测后反复无效测试。
在测试阶段,对本次新功能迭代的用例要在上线前全量覆盖,并且梳理出整个产品P0、P1级别的用例,上线前进行回归验证,确保新功能正常,并且不会影响老功能。
最后,针对长期稳定的功能,可以实现自动化测试,提高测试效率和测试覆盖率。
还有定期组织线上问题复盘,输出组织经验与教训,在后续项目中持续补充,不断完善。
制定测试计划:制定详细的测试计划可以帮助测试团队明确测试的目标和范围,提高测试效率和测试覆盖率。
设计测试用例:设计有效的测试用例可以帮助测试团队更好地发现软件中的缺陷,并确保软件的功能得到充分测试。
执行测试用例:测试团队需要按照测试计划执行测试用例,发现和记录软件中的缺陷。
自动化测试:利用自动化测试工具可以提高测试效率和测试覆盖率,并减少测试人员的手动测试工作量。
建立良好的沟通渠道:测试团队需要与开发人员和项目经理建立良好的沟通渠道,确保测试的目标和需求得到充分理解和支持。
建立测试文档库:建立测试文档库可以帮助测试团队更好地管理测试文档和测试数据,提高测试工作效率。