软件测试工程师需要掌握什么技术?
要学的东西可多了! UMTS蜂窝移动通信网络结构 CDMA2000-1X蜂窝移动通信网络组件功能 UMTS蜂窝移动通信网络组件功能 码分多址(CDMA)的原理 UMTS网络相关无线技术 CDMA2000-1X蜂窝移动通信网络结构 ATM技术 CDMA2000-1X网络的信道 UMTS协议体系 CDMA2000-1X网络系统状态 码分多址(CDMA)的原理 IP路由技术 WCDMA在UMTS网络中的实现 IP隧道技术 UMTS网络的空中接口技术 AAA服务技术 UMTS网络的移动性管理 CDMA2000-1X的分组交换解决方案1-简单IP技术 UMTS网络的切换技术 MOTOROLA的CDMA2000-1X蜂窝移动通信系统实例 UMTS网络的功率控制技术 CDMA2000-1X的分组交换解决方案3-移动IP技术 MOTOROLA的UMTS蜂窝移动通信系统实例 码分多址(CDMA)在CDMA2000-1X网络中的实现 CDMA2000-1X、UMTS等移动通信技术简介 CDMA2000-1X的分组交换解决方案2-VPDN技术 从GSM/GPRS到UMTS的演进路线
作为一个软件测试工程师应具备哪些技能
计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。
尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。
计算机专业技能主要包含三个方面:⒈ 测试专业技能测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。
测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、功能测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术等知识。
⒉ 软件编程技能软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。
因此,测试人员要想得到较好的职业发展,必须能够编写程序。
只有能够编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。
此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上。
因此测试人员要具备一定的算法设计能力。
依据资深测试工程师的经验,测试工程师至少应该掌握Java、C#、C++之类的一门语言以及相应的开发工具。
⒊ 网络、操作系统、数据库、中间件等知识与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。
由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。
在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。
操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。
例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。
而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。
数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。
因此不但要掌握基本的安装、配置,还要掌握SQL。
测试人员至少应该掌握Mysql、MSSqlserver、Oracle等常见数据库的使用。
软件测试工程师应该具备哪些技能?
通用技能上: 1. 基本计算机知识(操作系统,数据库,通讯协议原理,熟悉至少一门编程语言)2. 基本软件测试知识(各种测试理论,测试方法论,测试用例编写,缺陷界定标准,软件质量评估)3. 简单项目管理知识 产品、系统认知:1.熟悉所测产品功能,能够将产品文档内描述的UC转化成TC,这个最最基本 2.熟悉所测产品的一些隐藏需求或者功能(业务上的进阶能力) 打个比方,支付公司上一种新的支付渠道,熟悉业务的测试人员应当可以预见到这次升级可能会对前段界面、系统账务、各类报表等各个模块造成影响,从而一并纳入测试范畴。
要知道,很多时候,即便是接入这些渠道的产品经理,也不一定会在Prd或者UC中对这些可见影响项一一列出,这需要经验和责任心。
软件测试工程师应该学些什么方面的知识?
软件测试工程师应该学习知识:(1)软件开发技术很多人认为,干吗要学习软件开发啊,那还不如直接去学什么JAVA、C++、C#了。
要知道,在以后的软件测试工作中,你就会发现软件开发与软件测试之间是什么样的关系了。
没有软件开发,就没有软件测试,有了软件测试,软件开发出的软件产品才能够达到用户满意的地步,他们之间是相互依赖关系。
有了更多的软件开发知识,就会更好地能理解软件产品,就知道在哪个环节开发人员容易犯错误,知道在哪个逻辑结构、哪个接口或函数,甚至是从内存的管理机制上都可以找出问题。
软件开发所用的程序设计语言有很多种,所以要精通其中一门,其他能看懂代码,会对你的测试工作有更好的帮助,另外也会帮助开发人员进行快速缺陷定位。
而且在软件测试工作中,要编写一些辅助测试的小工具,都需要有软件开发基础。
象测试过程管理工具、测试用例管理工具、缺陷跟踪工具、性能检测工具等等。
不要老是认为软件开发难,什么事都是从不会到会,从不精通到精通,都需要一个过程。
没有人一生下来就什么都会的,都需要自己的不断努力才能成功。
(2)网络技术软件是从字符界面产品发展到图形界面产品,从单机版到网络版(C/S结构和B/S结构),经历了一个漫长的过程。
计算机网络的出现,改变了现实社会中人们的相互沟通方式,把一个小小的地球变成了一个地球村。
所以,目前所有的软件产品都从传统的单机模式向网络模式转变,网络技术就更加关键。
目前网络的发展,使得网络速度进一步提高。
目前,家庭网速达到1M~2Mbps,企业达到4Mbps,据说要到2012年家庭的网络速度要达到20Mbps。
那么网络硬件从传统的电缆到目前的光纤技术、无线通信技术。
从目前的发展速度,三网(电信网、电视网、计算机网络)合并是迟早的事情。
网络硬件协议的测试,也是网络设备生产商要做的工作。
(3)数据库技术现在的数据信息是海量的。
在目前的软件产品中,底层架构中就需要有数据库进行数据存储,那么对数据的增删改查的操作是软件测试人员必须要必备的技能。
数据库测试也是测试技术的一种。
(4)测试与质量保证技术精通软件测试理论,熟悉软件测试流程,理解软件测试的哲学思想,掌握软件测试每个阶段的文档编写技巧,掌握软件测试的策略与各种测试方法,掌握测试用例的设计方法。
掌握单元测试、集成测试、确认测试、系统测试、验收测试等每个阶段的测试技术。
软件质量保证知识、测试项目管理、测试团队建设知识也是必须要具备的。
掌握软件测试自动化工具,理解软件测试自动化测试框架,能够学会如何进行测试项目管理、回归测试以及性能测试,能够把性能缺陷进行定位。
软件测试还是一个崭新的学科,还没有形成一个独有的知识体系,还需要我们不断的研究与实践。
(5)行业知识目前软件测试涉及的行业是多种多样的,从金融产品到电信、游戏、汽车、杀毒、网站、企业管理、学校教育、本地化产品等等,各行各业的软件产品都需要大量的测试,所以相关行业知识的储备也是必须的。
(6)职场规范职场礼仪是必须的,你是否适合某个企业,能否融入这个企业,基本的职场规范是要学习的。
必要、有效的沟通也是软件测试人员所必须掌握的技巧。
软件测试工程师通常用的是什么软件
常用的软件测试工具一般是:QTP+LoadRunner+QC软件测试中还需的工具如下:功能测试工具:QTP(HP),WinRunner(MI),Robort(IBM),QARun(Compuware)性能测试工具:LoadRunner(HP),WAS(MS),Robort(IBM)【必须下载相应的插件才支持性能方面的测试】,QALoad(Compuware)测试管理工具:TestDirector/Quarlity Center【这两个工具一个横版一个竖版,功能完全一样】,Rational TestManager缺陷跟踪工具:Bugzilla、Mantis其他:Rational Purify、Rational PureCoverager一般测试流程:需求分析阶段:只要就是对业务的学习,分析需求点。
测试计划阶段:测试组长就要根据SOW开始编写《测试计划》,其中包括人员,软件硬件资源,测试点,集成顺序,进度安排和风险识别等内容。
测试设计阶段:测试方案一般由对需求很熟的高资深的测试工程师设计,测试方案要求根据《SRS》上的每个需求点设计出包括需求点简介,测试思路和详细测试方法三部分的方案。
《测试方案》编写完成后也需要进行评审。
测试方案阶段:主要是对测试用例和规程的设计。
测试用例是根据《测试方案》来编写的,通过《测试方案》阶段,测试人员对整个系统需求有了详细的理解。
这时开始编写用例才能保证用例的可执行和对需求的覆盖。
测试用例需要包括测试项,用例级别,预置条件,操作步骤和预期结果。
其中操作步骤和预期结果需要编写详细和明确。
测试用例应该覆盖测试方案,而测试方案又覆盖了测试需求点,这样才能保证客户需求不遗漏。
同样,测试用例也需要评审。
测试执行阶段:执行测试用例,及时提交有质量的Bug和测试日报,测试报告等相关文档
作为一名软件测试工程师,需要具备哪些能力
从事软件测试的人员很多,大家都觉得门槛低,企业需求量大,很容易找到工作。
但是从事一段时候后,很容易迷茫,很想证明自己在这个测试行业的能力,除了自我的学习已经领导的肯定之外,更加需要证书来帮我们证明,那么作为测试人员,可以考哪些证书呢?方法/步骤1 软件评测师(国家软考认证) 软件评测师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试,是软件测试行业认可度比较高的一个证书。
软考属于专业水平的国家品牌考试,试题注重岗位知识和技能,综合性和灵活性强,创意多,如果有实际的工作经验,通过率会比较高,涉及考试的点还是很广的。
2 ISTQB(国际软件测试资格认证) 有这个证书的话,进外企之类的一般比较有用,在国内,考这个证书的人数还是没有软件评测师高,而且考整个证书的花费很大。
ISTQB作为国际性的软件测试工程师认证,社会认可度还是挺高的。
越来越多的跨国公司和从事软件外测试外包的公司要求软件测试人员需要获得ISTQB认证。
3 PMP(美国项目管理协会项目经理认证) PMP(Project Management Professional)指项目管理专业人员资格认证。
它是由美国项目管理协会Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。
要想获得PMP专业认证,考生须达到美国项目管理协会(PMI)规定,对项目管理专业知识的掌握程度及其相应的工作经验和要求;另一方面,获得PMP证书的专业人员应继续从事项目工作,以不断适应项目管理发展的要求!总之,考这个证书的话,需要先进行一定的培训,总之,花费也是比较大的4 CSTE(QAI旗下的软件测试认证) CSTE全称Certified Software Tester,是QAI(Quality Assurance Institute)旗下的重要认证。
该全球范围的测试认证已经在美国、印度等颇为普及,成为很多公司对于测试从业人员的要求之一。
但是在中国,考这个证书的人只占了少部分。
CSTE的考试主要涉及了测试人员的基本知识和流程,考试全英文,包括四个部分,两个部分理论两个部分实践。
全英文试卷,对于软件测试的很多人来说,都会望而却步的。
基本要求:1.熟悉软件质量、软件测试及软件质量保证的基础知识;2.掌握代码检查、走查与评审的基本方法和技术;3.掌握白盒测试和黑盒测试的测试用例的设计原则和方法;4.掌握单元测试和集成测试的基本策略和方法;5.了解系统测试、性能测试和可靠性测试的基本概念和方法;6.了解面向对象软件和WEB应用软件测试的基本概念和方法;7.掌握软件测试过程管理的基本知识和管理方法;8.熟悉软件测试的标准和文档;9.掌握QESuite软件测试过程管理平台和QESat/C++软件分析和工具的使用方法。
考试内容:一、软件测试的基本概念1.软件质量的概念。
2.软件测试的目标和原则。
3.软件测试的心理学。
4.软件测试的经济学。
5.软件质量保证。
二、软件测试的类型及其在软件开发过程中的地位1.软件开发阶段。
2.规划阶段的测试。
3.设计阶段的测试。
4.编码阶段的测试。
5.验收和维护阶段的测试。
三、代码检查、走查与评审1.桌面检查。
2.代码走查。
3.代码检查。
4.同行评审。
四、覆盖率(白盒)测试1.覆盖率测试。
2.逻辑结构的覆盖率测试。
3.路径覆盖率测试。
4.数据流测试。
5.程序变异测试。
6.基于覆盖的测试用例选择。
五、功能(黑盒)测试1.边界值测试。
2.等价类测试。
3.基于因果图的测试。
4.基于决策表的测试。
5.基于状态图的测试。
6.基于场景的测试。
7.比较测试。
六、单元测试和集成测试1.单元测试的目标和模型。
2.单元测试策略。
3.单元测试分析。
4.单元测试的测试用例设计原则。
5.集成测试基本概念。
6.集成测试策略。
7.集成测试分析。
8.集成测试用例设计原则。
七、系统测试1.系统测试概念。
2.系统测试方法。
3.系统测试的实施。
八、软件性能测试和可靠性测试1.软件性能的概念。
2.性能测试的执行。
3.软件可靠性的概念。
4.可靠性预计。
5.可靠性分析方法。
6.软件可靠性测试的执行。
九、面向对象软件的测试1.面向对象软件测试的问题。
2.面向对象软件测试模型。
3.面向对象软件的测试策略。
4.面向对象软件的单元测试。
5.面向对象软件的集成测试。
6.面向对象软件的系统测试。
十、Web应用测试1.应用服务器的分类和特征。
2.Web应用系统的特点。
3.Web应用系统的测试策略。
4.Web应用系统测试技术。
5.Web应用系统安全测试。
十一、其他测试1.兼容性测试。
2.易用性测试。
3.GUI测试。
4.构件测试。
5.极限测试。
6.文档测试。
十二、软件测试过程和管理1.软件测试过程概念。
2.测试组织管理。
3.测试计划的制定。
4.测试步骤的确定。
5.测试环境管理。
6.软件测试风险分析和成本管理。
7.测试文档管理。
8.测试的复用与维护。
十三、软件测试自动化1.测试自动化的原理、方法。
2.测试用例自动生成。
3.测试执行自动化。
4.测试结果比较自动化。
5.测试工具的分类和选择。
6.测试工具的主流产品介绍。
十四、软件测试的标准和文档1.软件测试的标准。
2.软件测试的文档。
十五、软件测试实践1.软件测试过程管理。
(1)软件测试过程管理概念。
(2)测试的设计...
要成为软件测试工程师需要学什么,还有学编程有用么?
适合做程序员吗?1.首先,你应该清楚自己为什么选择程序员这个职业?现在很多人是因为软件行业的薪资高才进入的,其实没有人不想挣钱。
但我的看法是,程序员是没有办法一夜暴富的。
甚至可以说如果你聪明伶俐的话,做程序员不如去做销售人员的待遇和收入上升得更快一些,真的.做程序员首先一定要从兴趣上爱这个行业,否则根本无法忍受成为一个真正程序员要付出的代价.请记住,程序员这种职业是非常辛苦的,需要全身心的投入,如果舍不得付出和牺牲自己的青春的话就最好不要选择这个职业. 2.程序员应该是一种充满激情的人,他们喜欢挑战,喜欢接受新的技术和知识,对好奇和不懂的技术总刨根问底的精神,并以此乐此不疲.他们最大的精神享受是自己的努力成果给别人带来方便,快乐,能够得到别人的肯定和重视.优秀的程序员应该是完美主义,他们对自己开发的软件一丝不苟,从功能到界面到软件的健壮性等.他们甚至会为界面上的一个按钮的外观折腾半天,直到满意为止..一个缺乏激情的程序员的职业生命是很短暂的. 做好准备了吗?好,继续往下看..如果你是初学者(俗称"菜鸟"):1.好高骛远是许多初学者的通病,总幻想自己发疯似地努力几天或几个月就成为"高手"(谁不想呀,看他们多受人尊敬),正是由于自己的这种好高骛远的"雄心壮志",往往给自己定下一些不切合实际的太多的目标,比如:"这个月学汇编,下个月学C语言,再下个月学C++,然后进入VC++集成开发环境做开发.",结果到头来经过几个月的努力,却发现与原定的目标相去甚远,激情和信心也没有了,而且什么东西都没学好.其实并不是因为你笨,学习能力不强,而是太心急了,看看身边的高手们,哪一个不是至少有几年功力的酝酿的?如果你觉得自己很聪明,但请记住这句话:"天下的聪明人太多了,你想在三到五年就把别人十年做的事情做一遍,那你也一定会把别人在十年中所受的苦难在这三到五年中经历一遍." 2.学问是堆积起来的。
基础越深,堆得越高,基础越广,堆得越快。
如果你还是在校学生,请重视基础理论课程,像数据结构,编译原理,组成原理,数据库理论等,学过这些基础课程的人编出来的程序一定会比没学过的人编的程序技术含量更高,更具灵活性.这是一个最坚难的时期,基础理论课程比较枯燥,难懂,而且往往这种教材陈旧,许多朋友开始学习的时候充满激情,到后来学觉得没味,教材也太老陈,我们承认,我国的本科教育教材落后是不争的事实,但计算机始终是二进制的,那些最基础的理论一直没有变.如果你觉得大学里的教材实在学不进去了,我的建议是不妨去上机实践,学一门程序语言和开发工具(比如VC,VB),因为只有在实际编程的过程你才会明白那些基础理论的重要性,比如在编程过程中遇到设计结构体,设计遍历,匹配等算法时你才会明白数据结构的重要性.另外,打好基础,以后学新的东西就会很快,举个例子,我的一个网上的朋友,他有十年的DOS汇编基础,而我只有几个月的基础,我们两差不多同一时间开始学习win32汇编,到现在他的进度已经远远超过我了,而且写的程序技术含量高,更底层. 3.建议初学者特别要注意"知识断层"这个问题.经常有朋友问我"为什么我学不懂操作糸统?","为什么我觉得C++那么难学?" ?我可以简单地这样回答你:因为你存在"知识断层".换句话说,你的知结构不完善,基础不扎实.我个人认为操作糸统原理没有几年实践编程和扎实的基础是不可能有较深刻的理解的,所以建议初学者才开始不应该在操作糸统原理上花太多时间,才开的时候只需建立一些基本概念,只有在以后的编程实践过程增加感性认识(从操作糸统程序级接口来看),多问几个为什么,带着问题和感性认识再回过头来看操作糸统原理,你会发现理解起来容易了.我曾经就是这样,才开始看操作糸统原理怎么也看不懂,直到有一定的编程经验后再回过头来看就感觉轻松多了!再来说C++,我个人观点认为初学者不要学C++,OOP,因为没有编程经验和一定的理论基础你就很难理解为什么要"封装",为什么要"继承",为什么一个程序搞得那么复杂,C语言不是功能很强大了吗?所以建议在没有一定的编程经验之前,不要学C++,不然你会感觉到底层的空虚,候捷说得好:"浮沙不能筑高台"嘛! 4.你的电脑里面不应该装游戏,不要忘了游戏也是程序员编出来的,如果你真的热爱编程的话,你就不会沉溺于游戏而是沉溺于程序代码了.我有一个朋友,是电子科大的,学的是计算机.他非常聪明,但整天沉溺于游戏,到现在什么都没学到.我过去也很喜欢打游戏,像"英雄无敌","星际争霸"呀,一玩就会把用电脑的时候全用上,虽然计划学一些东西,但实际上收获甚少,我想许多还在玩游戏的朋友都是有同感的.其实你可以思考一下游戏是怎么做出来的,它和普通的应用程序有什么区别,虽然不一定会有实质的收获,但它会让你带着好奇心和问题去学习,去编程.请记住,要想学好编程,就不要玩游戏. 5.尽快找一个突破口.一个人的精力是很有限的,不可能什么都学,不可能,也不现实.现在流行的程序语言就有好...
请问如何成为一个高级软件测试工程师?
1.起码有三年以上的软件开发经验现在许多软件企业招收一些刚刚毕业的大学生或者非计算机专业的人员作为自己公司软件测试工程师,这是非常错误的,也是对软件测试不负责任的表现。
虽然他们可以发现软件中的一些错误,但是对于软件中的一些关键,致命,危险的错误他们是很难发现的。
大家都知道,软件工程中有个模型叫瀑布模型,这是最基本的软件模型,这个模型又叫碗状模型,因为开发位于碗的最底部,左上方依次为建模,需求分析,设计;右上方依次为测试,部署,维护。
这就是说明软件开发是一切软件活动的基础,同时也是软件测试的基础。
一个人只有经历过一定年限的软件开发工作,才可以积累丰富的经验,知道在软件中哪些地方容易出错而那些地方不容易,这给以后的软件测试工作带来非常宝贵的经验。
2.有逆向思维的能力我曾经接触过一些软件测试工程师,他们干了一段时间软件测试工作后返回去又开始去做开发工作了,问他们为啥?答案是软件测试工作太难了,开发是顺向思维,而测试是逆向思维,老要找一些稀奇古怪的思路去操作软件。
软件的使用者千差万别,软件在使用过程中遇到的各种现象也是千差万别的,所以要求软件测试工程师需要具有一些逆向思维的能力,想别人所不想,测别人所不测,这样才可以找到更多的软件中的错误。
这是作为一名优秀的软件测试工程师最基本的素质。
3.善于同软件开发人员沟通沟通是当今软件项目中需要掌握的最关键技术之一。
软件测试人员要善于同软件开发人员沟通,软件测试人员与开发人员搞好关系,使测试人员不成为开发人员的眼中钉,这对于提高整个软件项目质量是十分重要的。
沟通主要包括:讨论软件的需求,设计:通过这样的沟通,你可以更好的了解所测试的软件系统,以至于尽可能少的测试出软件中不是错误的“错误”,从而降低给软件开发人员带来的压力。
报告好的测试结果:作为一个测试人员,发现错误往往是测试人员最愿意而且引以自豪的结果,但是一味地给开发人员报告软件错误,会给他们造成厌恶感,降低整个软件的质量和开发进度。
所以作为一名软件测试工程师,当你测试的模块没有严重的错误或者错误很少的时候,你不妨跑到开发人员那里告诉他们这个好消息,这会给你带来意想不到的结果。
讨论一些与工作无关的事情:作为一个测试人员经常和开发人员讨论一些与工作无关的事情,比如大家可以谈谈新闻,趣事,家庭…这样可以加强相互间的默契程度,许多统计表明,这样可以更好的提高软件工作质量。
4.善于同领导沟通测试人员往往是领导的眼和耳,领导根据测试人员的测试结果可以了解公司的产品质量,从而调整其他的工作。
领导工作一般比较繁忙,所以作为一名优秀的测试人员要学会把测试结果进行总结,最好以图表的形势给领导看。
5.掌握一些自动化测试工具测试工作往往是比较繁琐,枯燥无味的工作,测试人员长期处于重复的手工工作,会降低测试效率,并且对于测试质量也往往是不利的;况且许多测试不使用测试工具是不可以进行的,比如性能测试,压力测试等等。
目前市场上有许多测试工具供你使用,你可以根据自己的需要选择一些测试工具来辅助你的测试。
但是要记住一点,不是说有了测试工具就不要人工测试了,测试工具不是万能的。
6.善于学习的能力软件测试技术随着时间的变化也在做一些提高和改进,作为一名优秀的测试人员要善于利用书籍,网站,论坛,交流等各种途径不断提高自己的软件测试水平。
7.提高自己的表达能力软件测试人员当发现软件中存在缺陷的时候,往往要书写缺陷报告,缺陷报告要写得详尽清楚,使开发人员能够尽快定位错误,修改错误,所以作为一名优秀的测试人员提高自己的写作能力是非常必要的。
8.了解业务知识更好的了解你说测试软件的业务知识是非常重要的,对业务知识了解得越深入,越能够找出更深入,更关键,更隐蔽的软件错误。
所以作为一名优秀的软件测试工程师,要多向该领域专家,同行学习,提高自己的业务知识水平。
以上仅为个人的一些经验所谈,希望大家都能够成为一名优秀的软件测试工程师。
转载请注明出处51数据库 » 软件测试工程师需要的技术