软件测试
软件测试,该阶段是软件开发完成后对软件进行测试,以查软件设计与软件开发过程中存在的问题并加以修正。软件测试过程包括单元测试、集成测试、系统测试3个阶段;测试的方法以黑盒测试、白盒测试或者两者结合的形式进行。在测试的过程中,为减少测试的随意性,需要制订详细的测试计划并严格遵守;测试完成之后,要对测试结果进行分析并对测试结果以文档的形式汇总。
软件测试是使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异。
按照使用的测试技术可以将软件测试分为黑盒测试与白盒测试。黑盒测试就是把软件(程序)当作一个有输入与输出的黑匣子,它把程序当作一个输入域到输出域的映射,只要输入的数据能输出预期的结果即可,不必关心程序内部是怎么样实现的。白盒测试又叫透明盒测试,它是指测试人员了解软件程序的逻辑结构、路径与运行过程,在测试时,按照程序的执行路径得出结果。白盒测试就是把软件(程序)当作一个透明的盒子,测试人员清楚地知道从输入到输出的每一步过程。相对于黑盒测试来说,白盒测试对测试人员的要求会更高一点,
它要求测试人员具有一定的编程能力,而且要熟悉各种脚本语言。但是在软件公司里,黑盒测试与白盒测试并不是界限分明的,在测试一款软件时往往是黑盒测试与白盒测试相结合对软件进行完整全面的测试。
按照软件质量特性可以将软件测试分为功能测试与性能测试。功能测试就是测试软件的功能是否满足客户的需求,包括准确性、易用性、适合性、互操作性等。性能测试就是测试软件的性能是否满足客户的需求,性能测试包括负载测试、压力测试、兼容性测试、可移植性测试和健壮性测试等。
按照自动化程度可以将软件测试分为手工测试与自动化测试。手工测试是测试人员一条一条地执行代码完成测试工作。手工测试比较耗时费力,而且测试人员如果是在疲惫状态下,则很难保证测试的效果。自动化测试是借助脚本、自动化测试工具等完成相应的测试工作,它也需要人工的参与,但是它可以将要执行的测试代码或流程写成脚本,执行脚本完成整个测试工作。
回归测试。当测试人员发现缺陷以后,会将缺陷提交给开发人员,开发人员对程序进行修改,修改之后,测试人员会对修改后的程序重新进行测试,确认原有的缺陷已经消除并且
没有引入新的缺陷,这个重新测试的过程就叫作回归测试。回归测试是软件测试工作中非常重要的一部分,软件开发的各个阶段都会进行多次回归测试。
验收测试。验收测试主要是对软件产品说明进行验证,逐行逐字地按照说明书的描述对软件产品进行测试,确保其符合客户的各项要求。
软件测试模型包括V模型、W模型、H模型、X模型。软件测试流程包括1分析测试需求;2制订测试计划;3设计测试用例;4执行测试;5编写测试报告。
常用的黑盒测试方法包括等价类划分法、边界值分析法,因果图与决策表法、正交实验设计法等。
逻辑覆盖法是白盒测试最常用的测试方法,它包括语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、条件组合覆盖5种,其路径覆盖率是递曾的,由弱覆盖到强覆盖。为了提高路径覆盖率应选择合适的逻辑覆盖法。条件组合覆盖包括了所有判定—条件覆盖,因此它的覆盖范围更广。但是当程序中条件比较多时,条件组合的数量会呈指数型增长,组合情况非常多,要设计的测试用例也会增加,这样反而会使测试效率降低。
程序插桩法分为目标代码插桩和源代码插桩。目标代码插桩对程序运行时的内存监控、指令跟踪、错误检测等有着重要意义。相比于逻辑覆盖法,目标代码插桩在测试过程中不需要代码重新编译或链接程序,并且目标代码的格式和具体的编程语言无关,主要和操作系统相关,因此目标代码插桩有着广泛的使用。目标代码插桩法的原理是在程序运行平台和底层操作系统之间建立中间层,通过中间层检查执行程序、修改指令,开发人员、软件分析工程师等对运行的程序进行观察,判断程序是否被恶意攻击或者出现异常行为,从而提高程序的整体质量。目标代码插桩分为两种情况:一种是对未运行的目标代码插桩,从头到尾插入测试代码,然后执行程序。这种方式适用于需要实现完整系统或仿真时进行的代码覆盖测试。另一种情况是向正在运行的程序插入测试代码,用来检测程序在特定时间的运行状态信息。源代码插桩是指对源文件进行完整的词法、语法分析后,确认插桩的位置,植入探针代码。相比于目标代码插桩,源代码插桩具有针对性和精确性,实现复杂程度低。源代码插桩是源代码级别的测试技术,探针代码程序具有较好的通用性,使用同一种编程语言编写的程序可以使用一个探针代码程序来完成测试。程序插桩测试方法有效地提高了代码测试覆盖率,但是插桩测试方法会带来代码膨胀、执行效率低下和HeisenBugs。
性能测试从软件的响应速度、稳定性、兼容性、可移植性等方面检测软件是否满足用户需求。性能测试常用的指标包括响应时间、吞吐量、并发用户数、TPS、点击率、资源利用率等。性能测试的种类:负载测试;压力测试;并发测试;配置测试、可靠性测试;容量测试。性能测试工具:LoadRunner和JMeter。
做好软件安全测试的必要条件有2个,一是充分了解软件安全漏洞,二是拥有高效的软件安全测试技术和测试工具。安全测试贯穿于软件周期各个阶段:安全需求;风险分析、静态分析、渗透测试。普通测试以发现Bug为目标;安全测试以发现安全隐患为目标。普通测试以违反功能定义为判断依据;安全测试以违反权限与能力的约束为判断依据。黑盒的渗透测试和白盒的源代码扫描内外结合,可以使软件的安全性得到极大程度的提高。常见的安全漏洞:SQL注入;XSS跨站脚本攻击;CSRF攻击。Web漏洞可以通过渗透测试验证。渗透测试是利用模拟黑客攻击的方式,评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析,并且有条件地主动利用安全漏洞。渗透测试是一个渐进的并且逐步深入的过程;渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。渗透测试流程:明确目标;收集信息;扫描漏洞;验证漏洞;分析信息;渗透攻击;整理信息;编写测试报告。安全测试常用工具:1.
Web漏洞扫描工具—AppScan;2.端口扫描工具—Nmap;3.软件测试app抓包工具—Fiddler;4.Web渗透测试工具—Metasploit。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论