基于系统测试层面的个人经验总结:
(一)用例设计、执行、管理、沟通:
第一:测试用例的设计。在需求分析、概要设计、详细设计阶段均需要设计测试用例,测试用例设计的有效性和合理性对整个测试执行起着至关重要的作用,它将直接影响缺陷发现率。如果用例如何设计的不太合理,满足了出口准则,但在发布以后,产生的大量缺陷,将直接影响用户满意度,浪费时间和资源,那么,如何进行测试用例的设计?怎么设计出高效率的测试用例呢?
1)要明确,对于开发所关心的是功能是否可以被实现和如何具体实施,而对于测试来说,关注的是功能是否被正确实现,而不管这些功能是如何被具体实施的;
2)在设计用例的过程中,要保证每一个功能点均有相应的用例所对应,保证测试用例对需求100%的覆盖;
3)测试人员需要对被测软件的需求和业务进行全面了解,否则对被测对象了解不深,只能就被测单元的功能设计用例,而对于该功能点所要执行的流程无法正确保证,此时可与需求分析人员和客户进行交流,以获得更多的业务方面的信息;
4)采用各种测试用例设计方法,用最适合的方法来达到用尽量少的用例来发现尽量多的BUG,如针对功能测试的等价类,边界值,因果图法,状态迁移图,正交分析法,错误猜测法,场景路径覆盖;针对单元测试的语句覆盖,分支覆盖,条件覆盖,条件组合覆盖,路径覆盖,循环覆盖,针对类的功能性和结构性测试、数据流测试,异常测试,对类的方法的测试等。
用例的设计是一个长期经验积累的过程,需要我们在工作中多留心,才会有新发现、新思想。
第二:测试用例的执行。测试用例的执行过程将是缺陷产生和修复的过程,同时也是测试用例进行更新和优化的过程。
1)缺陷的提交与跟踪;
测试人员进行测试用例的执行,在执行过程中,做好每日缺陷的提交,测试主管对缺陷进行分配及对修改时限的要求,开发人员进行缺陷的修改,修改完毕后,测试人员进行回归测试,并时刻关注缺陷库缺陷的状态及严重级别较高的缺陷进行及时跟踪。我们在亦庄的项目在这点就做的不错。
2)缺陷的收集与度量;
测试人员要保证所描述的缺陷是清楚的、准确的,必要时要配有截图,开发人员修改完毕后,要保证注明原因和解决的办法,有了上述两条的保证,缺陷的收集和度量工作将变的非常容易,对缺陷进行分析如发现缺陷多位于边界值,那么可以根据此项对公司的编程规范进行相应的完善。当对几个项目进行缺陷收集和度量后,具备一定的条件情况下,将可对类似项目进行缺陷的预防工作。
3)缺陷报告:
阶段性的缺陷报告反映了项目的进展情况,利于测试主管判断是否有趋势显示需要增加测试的区域或判断项目是否符合预定发布日期的正常轨道上,并可根据缺陷报告所反映的情况进行调整未来测试任务的时间。
第三:用例的更新与管理。
在执行测试用例的过程中,由于需求或程序具体实施的变更,测试的相应步骤需要进行调整或补充测试用例,测试用例的执行过程也将是测试用例进行更新和优化的过程。
缺陷的收集是一个良好的习惯,而测试用例的规范化管理同样也是一个不错的行为,将测试用例放入项目历史用例库,可为类似项目的测试人员提供借鉴、开拓思路、节约时间,共享的数据资源,可以让测试人员有更多的时间和精力放在对测试过程的考虑和测试用例的选择方面,逐步提升整个测试团队的用例设计水平。
第四:沟通与交流。在软件开发的过程中,交流占有非常重要的地位,因为有时项目紧、时间短,文档来不及更新,那么这时就需要及时与开发进行沟通与交流,对软件功能的具体实现,最新最正确的理解也许就在开发的大脑中,只有及时交流才会获得最及时的信息,尽早测试并完善测试用例。
(二)性能测试过程:
性能测试在软件的质量保证中起着重要的作用,对于一个系统当功能满足要求以后,还要考虑它的性能问题,它是否满足需求,是否能够达到最终用户的性能要求,是否适应未来业务的增长等,这是在系统正式运行前大家都比较关心的问题,以下从性能测试的过程来说明性能测试是如何开展的,以及各阶段相关人员的配合情况。
1)测试前期准备:开展性能测试的前期阶段,要求被测对象至少具有一定的稳定性,在功能上基本满足需要,同时性能测试不仅仅是测试人员的事情,可能需要整个项目组的参与,性能测试人员需要协调相关的人员,组建成一个合适的测试团队;在制定性能测试计划之前,要充分了解需求,与相关的需求人员进行沟通。
2)测试工具的引入:性能测试工具的选择,自动化的性能测试工具不是对每一个系统都适合的,要进行一个功能符合度的评估,如所有的工具无法达到要求的功能符合度,可根据公司情况自行开发。
3)测试计划:该阶段主要由性能测试人员制定性能测试计划,重点需要了解,系统有哪些重要的功能模块,大约的用户是多少,用户的行为是如何分布的,每个模块的使用频度,大约的数据量,使用什么样的硬件,系统稳定性的要求等等制定测试计划。
4)测试设计与开发:设计性能测试场景,第一客户端性能的测试:主要考虑并发性能测试,疲劳强度测试(负载测试),大数据量测试(压力测试)和速度测试,以并发性能测试为重点;第二网络上性能的测试:主要是利用成熟先进的自动化技术进行网络应用性能监控,如:网络带宽、延迟、负载、TCP端口的变化是如何影响用户的响应时间的;网络应用性能分析,如:哪些应用程序占用大量带宽,哪些用户产生了最大的网络流量;网络预测:预测网络流量的变化、网络结构的变化对用户系统的影响,进行容量极限分析,预测网络设备迁移和网络设备升级对整个网络的影响。第三服务器端性能测试:实现服务器设备、服务器操作系统、数据库系统、应用服务器等的全面性能监控。
同样监控应选择用户较为关心的模块或系统中较容易出现问题的模块进行性能测试场景的设计与开发。
5)测试执行和管理:运行脚本监控,添加性能监控指标,由性能测试人员执行。
6)分析结果和优化性能:对脚本的运行结果进行收集,并查看相关的性能测试指标,将性能测试结果提交给相关人员对结果进行分析,需要性能测试人员,架构师,程序员,SA,DBA共同参与对结果进行评估,对系统进行优化后,再次执行性能测试,多次结果对比,以达到满足公司标准或规范,满足性能测试出口准则。
测试是一个不断深入的过程,由系统测试向前期的单元测试和低粒度的集成测试迈进是我们测试人员努力发展的一个方向。
结束语:软件质量的提高是一个综合的因素,需要从各个方面进行改进,同时还要兼顾成本和进度,只有对流程不断的更新和改进,才能更好的提高效率,组织的支持是保证流程有效推广的坚强后盾,加上技术的不断深入,必将质量稳步提升,流程、技术、组织是影响软件质量的铁三角。