全员编程的时代下,软件测试如何转渗透测试?
Posted 不是Z君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全员编程的时代下,软件测试如何转渗透测试?相关的知识,希望对你有一定的参考价值。
随着时代的不断发展,软件测试这一行越来越不好做了,各种自动化工具的普遍,再加上00后都开始抢饭碗了(开个玩笑)。
软件测试:(Software Testing),一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
做软件测试是离不开工具的,通过一些工具能够使软件的一些简单问题直观的显示在测试人员的面前,这样能使测试人员更好的找出软件错误的所在。
**渗透测试(penetration test)**渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。
软件测试工具分为 自动化软件测试工具 和 测试管理工具。
自动化软件测试工具存在的价值是为了提高测试效率,用软件来代替一些人工输入。
测试管理工具是为了复用测试用例,提高软件测试的价值。
一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大提高。
下面简单的介绍几种软件测试工具
Openstack
是专用于 B/S 结构的、免费的性能测试工具。它的优点除了免费、源代码开放的优点外,还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。
QTP
一个 B/S 系统的自动化功能测试的利器,软件程序测试工具。Mercury 的自动化功能测试软件 QuickTest Professional ,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。Mercury QuickTest Pro 是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为,为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。
JMeter
Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。
WebInject
一个自动化测试工具,主要适合 Web 应用和 Web 服务。可以通过它来测试基于 HTTP 接口的系统组件,还可以用它来进行服务器监控。
BugFree
借鉴微软的研发流程和 Bug 管理理念,使用 php+mysql 独立写出的一个 Bug 管理系统。简单实用、免费并且开放源代码(遵循GNU GPL)。命名 BugFree 有两层意思:一是希望软件中的缺陷越来越少直到没有;二是表示它是免费且开放源代码的,可以自由使用传播。
Bugzilla
一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。
selenium-core
使用 html 的方式来编写测试脚本,你也可以使用 Selenium-IDE 来录制脚本,但是目前 Selenium-IDE 只有 FireFox 版本。
Testlink
用于进行测试过程中的管理,通过使用 TestLink 提供的功能,可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。
TMantis
一个基于 PHP 技术的轻量级的缺陷跟踪系统,其功能与前面提及的 JIRA 系统类似,都是以 Web 操作的形式提供项目管理及缺陷跟踪服务。在功能上可能没有 JIRA 那么专业,界面也没有 JIRA 好看,但在实用性上足以满足中小型项目的管理及跟踪。
MaxQ
一个 Web 功能测试工具。它包括一个记录测试脚本的 HTTP 代理,一个用于重放测试的命令行实用程序。代理记录器自动存储提交到表单的变量,无需自己记录。
软件测试的流程
测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议
测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
测试设计阶段:主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束。
测试评估阶段:出测试报告,确认是否可以上线。
其中在测试执行阶段,进行环境的搭建,一些预测试等,然后寻找漏洞,错误测试等等,与网络安全中的渗透测试大同小异。
作为一个渗透测试人员,每天的工作就是面对 web 的应用、网络、系统的安全漏洞。 用另一种话说,就是你被付薪水来做合法 hacker。在这个很酷的工作,你将会使用一系列的渗透测试工具一些是预先决定的,一些事你自己设计的,来模拟真实生活中的网络攻击。你的最终目标就是帮助组织证明他们的安全性。
【合法的 hacking 是“性感”和“无聊”的混合(真的是无聊,天天写报告)。不像真实世界的黑客(可以为所欲为),你可能只有几天的时间来侵入一个系统。甚至,你要表达清楚你使用的方法和技术。渗透测试被称作信息安全领域最令人沮丧的工作之一】
你可能做一些事,比如:
执行一个常规渗透测试给基于web的程序网络以及计算机系统。
给服务器系网络设置进行一个物理性安全评估。
设计和创建一个新的渗透测试工具。
探测 web 应用,客户端应用和标准协议的漏洞指出攻击者可能使用的方法来利用弱点和缺陷。
利用社会工程来揭露系统漏洞(脆弱的用户安全操作或密码策略 )。
与之合作的公司的考虑(比如因停机而遭受的损失)。
与管理者、IT队伍研究、说明、议论安全发现。
检查和定义信息安全措施的要求。
致力于提高安全服务,包括持续的提高现有的方法来支持评估提供回馈和评估为一个组织解决安全问题
在一个渗透测试里,你将会集中于利用漏洞(作为目标进入系统)。
一个渗透测试团队会对开放的系统进行拍照,来表示他们能够进入数据库,而不是像罪犯那样实际的去获取数据。
为什么做软件测试的也可以做渗透测试呢?
首先,软件测试人员掌握多种测试工具,可以对 web 应用进行全方面的分析;熟悉多种编程语言,可编写一些基本的脚本及工具;对应用产品功能流程的了解,对常见的登录注册、商城等应用场景有所了解。尝试从软件测试进入渗透测试也并非难事。
任何形式的攻防对抗,最重要的一条就是掌握主动权。借助渗透测试,可以先于黑客发现系统安全隐患,提前部署好安全防御措施,保证系统的每个环节在未来都能经得起黑客挑战,进一步巩固客户对企业及平台的信赖。
通过渗透测试,企业用户可以从攻击角度了解系统是否存在隐性漏洞和安全风险,特别是在进行安全项目之前进行的渗透测试,可以对信息系统的安全性得到深刻的感性认知,有助于进一步健全安全建设体系;渗透测试完毕后,也可以帮助用户更好地验证经过安全保护后的网络是否真实的达到了预期安全目标、遵循了相关安全策略、符合安全合规的要求。
资源分享
下面这些是我的收集和整理的资料,对于学习【软件测试】的朋友来说应该是最全的教程仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
关注【程序媛木子】微信公众号里海量资源免费获取,技术交流群(644956177)
以上是关于全员编程的时代下,软件测试如何转渗透测试?的主要内容,如果未能解决你的问题,请参考以下文章
《Python黑帽子:黑客与渗透测试编程之道》读书笔记:Windows下木马的常用功能