很多甲方缺乏自己的开发、测试团队,委托乙方来做软件开发,开发完成后,缺乏验收的能力,从而导致:
功能是否符合,不确定;隐藏的缺陷无法发现;
性能不达标,造成使用中的不确定风险巨大;
安全不过关,容易造成系统被攻击、数据被泄露、系统无法正常使用;
因此,需要第三方来进行验收测试。
整个的测试过程,按照:
测试需求分析:根据需求,分析系统的功能点,得到测试大纲;
测试设计:根据测试大纲,按照不同的用例设计方法,设计测试用例;
测试构建:按照各个系统的依赖关系,组成多个批次的测试用例,并且根据测试用例来构件测试数据;
测试执行:按照轮次来依次执行,记录测试执行过程和提交发现的缺陷;
缺陷管理:根据预先定义好的缺陷管理流程,来跟踪处理缺陷,直到缺陷全部关闭,或者达到投产标准;
测试分析:分析测试过程,包括缺陷趋势、缺陷统计、测试用例分析、产能分析、质量分析等
测试的过程包括:
需求建模:表述每个交易的输入输出、数据和约束、业务流程;
需求分析:根据需求书,分析各个功能点,以及功能点场景;
脚本设计(如果需要自动化测试):对每个交易的输入输出进行约束,并且以脚本的参数来关联;
场景设计:根据需求模型,创建不同的测试场景;
约束设计:定义各个字段的业务数据;根据需求的业务规则,使用数据来定义业务规则;也可以通过业务规则复用;设置不同的用例设计测试项组合;
生成测试用例:根据以上的阶段,设计完成测试用例,并且导入系统。
根据测试的业务交易对应的输入场,来设计不同的测试数据;
不同的测试数据,可以分类为内点、边界值、无效值,当生成测试用例,就可以自动生成不同类型的测试用例;
需求以树或者列表的方式导入系统:
通过excel或者word导入,实现需求的条目化;
跟踪每个需求的状态;
为每个需求关联对应的测试用例;
为每个需求关联发现的缺陷;
设置需求的评审状态
按照各个系统的依赖关系,确定测试计划,安排执行的轮次;
把相关功能的测试用例安排到一个测试集合中;
可以通过敏捷,实现多个版本的快速迭代测试;
测试用例执行过程:
选中准备执行的测试集合,发起执行;
创建测试环境,分配给具体的测试工程师测试任务;
执行测试用例,并且提交测试过程数据;
对发现的缺陷提交到缺陷管理系统;
测试执行
填报测试过程数据,包括:测试执行步骤、测试执行的附件(截屏)、测试执行的描述,每个步骤执行的情况、执行的状态(成功、失败、无法执行)等信息。
测试分析,主要是对测试的目标范围、测试的策略、测试的过程、测试发现的问题进行分析,以及给出是否通过的结论
缺陷严重等级统计图:
缺陷--模块分布图:
缺陷分布统计图:
测试分析需要给出一个结论,即按照验收测试的通过标准,是否达到。如果没有达到,就需要开发厂商进行整改(修复缺陷),并且进行复测,以确定缺陷被修复,达到验收标准。
验收测试的要求如下:
通过性能测试,来适配软硬件环境是否达到验收要求;
通过性能测试,验证系统的容量是否达到要求;
通过性能测试,来验证负载是否可以达到运行的要求;
性能测试的过程包括:
根据系统的实际情况,以及性能情况,安排测试计划;
按照具体的要求,建立测试模型,分析被测试系统的数据、并发、响应时间、配置参数等;
根据具体的业务情况,设定各个高峰时段的测试场景;
基于具体的协议和应用接口,创建测试脚本;
使用设计好的场景,来进行加压;监控和分析,在执行中出现的异常;
对性能进行分析,出具性能测试报告;
分析系统拓扑架构,建立监控模型
根据系统的拓扑图,来设立监控采样点和采样数据;
便于进行加压过程的数据采样分析
根据当前的交易量统计,以及未来客户的预期,来确定压力测试的目标
发现峰值:
根据交易量排名,发现峰值场景和峰值业务
根据CPU、IO、网络使用情况来发现峰值;
根据综合分析,确定不同的业务场景;
对每个业务场景进行加压,来发现性能问题,预防潜在风险;
根据当前、未来的业务数据量,来造对应的场景数据,以保证测试的准确性
使用类如PerformanceRunner的性能测试工具,来录制测试脚本或者编写性能测试脚本;
针对典型协议,如http、https、socket等,可以实现录制;
根据前面的业务场景分析,使用测试脚本创建测试场景;
执行测试场景,监控测试数据;
事务响应时间
吞吐率
使用各种安全工具进行抓包、来进行渗透攻击;
使用安全工具进行自动化扫描,发现系统漏洞;
使用安全工具,通过手工测试来逐个扫描软件的功能,发现系统的漏洞;
主要在http、https、tcp、udp层面进行抓包
自动化遍历页面的元素,并且自动生成安全测试用例,发起渗透测试
SQL注入攻击,是常用的攻击之一。进行sql注入测试的方法如下:
人工功能模块遍历测试:
通过人工来进入每个功能,进行操作,由抓包工具负责抓包,然后根据数据包来生成各种渗透测试案例,进行渗透测试:
安全测试完成之后,会提交安全测试报告给甲方;
并且向开发团队提供安全测试的问题咨询服务,协助开发运维团队解决各种安全问题;
对修复之后的系统,进行回归测试,确保已经发现的缺陷被修复,没有出现新的缺陷;
高标准、经验丰富的测试团队;
遵从各种测试标准;
专业的测试工具与测试技术;
专业的测试分析报告,以及问题修改指导;