WEB全面测试方法汇总

WEB功能测试方法

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:

  1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

  2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

  3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。

  4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.

  5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.

  6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.

  7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.

  8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致

  9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.

  10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.

  11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.

  12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.

  13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。

  14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.

  15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.

  16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.

  17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

  18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*

  19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

  20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

图形测试

1、在 Web 应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个 Web 应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

   (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。 Web 应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

   (2)验证所有页面字体的风格是否一致。

   (3) 背景颜色应该与字体颜色和前景颜色相搭配。

   (4)图片的大小和质量也是一个很重要的因素,一般采用 JPG 或 GIF 压缩。

2、内容测试

信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。

这种测试通常使用一些文字处理软件来进行,例如使用 Microsoft Word 的 " 拼音与语法检查 " 功能;

信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般 Web 站点中的所谓 " 相关文章列表 " 。

3、整体界面测试

整体界面是指整个 Web 应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览 Web 应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?

整个 Web 应用系统的设计风格是否一致?对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般 Web 应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。

对所有的可用性测试来说,都需要有外部人员(与 Web 应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。

客户端兼容性测试

4.1.平台测试

  市场上有很多不同的操作系统类型,最常见的有 Windows 、 Unix 、 Macintosh 、 Linux 等。 Web 应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,

就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。因此,在 Web 系统发布之前,需要在各种操作系统下对 Web 系统进行兼容性测试。

4.2.浏览器测试

浏览器是 Web 客户端最核心的构件,来自不同厂商的浏览器对 Java ,、 Javascrīpt 、 ActiveX 、 plug-ins 或不同的 HTML 规格有不同的支持。例如, ActiveX 是 Microsoft 的产品,是为 Internet Explorer 而设计的, Javascrīpt 是 Netscape 的产品, Java 是 Sun 的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和 Java 的设置也不一样。

测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

4.3 分辨率测试

页面版式在 640x400、600x800 或 1024x768 的分辨率模式下是否显示正常? 字体是否太小以至于无法浏览? 或者是太大? 文本和图片是否对齐?

4.4 Modem/连接速率

是否有这种情况,用户使用 28.8 modem下载一个页面需要 10 分钟,但测试人员在测试的时候使用的是 T1 专线? 用户在下载文章或演示的时候,可能会等待比较长的时间,但却不会耐心等待首页的出现。最后,需要确认图片不会太大。

4.5 打印机

用户可能会将网页打印下来。因此网也在设计的时候要考虑到打印问题,注意节约纸张和油墨。有不少用户喜欢阅读而不是盯着屏幕,因此需要验证网页打印是否正常。有时在屏幕上显示的图片和文本的对齐方式可能与打印出来的东西不一样。测试人员至少需要验证订单确认页面打印是正常的。

4.6 组合测试

最后需要进行组合测试。600x800 的分辨率在 MAC 机上可能不错,但是在 IBM 兼容机上却很难看。在 IBM 机器上使用 Netscape 能正常显示,但却无法使用 Lynx 来浏览。如果是内部使用的 web 站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器,那么只需在该浏览器上进行测试。如果所有的人都使用 T1 专线,可能不需要测试下载施加。(但需要注意的是,可能会有员工从家里拨号进入系统) 有些内部应用程序,开发部门可能在系统需求中声明不支持某些系统而只支持一些那些已设置的系统。但是,理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。

采取措施:根据实际情况,采取等价划分的方法,列出兼容性矩阵

安全性测试

Web 应用系统的安全性测试区域主要有:

   ( 1 )现在的 Web 应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。

   ( 2 ) Web 应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如 15 分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

   ( 3 )为了保证 Web 应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。

   ( 4 )当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。

   ( 5 )服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。

本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于 Web 的系统测试方法。

接口测试

在很多情况下,web 站点不是孤立。Web 站点可能会与外部服务器通讯,请求数据、验证数据或提交订单。

6.1服务器接口

第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

这种测试可以归到功能测试中的表单测试和数据校验测试中

6.2 外部接口

有些 web 系统有外部接口。例如,网上商店可能要实时验证信用卡数据以减少欺诈行为的发生。测试的时候,要使用 web 接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以尝试使用 Discover 卡的数据。(简单的客户端脚本能够在提交事务之前对代码进行识别,例如 3 表示 American Express,4 表示 Visa,5 表示 Mastercard,6 代表Discover。)通常,测试人员需要确认软件能够处理外部服务器返回的所有可能的消息。

这种情况在远程抄表中可能会体现到

6.3 错误处理

最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错误,但却无法预期系统所有可能的错误。尝试在处理过程中中断事务,看看会发生什么情况?订单是否完成?尝试中断用户到服务器的网络连接。尝试中断 web 服务器到信用卡验证服务器的连接。在这些情况下,系统能否正确处理这些错误?是否已对信用卡进行收费?如果用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由客户代表致电用户进行订单确认。

采取措施:在理解需求的基础上,充分发挥想象力,尽量比较全面的列出各种异常情况

常见的Web应用安全漏洞

已知弱点和错误配置

  已知弱点包括Web应用使用的操作系统和第三方应用程序中的所有程序错误或者可以被利用的漏洞。这个问题也涉及到错误配置,包含有不安全的默认设置或管理员没有进行安全配置的应用程序。一个很好的例子就是你的Web服务器被配置成可以让任何用户从系统上的任何目录路径通过,这样可能会导致泄露存储在Web服务器上的一些敏感信息,如口令、源代码或客户信息等。

隐藏字段

  在许多应用中,隐藏的HTML格式字段被用来保存系统口令或商品价格。尽管其名称如此,但这些字段并不是很隐蔽的,任何在网页上执行“查看源代码”的人都能看见。许多Web应用允许恶意的用户修改HTML源文件中的这些字段,为他们提供了以极小成本或无需成本购买商品的机会。这些攻击行动之所以成功,是因为大多数应用没有对返回网页进行验证;相反,它们认为输入数据和输出数据是一样的。

后门和调试漏洞

开发人员常常建立一些后门并依靠调试来排除应用程序的故障。在开发过程中这样做可以,但这些安全漏洞经常被留在一些放在Internet上的最终应用中。一些常见的后门使用户不用口令就可以登录或者访问允许直接进行应用配置的特殊URL。

跨站点脚本编写

  一般来说,跨站点编写脚本是将代码插入由另一个源发送的网页之中的过程。利用跨站点编写脚本的一种方式是通过HTML格式,将信息帖到公告牌上就是跨站点脚本编写的一个很好范例。恶意的用户会在公告牌上帖上包含有恶意的Javascrīpt代码的信息。当用户查看这个公告牌时,服务器就会发送HTML与这个恶意的用户代码一起显示。客户端的浏览器会执行该代码,因为它认为这是来自Web服务器的有效代码。

参数篡改

  参数篡改包括操纵URL字符串,以检索用户以其他方式得不到的信息。访问Web应用的后端数据库是通过常常包含在URL中的SQL调用来进行的。恶意的用户可以操纵SQL代码,以便将来有可能检索一份包含所有用户、口令、信用卡号的清单或者储存在数据库中的任何其他数据。

更改cookie

  更改cookie指的是修改存储在cookie中的数据。网站常常将一些包括用户ID、口令、帐号等的cookie存储到用户系统上。通过改变这些值,恶意的用户就可以访问不属于他们的帐户。攻击者也可以窃取用户的cookie并访问用户的帐户,而不必输入ID和口令或进行其他验证。

输入信息控制

  输入信息检查包括能够通过控制由CGI脚本处理的HTML格式中的输入信息来运行系统命令。例如,使用CGI脚本向另一个用户发送信息的形式可以被攻击者控制来将服务器的口令文件邮寄给恶意的用户或者删除系统上的所有文件。

缓冲区溢出

  缓冲区溢出是恶意的用户向服务器发送大量数据以使系统瘫痪的典型攻击手段。该系统包括存储这些数据的预置缓冲区。如果所收到的数据量大于缓冲区,则部分数据就会溢出到堆栈中。如果这些数据是代码,系统随后就会执行溢出到堆栈上的任何代码。Web应用缓冲区溢出攻击的典型例子也涉及到HTML文件。如果HTML文件上的一个字段中的数据足够的大,它就能创造一个缓冲器溢出条件。

直接访问浏览

  直接访问浏览指直接访问应该需要验证的网页。没有正确配置的Web应用程序可以让恶意的用户直接访问包括有敏感信息的URL或者使提供收费网页的公司丧失收入。

Web应用安全两步走

  Web应用攻击能够给企业的财产、资源和声誉造成重大破坏。虽然Web应用增加了企业受攻击的危险,但有许多方法可以帮助减轻这一危险。首先,必须教育开发人员了解安全编码方法。仅此项步骤就会消除大部分Web应用的安全问题。其次,坚持跟上所有厂商的最新安全补丁程序。如果不对已知的缺陷进行修补,和特洛伊木马一样,攻击者就能很容易地利用你的Web应用程序穿过防火墙访问Web服务器、数据库服务器、应用服务器等等。将这两项步骤结合起来,就会大大减少Web应用受到攻击的风险。同时管理人员必须采取严格措施,以保证不让任何东西从这些中溜过去

可用性测试

可用性测试估计是提的比较多的吧。我记得以前看过一本书叫《Don't let me think》。里面就是讲述了一些提高可用性的方法还有设计原则之类的。《软件测试》这本书提到了10个最容易犯错点:

1.Gratuitous Use of Bleeding-Edge Technology-滥用先进技术,其实做IT这个大家都知道技术更新的很快,但是一般商用的软件都不会选择最新版本或者最前沿的技术,就好像JAVA都出到1.6了但是很多开发团队还是在用1.4。稳定压倒一切啊。

2.Scrolling Text, Marquees, and Constantly Running Animations-不要搞的整个页面动来动去的,因为用户看的是内容,看的是内容是否有价值,而不是花里胡哨的飘来飘去的文字。

3.Long Scrolling Pages-一个页面拉啊拉~拉半天都不到底。

4.Non-Standard Link Colors-前面都说过了,标准是要去跟的,不要随便改动,就好像一般链接是蓝色的那么就蓝色吧,特别大的标题做成红色是合理的,什么不好的事情做成黑的也是合理的,但是如果出现绿色di……那么就好像有点不合理哦。

5.Outdated Information-过时的内容,这个有可能出现在邮件地址,电话号码的地方。

6.Overly Long Download Times-过长的下载时间,一般用户的忍耐性都是有限,而且现在SB电信搞什么包月改为240小时,时间就是金钱啊。估计没人喜欢看着浏览器的进度栏干瞪眼。

7.Lack of Navigation Support-缺乏导航支持。有些页面有进没有出,或者不能方便的返回上层页面。

8.Orphan Pages-孤立的页面。没法进,万一不幸进了还没法出。

9.Complex Website Addresses (URLs)-这个要看当时注册了个啥域名了。。。

10.Using Frames-框架的确受人鄙视,不过不知道为什么哦,RationalClearQuest就用的Frame。

排错是一个相当艰苦的过程,究其原因除了开发人员心理方面的障碍外,还因为隐藏在程序中的错误具有下列特殊的性质:

  (1)错误的外部征兆远离引起错误的内部原因,对于高度耦合的程序结构此类现象更为严重;

  (2)纠正一个错误造成了另一错误现象(暂时)的消失;

  (3)某些错误征兆只是假象;

  (4)因操作人员一时疏忽造成的某些错误征兆不易追踪;

  (5)错误是由于风时而不是程序引起的;

  (6)输入条件难以精确地再构造(例如,某些实时应用的输入次序不确定);

  (7)错误征兆时有时无,此现象对嵌入式系统尤其普遍;

  (8)错误是由于把任务分布在若干台不同处理机上运行而造的。

  在软件排错过程中,可能遇到大大小小、形形色色的问题,随着问题的增多,排错人员的压力也随之增大,过分地紧张致使开发人员在排除一个问题的同时又引入更多的新问题。

前面多次提到,修改一处老问题可能引入几处新问题,有时程序越改越乱,但若能做到每次纠错前都扪心自问三个问题,情况将大为改观:

  ①导致这个错误的原因在程序其他部分还可能存在吗?

  ②本次修改可能对程序中相关的逻辑和数据造成什么影响?引起什么问题?

  ③上次遇到的类似问题是如何排除的?

复制文件:

* 命令格式:

scp local_file remote_username@remote_ip:remote_folder

或者

scp local_file remote_username@remote_ip:remote_file

或者

scp local_file remote_ip:remote_folder

或者

scp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;

第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

* 例子:

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music/001.mp3

scp /home/space/music/1.mp3 中国矿业大学-主页:/home/root/others/music

scp /home/space/music/1.mp3 中国矿业大学-主页:/home/root/others/music/001.mp3

* 复制目录:

* 命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder

或者

scp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要再输入密码;

第2个没有指定用户名,命令执行后需要输入用户名和密码;

* 例子:

scp -r /home/space/music/ [email protected]:/home/root/others/

scp -r /home/space/music/ 中国矿业大学-主页:/home/root/others/

上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录

一、输入框

1、字符型输入框:

(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。

(2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超工字符比如把整个文章拷贝过去。

(3)空格检查:输入的字符间有空格、字符前有空格、字符后有空格、字符前后有空格

(4)多行文本框输入:允许回车换行、保存后再显示能够保存输入的格式、仅输入回车换行,检查能否正确保存(若能,检查保存结果,若不能,查看是否有正常提示)、

(5)安全性检查:输入特殊字符串(null,NULL, ,javascript,,,<html>,<td>)、输入脚本函数(<script>alert("abc")</script>)、doucment.write("abc")、<b>hello</b>)</p> <p></p> <p>2、数值型输入框:</p> <p>(1)边界值:最大值、最小值、最大值+1、最小值-1</p> <p>(2)位数:最小位数、最大位数、最小位数-1最大位数+1、输入超长值、输入整数</p> <p>(3)异常值、特殊字符:输入空白(NULL)、空格或"~!@#$%^&*()_+{}|[]\:"<>?;',./?;:'-=等可能导致系统错误的字符、禁止直接输入特殊字符时,尝试使用粘贴拷贝查看是否能正常提交、word中的特殊功能,通过剪贴板拷贝到输入框,分页符,分节符类似公式的上下标等、数值的特殊符号如∑,㏒,㏑,∏,+,-等、</p> <p>输入负整数、负小数、分数、输入字母或汉字、小数(小数前0点舍去的情况,多个小数点的情况)、首位为0的数字如01、02、科学计数法是否支持1.0E2、全角数字与半角数字、数字与字母混合、16进制,8进制数值、货币型输入(允许小数点后面几位)、</p> <p>(4)安全性检查:不能直接输入就copy</p> <p></p> <p>3、日期型输入框<strong>:</strong></p> <p>(1)合法性检查:(输入0日、1日、32日)、月输入[1、3、5、7、8、10、12]、日输入[31]、月输入[4、6、9、11]、日输入[30][31]、输入非闰年,月输入[2],日期输入[28、29]、输入闰年,月输入[2]、日期输入[29、30]、月输入[0、1、12、13]</p> <p>(2)异常值、特殊字符:输入空白或NULL、输入~!@#¥%……&*(){}[]等可能导致系统错误的字符</p> <p>(3)安全性检查:不能直接输入,就copy,是否数据检验出错?</p> <p>4、信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.</p> <p></p> <p><strong>二、搜索功能</strong></p> <p>若查询条件为输入框,则参考输入框对应类型的测试方法</p> <p>1、功能实现:</p> <p>(1)如果支持模糊查询,搜索名称中任意一个字符是否能搜索到</p> <p>(2)比较长的名称是否能查到</p> <p>(3)输入系统中不存在的与之匹配的条件</p> <p>(4)用户进行查询操作时,一般情况是不进行查询条件的清空,除非需求特殊说明。</p> <p>2、组合测试:</p> <p>(1)不同查询条件之间来回选择,是否出现页面错误(单选框和多选框最容易出错)</p> <p>(2)测试多个查询条件时,要注意查询条件的组合测试,可能不同组合的测试会报错。</p> <p><strong>三、添加、修改功能</strong></p> <p></p> <p>1、特殊键:(1)是否支持Tab键 (2)是否支持回车键</p> <p>2、提示信息:(1)不符合要求的地方是否有错误提示</p> <p>3、唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性)</p> <p>4、数据 正确性:</p> <p>(1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新。</p> <p>(2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中;是否提示后出现页码错乱等)</p> <p>(3)是否能够连续添加(针对特殊情况)</p> <p>(4)在编辑的时候,注意编辑项的长度限制,有时在添加的时候有,在编辑的时候却没有(注意要添加和修改规则是否一致)</p> <p>(5)对于有图片上传功能的编辑框,若不上传图片,查看编辑页面时是否显示有默认的图片,若上传图片,查看是否显示为上传图片</p> <p>(6)修改后增加数据后,特别要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新。</p> <p>(7)提交数据时,连续多次点击,查看系统会不会连续增加几条相同的数据或报错。</p> <p>(8)若结果列表中没有记录或者没选择某条记录,点击修改按钮,系统会抛异常。</p> <p></p> <p><strong>四、删除功能</strong></p> <p>1、特殊键:(1)是否支持Tab键 (2)是否支持回车键</p> <p>2、提示信息:(1)不选择任何信息,直接点击删除按钮,是否有提示(2)删除某条信息时,应该有确认提示</p> <p>3、数据 实现:(1)是否能连续删除多个产品(2)当只有一条数据时,是否可以删除成功 (3)删除一条数据后,是否可以添加相同的数据(4)如系统支持批量删除,注意删除的信息是否正确 (5)如有全选,注意是否把所有的数据删除(6)删除数据时,要注意相应查询页面的数据是否及时更新 (7)如删除的数据与其他业务数据关联,要注意其关联性(如删除部门信息时,部门下游员工,则应该给出提示)(8)如果结果列表中没有记录或没有选择任何一条记录,点击删除按钮系统会报错。</p> <p>如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试</p> <p>单项功能测试(增加、修改、查询、删除)</p> <p>增加——>增加——>增加 (连续增加测试)</p> <p>增加——>删除</p> <p>增加——>删除——>增加 (新增加的内容与删除内容一致)</p> <p>增加——>修改——>删除</p> <p>修改——>修改——>修改 (连续修改测试)</p> <p>修改——>增加(新增加的内容与修改前内容一致)</p> <p>修改——>删除</p> <p>修改——>删除——>增加 (新增加的内容与删除内容一致)</p> <p>删除——>删除——>删除 (连续删除测试)</p> <p></p> <p><strong>五、注册、登陆模块</strong></p> <p>1、注册功能:</p> <p>(1)注册时,设置密码为特殊版本号,检查登录时是否会报错</p> <p>(2)注册成功后,页面应该以登陆状态跳转到首页或指定页面</p> <p>(3)在注册信息中删除已输入的信息,检查是否可以注册成功。</p> <p>2、登陆 功能:</p> <p>(1)输入正确的用户名和正确的密码</p> <p>(2)输入正确的用户名和错误的密码</p> <p>(3)输入错误的用户名和正确的密码</p> <p>(4)输入错误的用户名和错误的密码</p> <p>(5)不输入用户名和密码(均为空格)</p> <p>(6)只输入用户名,密码为空</p> <p>(7)用户名为空,只输入密码</p> <p>(8)输入正确的用户名和密码,但是不区分大小写</p> <p>(9)用户名和密码包括特殊字符</p> <p>(10)用户名和密码输入超长值</p> <p>(11)已删除的用户名和密码</p> <p>(12)登录时,当页面刷新或重新输入数据时,验证码是否更新</p> <p><strong>六、上传图片测试</strong></p> <p>1、功能 实现:</p> <p>(1)文件类型正确、大小合适</p> <p>(2)文件类型正确,大小不合适</p> <p>(3)文件类型错误,大小合适</p> <p>(4)文件类型和大小都合适,上传一个正在使用中的图片</p> <p>(5)文件类型大小都合适,手动输入存在的图片地址来上传</p> <p>(6)文件类型和大小都合适,输入不存在的图片地址来上传</p> <p>(7)文件类型和大小都合适,输入图片名称来上传</p> <p>(8)不选择文件直接点击上传,查看是否给出提示</p> <p>(9)连续多次选择不同的文件,查看是否上传最后一次选择的文件</p> <p></p> <p><strong>七、查询结果列表</strong></p> <p>1、功能 实现:</p> <p>(1)列表、列宽是否合理</p> <p>(2)列表数据太宽有没有提供横向滚动</p> <p>(3)列表的列名有没有与内容对应</p> <p>(4)列表的每列的列名是否描述的清晰</p> <p>(5)列表是否把不必要的列都显示出来</p> <p>(6)点击某列进行排序,是否会报错(点击查看每一页的排序是否正确)</p> <p>(7)双击或单击某列信息,是否会报错</p> <p></p> <p><strong>八、返回键检查</strong></p> <p>1、一条已经成功提交的记录,返回后再提交,是否做了处理</p> <p>2、检查多次使用返回键的情况,在有返回键的地方,返回到原来的页面多次,查看是否会出错</p> <p></p> <p><strong>九、回车键检查</strong></p> <p>1、在输入结果后,直接按回车键,看系统如何处理,是否会报错</p> <p></p> <p><strong>十、刷新键检查</strong></p> <p>1、在Web系统中,使用刷新键,看系统如何处理,是否会报错</p> <p></p> <p><strong>十一、直接URL链接检查</strong></p> <p>1、在Web系统中,在地址栏直接输入各个功能页面的URL地址,看系统如何处理,是否能够直接链接查看(匿名查看),是否有权限控制,是否直接执行,并返回相应结果页;</p> <p></p> <p><strong>十二、界面和易用性测试</strong></p> <p>1、风格、样式、颜色是否协调</p> <p>2、界面布局是否整齐、协调(保证全部显示出来的,尽量不要使用滚动条</p> <p>3、界面操作、标题描述是否恰当(描述有歧义、注意是否有错别字)</p> <p>4、操作是否符合人们的常规习惯(有没有把相似的功能的控件放在一起,方便操作)</p> <p>5、提示界面是否符合规范(不应该显示英文的cancel、ok,应该显示中文的确定等)</p> <p>6、界面中各个控件是否对齐</p> <p>7、日期控件是否可编辑</p> <p>8、日期控件的长度是否合理,以修改时可以把时间全部显示出来为准</p> <p>9、查询结果列表列宽是否合理、标签描述是否合理</p> <p>10、查询结果列表太宽没有横向滚动提示</p> <p>11、对于信息比较长的文本,文本框有没有提供自动竖直滚动条</p> <p>12、数据录入控件是否方便</p> <p>13、有没有支持Tab键,键的顺序要有条理,不乱跳</p> <p>14、有没有提供相关的热键</p> <p>15、控件的提示语描述是否正确</p> <p>16、模块调用是否统一,相同的模块是否调用同一个界面</p> <p>17、用滚动条移动页面时,页面的控件是否显示正常</p> <p>18、日期的正确格式应该是XXXX-XX-XX或XXXX-XX-XX XX:XX:XX</p> <p>19、页面是否有多余按钮或标签</p> <p>20、窗口标题或图标是否与菜单栏的统一</p> <p>21、窗口的最大化、最小化是否能正确切换</p> <p>22、对于正常的功能,用户可以不必阅读用户手册就能使用</p> <p>23、执行风险操作时,有确认、删除等提示吗</p> <p>24、操作顺序是否合理</p> <p>25、正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。</p> <p>26、系统应该在用户执行错误的操作之前提出警告,提示信息.</p> <p>27、页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。</p> <p>28、合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。</p> <p>29、检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业</p> <p></p> <p><strong>十三、兼容性测试</strong></p> <p>兼容性测试不只是指界面在不同操作系统或浏览器下的兼容,有些功能方面的测试,也要考虑到兼容性,</p> <p>包括操作系统兼容和应用软件兼容,可能还包括硬件兼容</p> <p>比如涉及到ajax、jquery、javascript等技术的,都要考虑到不同浏览器下的兼容性问题。</p> <p></p> <p><strong>十四、链接测试</strong></p> <p>主要是保证链接的可用性和正确性,它也是网站测试中比较重要的一个方面。</p> <p>可以使用特定的工具如XENU来进行链接测试。</p> <p>1导航测试</p> <p>导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?</p> <p>在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。</p> <p>导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。</p> <p>Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。</p> <p></p> <p>2图形测试</p> <p>在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:</p> <p>(1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。</p> <p>(2)验证所有页面字体的风格是否一致。</p> <p>(3)背景颜色应该与字体颜色和前景颜色相搭配。</p> <p>(4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到30k以下</p> <p>(5)最后,需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。</p> <p>通常来说,使用少许或尽量不使用背景是个不错的选择。如果您想用背景,那么最好使用单色的,和导航条一起放在页面的左边。另外,图案和图片可能会转移用户的注意力。</p> <p></p> <p><strong>十五、业务流程测试(主要功能测试)</strong></p> <p>业务流程,一般会涉及到多个模块的数据,所以在对业务流程测试时,首先要保证单个模块功能的正确性,其次就要对各个模块间传递的数据进行测试,这往往是容易出现问题的地方,测试时一定要设计不同的数据进行测试。</p> <p></p> <p><strong>十六、安全性测试</strong></p> <p>(1)SQL注入(比如登陆页面)</p> <p>(2)XSS跨网站脚本攻击:程序或数据库没有对一些特殊字符进行过滤或处理,导致用户所输入的一些破坏性的脚本语句能够直接写进数据库中,浏览器会直接执行这些脚本语句,破坏网站的正常显示,或网站用户的信息被盗,构造脚本语句时,要保证脚本的完整性。</p> <p>  document.write("abc")</p> <p>  <script>alter("abc")</script></p> <p>(3)URL地址后面随便输入一些符号,并尽量是动态参数靠后</p> <p>(4)验证码更新问题</p> <p>(5)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。</p> <p>(6)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。</p> <p>(7)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。</p> <p>(8)当使用了安**接字时,还要测试加密是否正确,检查信息的完整性。</p> <p>(9)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。</p> <p></p> <p><strong>十八、测试中应该注意的其他情况</strong></p> <p>1、在测试时,与网络有关的步骤或者模块必须考虑到断网的情况</p> <p>2、每个页面都有相应的Title,不能为空,或者显示“无标题页”</p> <p>3、在测试的时候要考虑到页面出现滚动条时,滚动条上下滚动时,页面是否正常</p> <p>4、URL不区分大小写,大小写不敏感</p> <p>5、、对于电子商务网站,当用户并发购买数量大于库存的数量时,系统如何处理</p> <p>6、测试数据避免单纯输入“123”、“abc“之类的,让测试数据尽量接近实际</p> <p>7、进行测试时,尽量不要用超级管理员进行测试,用新建的用户进行测试。测试人员尽量不要使用同一个用户进行测试</p> <p>8、提示信息:提示信息是否完整、正确、详细</p> <p>9、帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细</p> <p>10、可扩展性:是否由升级的余地,是否保留了接口</p> <p>11、稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护</p> <p>12、运行速度:运行的快慢,带宽占用情况</p> <p></p> <p><strong>WEB测试资料</strong></p> <p>1页面部分</p> <p>(1) 页面清单是否完整(是否已经将所需要的页面全部都列出来了)</p> <p>(2) 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)</p> <p>(3) 页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)</p> <p>(4) 页面特殊效果(如特殊字体效果、动画效果)是否显示</p> <p>(5) 页面特殊效果显示是否正确</p> <p></p> <p>2 页面元素部分</p> <p>(1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)</p> <p>(2)素是否显示(元素是否存在)</p> <p>(3)页面元素是否显示正确(主要针对文字、图形、签章)</p> <p>(4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)</p> <p>(5) 页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)</p> <p>(6) 页面元素的容错性列表(如输入框、时间列表或日历)</p> <p>(7) 页面元素的容错性是否存在</p> <p>(8) 页面元素的容错性是否正确</p> <p></p> <p>3 功能部分</p> <p>(1) 数据初始化是否执行</p> <p>(2) 数据初始化是否正确</p> <p>(3) 数据处理功能是否执行</p> <p>(4) 数据处理功能是否正确</p> <p>(5) 数据保存是否执行</p> <p>(6) 数据保存是否正确</p> <p>(7) 是否对其他功能有影响</p> <p>(8) 如果影响其他功能,系统能否作出正确的反应</p> <p>(9) 其他错误</p> <p>(10) 对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况</p> <p>如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试</p> <p>单项功能测试(增加、修改、查询、删除)</p> <p>增加——>增加——>增加 (连续增加测试)</p> <p>增加——>删除</p> <p>增加——>删除——>增加 (新增加的内容与删除内容一致)</p> <p>增加——>修改——>删除</p> <p>修改——>修改——>修改 (连续修改测试)</p> <p>修改——>增加 (新增加的内容与修改前内容一致)</p> <p>修改——>删除</p> <p>修改——>删除——>增加 (新增加的内容与删除内容一致)</p> <p>删除——>删除——>删除 (连续删除测试)</p> <p>(11)查询功能分为两种情况,验证操作结果。</p> <p>1、打开页面时自动显示结果,则不特别强调;</p> <p>2、需要手工操作进行查询,则每次在其他功能完成后进行。</p> <p></p> <p>4 提示信息</p> <p>(1) 成功、失败提示</p> <p>(2) 操作结果提示</p> <p>(3) 确认提示</p> <p>(4) 危险操作、重要操作提示</p> <p>(5) 返回页面 提示后显示的页面</p> <p></p> <p>5 容错性</p> <p>注意以下几种情况</p> <p>(1) 为空、非空</p> <p>(2) 唯一性</p> <p>(3 )字长、格式</p> <p>(4) 数字、邮政编码、金额、电话、电子邮件、ID号、密码</p> <p>(5) 日期、时间</p> <p>(6) 特殊字符 (对数据库)英文单、双引号,&符号</p> <p></p> <p>6 权限部分</p> <p>功能权限: 指定用户可以使用那些功能,不能使用那些功能</p> <p>数据权限: 指定用户可以处理那些数据,不可以处理那些数据。可</p> <p>以合并到功能测试</p> <p>操作权限: 在逻辑关系上,操作前后顺序、数据处理情况。可以合</p> <p>并到功能测试</p> <p>权限变化: 可以合并到功能测试</p> <p>(1) 功能权限是否存在</p> <p>(2 )功能权限是否正确</p> <p>(3) 数据权限是否存在</p> <p>(4) 数据权限是否正确</p> <p>(5)操作权限是否存在</p> <p>(6) 操作权限是否正确</p> <p>(7) 引起权限变化的功能列表</p> <p>(8) 功能权限变化还是数据权限变化,或两者兼有</p> <p>(9) 权限变化是否正确</p> <p></p> <p>7 键盘操作</p> <p>(1) Tab键的使用</p> <p>(2) 上下方向键的使用</p> <p>(3) Enter键的使用</p> <p>(4) 系统设定快捷键的使用(如果设置有快捷键)</p> <p></p> <p>8 测试中还应注意的其他事项</p> <p>(6) 完整性:是否是一个整体,没有功能缺损</p> <p>(7) 易用性:使用是否方便</p> <p>(8) 一致性:类似的问题用类似的方法处理</p> <p>(9) 提示信息:提示信息是否完整、正确、详细</p> <p>(10) 帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细</p> <p>(11) 兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容</p> <p>(12) 可扩展性:是否由升级的余地,是否保留了接口</p> <p>(13) 稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护</p> <p>(14) 运行速度:运行的快慢,带宽占用情况</p> <p></p> <p><strong>输入方面总结:</strong></p> <p>1.验证输入与输出的是否信息一致;</p> <p>  2.输入框之前的标题是否正确;</p> <p>  3.对特殊字符的处理,尤其是输入信息徐需要发送到数据库的。特殊字符包括:'(单引号)、"(双引号)、[](中括号)、()(小括号)、{}(大括号)、;(分号)、<>(大于小于号)……</p> <p>  4.对输入框输入超过限制的字符的处理,一般非特殊的没有作出限制的在255byte左右;</p> <p>  5.输入框本身的大小、长度;</p> <p>  6.不同内码的字符的输入;</p> <p>  7.对空格、TAB字符的处理机制;</p> <p>  8.字符本身显示的颜色;</p> <p>  9.密码输入窗口转换成星号或其它符号;</p> <p>  10.密码输入框对其中的信息进行加密,防止采用破解星号的方法破解;</p> <p>  11.按下ctrl和alt键对输入框的影响;</p> <p>  12.对于新增、修改、注册时用的输入框,有限制的,应该输入时作出提示,指出不允许的或者标出允许的;</p> <p>  13.对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,比如选了湖南就应该列出湖南下面的市,或者选了某些条件之后,一些输入框会关闭或转为只读状态;</p> <p>  14.输入类型;根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否允许输入数字或字母,不允许输入其他字符等。</p> <p>  15.输入长度;数据库字段有长度定义,当输入过长时,提交数据是否会出错。</p> <p>  16.输入状态;当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位作为唯一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,如果可写对其编辑的话,可能会造成数据重复引起冲突等。</p> <p>  暂时,就能想这么多,看大家谁还有观点,互相学习下!</p> <p>  17.如果是会进行数据库操作的输入框,还可以考虑输入SQL中的一些特殊符号如单引号等,有时会有意想不到的错误出现</p> <p>  18.输入类型 输入长度 是否允许复制粘贴 为空的情况 空格的考虑 半角全角测试 对于密码输入框要考虑显示的内容是* 输入错误时的提示信息及提示信息是否准确</p> <p>  19.可以先了解你要测试的输入框在软件系统的某个功能中所扮演的角色,然后了解其具体的输入条件,在将输入条件按照有效等价类,无效等价类,边界值等方法进行测试用例的设计。</p> <p>  20.关键字有大小写混合的情况;</p> <p>  21.关键字中含有一个或多个空格的情况,包括前空格,中间空格(多个关键字),和后空格;</p> <p>  22.关键字中是否支持通配符的情况(视功能而定);</p> <p>  23.关键字的长度分别为9、10、11个字符时的情况;</p> <p>  24.关键字是valid,但是没有匹配搜索结果的情况;</p> <p>  25.输入html的标签会出现哪些问题?输入<html> 会出现什么问题呢?(这条是我自己发现的,在网上也没找到类似的东东,呵呵,大家凑合着看吧)</p> <p><strong>还有几点:</strong></p> <p>1.功能点测试:是否满足需求所要求的功能</p> <p>2.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.</p> <p>3.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.</p> <p>4.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.</p> <p>5.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.</p> <p>6.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.</p> <p>7.界面测试:界面的正确性、一致性、友好性、易用性。</p> <p></p> <p><strong>重点关注:</strong></p> <p>1.易用性检查:确保软件易于理解,方便使用。</p> <p>2.一致性检查:</p> <p>a.注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。</p> <p>b.提示信息的表达方式是否一致。</p> <p>c.按钮排列顺序是否一致。</p> <p>d.back, cancel等按钮跳转页面处理是否一致。</p> <p>e.各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee No和LoginName不一致。</p> <p>3.正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。</p> <p>4.友好性检查:</p> <p>a.提示信息是否友好.</p> <p>b.系统应该在用户执行错误的操作之前提出警告,提示信息.</p> <p>c.页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。</p> <p>5.合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。</p> <p>6.检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。</p> <p>7.页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理。</p> <p><strong>最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!</strong> <strong>希望能帮助到你!<span style="color:#fe2c24;">【100%无套路免费领取】</span></strong></p> <p class="img-center"><img alt="" src="http://img.e-com-net.com/image/info8/c7ad4acbea3e4f11a4bae4e6ab2d4c37.jpg" width="0" height="0"></p> <p class="img-center"><img alt="" src="http://img.e-com-net.com/image/info8/a85aca6562024ee5aa85dd59e53dd7ba.jpg" width="0" height="0"></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1731637361198051328"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(软件测试,程序员,接口测试,自动化测试,web测试,测试工程师)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1942171122967572480.htm" title="Flutter UI 测试" target="_blank">Flutter UI 测试</a> <span class="text-muted">2401_89317650</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a> <div>在Flutter中,UI测试被称作集成测试。Flutter集成测试类似iOS的XCUITest或Android的Expresso一样来执行UI自动化测试。Flutter的集成测试在一个单独的环境运行,可以运行在真实的设备或者模拟器上面。Flutter提供了一个flutter_driver包来编写UI测试。Flutter应用程序的UI测试是如何执行UI测试:FlutterUI测试作为黑盒运行,与主应</div> </li> <li><a href="/article/1942155996537352192.htm" title="高级汇编语言编程技巧与优化" target="_blank">高级汇编语言编程技巧与优化</a> <span class="text-muted">代码世界探索者</span> <a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80%E8%AF%A6%E8%A7%A3/1.htm">汇编语言详解</a><a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96/1.htm">汇编</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>一、宏和宏指令1.宏的基本概念•定义:宏是一种文本替换机制。它允许程序员定义一个宏名,并将一组指令或代码片段与该宏名关联起来。在代码中使用宏名时,汇编器会将其替换为对应的指令或代码片段。2.宏的定义和使用(1)定义宏在汇编语言中,宏的定义通常使用MACRO指令开始,以ENDM指令结束。宏的定义包括宏名和一组指令或代码片段。语法:宏名MACRO参数1,参数2,...指令1指令2...ENDM示例:;</div> </li> <li><a href="/article/1942149316411977728.htm" title="Python高频面试题(四)" target="_blank">Python高频面试题(四)</a> <span class="text-muted">Irene-HQ</span> <a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95/1.htm">测试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a> <div>以下是Python研发和自动化测试面试中‌更高阶的专项考点及典型问题‌一、并发与异步编程(高级)‌GIL全局解释器锁的应对策略‌问题:GIL如何影响Python多线程性能?如何绕过GIL限制?答案:GIL使同一时刻仅一个线程执行字节码,CPU密集型任务性能受限绕过方案:使用多进程(multiprocessing)、C扩展(如Cython)、异步IO(asyncio)‌46‌协程异步调用示例‌问题:</div> </li> <li><a href="/article/1942146545138855936.htm" title="Rust 注释" target="_blank">Rust 注释</a> <span class="text-muted">froginwe11</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Rust注释引言Rust编程语言以其内存安全、并发支持和高性能等特点在软件开发领域获得了广泛的关注。在Rust编程中,注释是一种非常重要的元素,它不仅可以帮助程序员理解代码,还可以提高代码的可维护性和可读性。本文将详细介绍Rust中的注释类型、语法及其应用场景。一、Rust注释类型Rust中的注释主要分为两种类型:单行注释和多行注释。1.单行注释单行注释用于对代码的某一小部分进行简要说明。其语法格</div> </li> <li><a href="/article/1942136457426694144.htm" title="从入门到精通,超详细的程序员Java学习路线指南" target="_blank">从入门到精通,超详细的程序员Java学习路线指南</a> <span class="text-muted">憨小萌</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/1.htm">软件开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>说明最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧。Java学习路线当然,这里我只是说Java学习路线,因为自己就是学Java的,对Java理当很熟悉,对于其它方面,我也不是很了解。基础阶段首先是基础阶段,在基础阶段,我们必须掌握Java基础,Mysql数据库,Oracle数据</div> </li> <li><a href="/article/1942124108825292800.htm" title="普通程序员的“技术债滚雪球”……让我升职后的一件事就是“降本增效”?" target="_blank">普通程序员的“技术债滚雪球”……让我升职后的一件事就是“降本增效”?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%90%8E%E7%AB%AF%E7%A8%8B%E5%BA%8F%E5%91%98%E8%A7%82%E7%82%B9%E5%85%A8%E6%A0%88/1.htm">前端后端程序员观点全栈</a> <div>本文没有技术干货,只有技术人的干巴人生。建议带点冰阔落一起服用。一、从SpringMVC到SpringCloud,人生第一次“技术债滚雪球”我工作的第八年了,回头看自己这一身技艺。最开始是SpringMVC,配置写得像祖传配方,一层包一层。后来接触SpringBoot,像打开了人生外挂,启动速度快到让我以为自己写的服务终于不再有Bug了。再后来,SpringCloud来了。服务拆得比我脑子还碎,配</div> </li> <li><a href="/article/1942121332086992896.htm" title="跨平台ZeroMQ:在Rust中使用zmq库的完整指南" target="_blank">跨平台ZeroMQ:在Rust中使用zmq库的完整指南</a> <span class="text-muted">涵树_fx</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Rust/1.htm">Rust</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98/1.htm">实战</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>“消息就像神经元间的电信号,而ZeroMQ就是那个让系统思考的神经网络”——某个深夜调试zmq的程序员当你需要轻量级、高性能的进程间通信时,ZeroMQ就像代码世界里的瑞士军刀。今天我们一起探索如何在Rust生态中使用这把利器,感受它如何在不同操作系统间架起通信的桥梁。安装ZeroMQ:三大操作系统的通关秘籍Linux(Debian/Ubuntu)sudoaptupdatesudoaptinsta</div> </li> <li><a href="/article/1942110867512422400.htm" title="Requestium - 将Requests和Selenium合并在一起的自动化测试工具" target="_blank">Requestium - 将Requests和Selenium合并在一起的自动化测试工具</a> <span class="text-muted">测试界晓晓</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">功能测试</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a> <div>Requests是Python的第三方库,主要用于发送http请求,常用于接口自动化测试等。Selenium是一个用于Web应用程序的自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。本篇介绍一款将Requests和Selenium结合在一起的自动化测试工具-Requestium简介Requestium是一个Python库,它将Requests、Selenium和P</div> </li> <li><a href="/article/1942109606746583040.htm" title="MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案" target="_blank">MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案</a> <span class="text-muted">龙潜月七</span> <a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a> <div>在自动化测试与网络数据采集场景中,MyChrome.exe与Selenium的联动能发挥强大作用,但二者的UserData目录配置若处理不当,易引发冲突。下面我将重点围绕该问题,详细阐述联动的注意事项。MyChrome.exe与Selenium联动避坑指南:UserData目录冲突解决方案在自动化测试与网络数据采集的领域中,MyChrome.exe与Selenium的组合常常是开发者的得力助手。M</div> </li> <li><a href="/article/1942056896080965632.htm" title="破局·重构·新生:程序员三大黄金赛道突围指南" target="_blank">破局·重构·新生:程序员三大黄金赛道突围指南</a> <span class="text-muted">还债大湿兄</span> <a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>当代码成为新时代的钢筋水泥,35岁不再是职业终点站,而是经验升维的战略转折点。在国产替代浪潮、芯片自主攻坚与工业智能化变革的交汇处,程序员的核心价值正在被重新定义。一、三大赛道:技术国产化的历史性机遇1.国产软件替代化:从“卡脖子”到“强心脏”EDA工业软件的破局之战正成为国产替代的先锋战场。2025年,中国EDA市场规模预计达184.9亿元,年均增速14.71%,但国产化率仍不足10%,研发设计</div> </li> <li><a href="/article/1942029786708766720.htm" title="408考研逐题详解:2010年第18题——CPU寄存器" target="_blank">408考研逐题详解:2010年第18题——CPU寄存器</a> <span class="text-muted"></span> <div>2010年第18题下列寄存器中,汇编语言程序员可见的是()A.存储器地址寄存器(MAR)\qquadB.程序计数器(PC)\qquadC.存储器数据寄存器(MDR)\qquadD.指令寄存器(IR)解析本题考查的是计算机组成原理中关于CPU寄存器的分类及其可见性,特别是汇编语言程序员的视角。存储器地址寄存器(MAR,MemoryAddressRegister):用于存储CPU即将访问的内存地址(如</div> </li> <li><a href="/article/1941967142966587392.htm" title="C++高级编程(7)-- 协程在C++中的应用" target="_blank">C++高级编程(7)-- 协程在C++中的应用</a> <span class="text-muted">给你一颗语法糖</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E9%AB%98%E7%BA%A7%E7%BC%96%E7%A8%8B/1.htm">C++高级编程</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>协程在C++中的应用随着现代编程范式的发展,协程(Coroutines)已经成为了并发编程和异步编程的一个重要工具。在C++中,协程是一种能够被挂起和重新恢复执行的函数,它允许程序员以一种更加直观和简洁的方式来编写异步代码。本篇博客将深入探讨C++中的协程概念、实现原理以及高级应用案例,帮助读者更好地理解和应用这一强大的编程技术。协程基础在C++20标准中,协程是通过关键字co_await,co_</div> </li> <li><a href="/article/1941926557538906112.htm" title="Python+AI十分钟自动生成小说!程序员:这工具让我月入5万+" target="_blank">Python+AI十分钟自动生成小说!程序员:这工具让我月入5万+</a> <span class="text-muted">小筱在线</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>引言:AI写作革命已来,你准备好了吗?2025年的今天,AI写作已经从科幻概念变成了现实生产力。一位名叫李明的程序员在社交媒体上晒出他的收入截图:单月稿费突破5万元,而他的"秘密武器"竟是用Python开发的AI小说生成工具。这不是天方夜谭,而是正在发生的技术革命。随着GPT-4、Claude3等大语言模型的成熟,结合Python强大的自动化能力,任何人都可以在十分钟内生成一部完整的小说初稿。AI</div> </li> <li><a href="/article/1941900849513033728.htm" title="《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教程)" target="_blank">《刚刚问世》系列初窥篇-Java+Playwright自动化测试-7-元素基础定位方式-下篇 (详细教程)</a> <span class="text-muted"></span> <div>1.简介上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的基础定位方式的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下剩下部分的基础定位方式。2.过滤器定位例如以下DOM结构,我们要在其中单击第二个产品卡的购买按钮。我们有几个选项来过滤定位器以获得正确的定位器。2.1按文本过滤定位器可以使用locator.filter()方法按文本进行过滤。它将搜</div> </li> <li><a href="/article/1941872601970307072.htm" title="Java+Python智能化云盘【Day3】" target="_blank">Java+Python智能化云盘【Day3】</a> <span class="text-muted">关沐吖</span> <a class="tag" taget="_blank" href="/search/Java%2BPython/1.htm">Java+Python</a><a class="tag" taget="_blank" href="/search/Ai%E6%99%BA%E8%83%BD%E4%BA%91%E7%9B%98%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E4%B8%93%E6%A0%8F/1.htm">Ai智能云盘项目开发专栏</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>提示词工程Prompt简介:大模型必备Prompt提示词工程讲解什么是PromptEngineering提示词工程通过特定格式的文本输入引导AI模型生成期望输出的技术,明确地告诉模型你想要解决的问题或完成的任务也是大语言模型理解用户需求并生成相关、准确回答或内容的基础类比:给Java程序员的任务需求文档(越清晰明确,结果越符合预期)为什么需要学习?大模型就是你的员工,你可以有多个助手,OpenAI</div> </li> <li><a href="/article/1941861883841671168.htm" title="基于uniapp小程序的诗词学习系统附带文章源码部署视频讲解等" target="_blank">基于uniapp小程序的诗词学习系统附带文章源码部署视频讲解等</a> <span class="text-muted"></span> <div>文章目录前言详细视频演示具体实现截图核心技术介绍小程序框架Uniapp前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言博主介绍:✌CSDN特邀作者、资深全栈开发程序员,曾在互联网大厂担任高级职位、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域毕业项目实战</div> </li> <li><a href="/article/1941859231753891840.htm" title="Java-- 懒汉式--Final关键字--Abstract抽象方法--接口" target="_blank">Java-- 懒汉式--Final关键字--Abstract抽象方法--接口</a> <span class="text-muted">阿亮爱学代码</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/Final%E5%85%B3%E9%94%AE%E5%AD%97/1.htm">Final关键字</a><a class="tag" taget="_blank" href="/search/Abstract%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95/1.htm">Abstract抽象方法</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3/1.htm">接口</a> <div>懒汉式VS饿汉式比较1.二者最主要的区别在于创建对象的时机不同:饿汉式是在类加载就创建了对象实例,而饿汉式是在使用时才创建的。2.饿汉式不存在线程安全问题,懒汉式存在线程安全问题3.饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么懒汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题。Final关键字:1.当不希望类被继承时,可以用final修饰。2.当不希望父类的某</div> </li> <li><a href="/article/1941805357231828992.htm" title="UI自动化-Appium" target="_blank">UI自动化-Appium</a> <span class="text-muted">Oooon_the_way</span> <a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/appium/1.htm">appium</a> <div>前言Appium是一款开源的跨平台移动应用UI自动化测试框架,支持Android、iOS和Windows平台的原生(Native)、混合(Hybrid)及移动Web应用。其核心设计基于WebDriver协议(即SeleniumWebDriver的W3C标准),通过客户端-服务器(C/S)架构(常见面试题)实现多语言支持和高扩展性。一、核心架构与工作原理C/S架构分层客户端(Client):测试脚本</div> </li> <li><a href="/article/1941796780320550912.htm" title="鸿蒙 ArkTS 应用截图全指南:从组件到离屏长图全搞定" target="_blank">鸿蒙 ArkTS 应用截图全指南:从组件到离屏长图全搞定</a> <span class="text-muted">谦和的大熊</span> <a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E5%BC%80%E5%8F%91/1.htm">鸿蒙开发</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a> <div>鸿蒙ArkTS应用截图全指南:从组件到离屏长图全搞定在鸿蒙ArkTS应用开发中,截图并不是个边缘需求,而是有非常多实用场景的关键能力:‍UI自动化测试内容卡片、年度报告生成用户分享长图、社交素材用户反馈、崩溃回溯、复现问题离屏渲染组件进行预览或保存鸿蒙框架提供了强大的截图API,配合封装良好的SnapshotUtil工具类,截图可以变得简单、高效、适配各种业务场景。先看工具类:SnapshotUt</div> </li> <li><a href="/article/1941752647954526208.htm" title="程序员自由职业:在代码与自由之间寻找平衡的艺术" target="_blank">程序员自由职业:在代码与自由之间寻找平衡的艺术</a> <span class="text-muted">qq_41019429</span> <a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a><a class="tag" taget="_blank" href="/search/%E5%88%9B%E4%B8%9A%E5%88%9B%E6%96%B0/1.htm">创业创新</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%88%9B%E5%AF%8C/1.htm">程序员创富</a> <div>——当996成为过去式,如何用技术编织属于自己的职业未来?一、自由职业:程序员的“数字游牧”革命在GitHub开发者调查中,42%的程序员表示未来3年希望成为自由职业者;而在StackOverflow的全球调研里,自由职业者的时薪中位数比全职员工高出28%。这些数据揭示了一个趋势:当传统职场陷入“内卷化”竞争,程序员群体正通过自由职业实现职业价值的重构。自由职业的核心魅力在于:时间主权:告别朝九晚</div> </li> <li><a href="/article/1941735751951642624.htm" title="摸鱼神器分享:3分钟搞定网页自动下滑,效率翻倍还能快乐摸鱼!✨" target="_blank">摸鱼神器分享:3分钟搞定网页自动下滑,效率翻倍还能快乐摸鱼!✨</a> <span class="text-muted">铸剑师欧冶子</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E7%89%9B%E9%A9%AC%E5%85%BB%E6%88%90%E8%AE%A1%E5%88%92/1.htm">电子牛马养成计划</a><a class="tag" taget="_blank" href="/search/%E5%BD%B1%E5%88%80RPA/1.htm">影刀RPA</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/facebook/1.htm">facebook</a><a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%BC%80%E5%8F%91/1.htm">个人开发</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>一、痛点场景:为什么我们需要网页自动化工具?作为一名程序员/数据分析师/运营人员,你是否经常遇到这些令人抓狂的情况?海量数据加载:打开FacebookMessenger等社交平台,上千条消息根本刷不到底!无效操作:按End键只能拉到当前加载处,手动下滑几分钟手都酸了...数据采集困难:想要抓取完整消息记录或页面底部信息,等待时间令人绝望关键词:网页自动化、RPA工具、数据采集、效率提升二、现有解决</div> </li> <li><a href="/article/1941735121350619136.htm" title="干程序员这一行也8年+了,我咋觉得开心越来越难了?" target="_blank">干程序员这一行也8年+了,我咋觉得开心越来越难了?</a> <span class="text-muted">旧曲重听1</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>“在字节的时候,有一次和10几个同事封闭在会议室开发一个大项目,临近项目上线的那几天,几乎都到2、3点才下班。每当0点以后都是大家最累的时候,虽然每个人脸上充满困意和疲惫,但是看着项目逐渐成型,功能越来越完善,每个人依然干劲十足。我们或许都有做大项目的经历,在项目即将完成前,你会叫苦叫累吗?你的目标就在眼前,你做事充满动力,这才是健康的状态。做难而正确的事情,是很爽的。这段经历过去好多年了,说实话</div> </li> <li><a href="/article/1941722881314582528.htm" title="Go CLI工具开发:自动化测试与持续集成方案" target="_blank">Go CLI工具开发:自动化测试与持续集成方案</a> <span class="text-muted">Golang编程笔记</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/ci%2Fcd/1.htm">ci/cd</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a> <div>GoCLI工具开发:自动化测试与持续集成方案关键词:GoCLI、自动化测试、持续集成、GitHubActions、单元测试、集成测试、代码覆盖率摘要:本文将深入探讨如何使用Go语言开发健壮的CLI工具,并为其构建完整的自动化测试和持续集成方案。我们将从基础测试策略开始,逐步深入到复杂的集成测试场景,最后展示如何利用GitHubActions实现自动化构建和部署。通过实际代码示例和最佳实践,帮助开发</div> </li> <li><a href="/article/1941697378423730176.htm" title="C++语言标准" target="_blank">C++语言标准</a> <span class="text-muted">Shy_tom</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>title:C++语言标准description:C++标准C++语言的起源 与C语言一样,C++也是在贝尔实验室诞生的,BjarneStroustrup于20世纪80年代在这里开发出了这种语言。用他自己的话来说,“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或者其他现代高级语言来编程而设计的。它的主要功能是可以更方便地编写出好程序,让每个程序员更加快乐”。C++语言标准 美国国家标准委</div> </li> <li><a href="/article/1941695612965679104.htm" title="动手实践OpenHands系列学习笔记12:测试与质量保证" target="_blank">动手实践OpenHands系列学习笔记12:测试与质量保证</a> <span class="text-muted">JeffWoodNo.1</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>笔记12:测试与质量保证一、引言软件测试和质量保证是确保AI代理系统可靠性和稳定性的关键环节。对于像OpenHands这样的复杂AI系统,测试尤其具有挑战性,因为需要验证系统在各种条件下的行为一致性。本笔记将探讨AI系统测试的独特策略,分析OpenHands的测试需求,并通过实践为关键模块构建测试套件。二、AI系统测试策略理论2.1AI系统测试的特殊挑战不确定性处理:AI系统输出可能存在固有的不确</div> </li> <li><a href="/article/1941638511589388288.htm" title="007__C++的三大特性" target="_blank">007__C++的三大特性</a> <span class="text-muted">Bardb</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>一、C++的三大特性封装、继承、多态封装:即将一个对象的属性和行为封装成类,使其更符合人们对于一件事件的认知,将属于这个对象的所有东西打包在一起。继承:是面向对象编程使代码可以复用的最重要的手段,它可以让程序员在原有类的特性上进行扩展,增加功能,这样产生的类叫做派生类,呈现出面向对象设计的层次结构,由简单的基类到复杂的派生类的这么一个过程。多态:字面意思就是多种形态。指同一个函数作用在不同的对象时</div> </li> <li><a href="/article/1941608136444014592.htm" title="Python-Appium 2.19.0---详细指南:安装Appium" target="_blank">Python-Appium 2.19.0---详细指南:安装Appium</a> <span class="text-muted">渡己(Sorin)</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/appium/1.htm">appium</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>引言最近要写个安卓自动化项目,想用Appium来实现,版本已经来到了2.19.0,搜了一圈,发现文档比较少,至少7年没有用过了,有点陌生,打算重新研究下,写成文章分享给有需要的人。作为最流行的移动端自动化测试框架之一,其2.x版本有许多重要的改进和新特性。这篇文章将详细介绍如何在Windows和macOS系统上安装Appium2.19.0版本,并配置Python环境进行自动化测试开发。第一部分:环</div> </li> <li><a href="/article/1941596287996588032.htm" title="为什么程序员都在悄悄换掉npm?pnpm到底有什么魔力?" target="_blank">为什么程序员都在悄悄换掉npm?pnpm到底有什么魔力?</a> <span class="text-muted"></span> <div>为什么程序员都在悄悄换掉npm?pnpm到底有什么魔力?一、pnpm是谁?包管理界的共享快递柜!想象你住在一个高档小区,每家每户都有独立快递柜。但每次网购,快递员都把包裹塞进你家柜子,结果100栋楼的快递柜里都塞满同一个快递——这就像传统npm/yarn的包管理方式,每个项目都重复下载相同依赖。pnpm就是那个聪明的物业管理员!它建了一个中央共享仓库,所有住户(项目)需要的包裹(依赖包)都存在这里</div> </li> <li><a href="/article/1941569701104644096.htm" title="验证码破解的可能与不可能:用Python处理图片验证码的原理与限制" target="_blank">验证码破解的可能与不可能:用Python处理图片验证码的原理与限制</a> <span class="text-muted">程序员威哥</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前言验证码(CAPTCHA)是当前互联网防护机制中的重要组成部分,用于区分真人与自动程序。近年来,随着自动化技术发展,验证码破解成为自动化测试、爬虫及安全研究领域的热点。然而,从技术层面来看,验证码破解既有可行之处,也存在根本限制。本文将结合Python图像处理与机器学习技术,深度剖析图片验证码破解的原理、实践与瓶颈。一、验证码的分类及破解难点1.验证码类型字符型验证码纯数字、字母或混合,最常见。</div> </li> <li><a href="/article/1941542597398949888.htm" title="AI代码生成与测试体系建设的关键要素" target="_blank">AI代码生成与测试体系建设的关键要素</a> <span class="text-muted"></span> <div>关键词:AI代码生成、自动化测试、软件质量保障、持续集成、智能测试文章目录1.引言:AI编程时代的"双刃剑"2.AI代码生成的核心组件2.1智能代码生成引擎2.2上下文理解与意图识别2.3代码质量评估机制3.测试体系的四大支柱3.1自动化测试生成3.2智能测试用例设计3.3代码覆盖率分析3.4性能与安全测试4.系统架构设计要点4.1整体架构蓝图4.2数据流与处理管道4.3反馈循环机制5.质量保障与</div> </li> <li><a href="/article/8.htm" title="LeetCode[Math] - #66 Plus One" target="_blank">LeetCode[Math] - #66 Plus One</a> <span class="text-muted">Cwind</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a> <div>原题链接:#66 Plus One   要求: 给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。 注意: 1. 数字的较高位存在数组的头上,即num1表示数字1239 2. 每一位(数组中的每个元素)的取值范围为0~9   难度:简单   分析: 题目比较简单,只须从数组</div> </li> <li><a href="/article/135.htm" title="JQuery中$.ajax()方法参数详解" target="_blank">JQuery中$.ajax()方法参数详解</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和    delete也可以使用,但仅部分浏览器支持。 timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局</div> </li> <li><a href="/article/262.htm" title="JConsole & JVisualVM远程监视Webphere服务器JVM" target="_blank">JConsole & JVisualVM远程监视Webphere服务器JVM</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/JVisualVM/1.htm">JVisualVM</a><a class="tag" taget="_blank" href="/search/JConsole/1.htm">JConsole</a><a class="tag" taget="_blank" href="/search/Webphere/1.htm">Webphere</a> <div>    JConsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。我们可以根据这些信息判断程序是否有内存泄漏问题。   使用JConsole工具来分析WAS的JVM问题,需要进行相关的配置。   首先我们看WAS服务器端的配置.   1、登录was控制台https://10.4.119.18</div> </li> <li><a href="/article/389.htm" title="自定义annotation" target="_blank">自定义annotation</a> <span class="text-muted">120153216</span> <a class="tag" taget="_blank" href="/search/annotation/1.htm">annotation</a> <div>Java annotation 自定义注释@interface的用法 一、什么是注释      说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源</div> </li> <li><a href="/article/516.htm" title="CentOS 5/6.X 使用 EPEL YUM源" target="_blank">CentOS 5/6.X 使用 EPEL YUM源</a> <span class="text-muted">2002wmj</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>CentOS 6.X 安装使用EPEL YUM源1. 查看操作系统版本[root@node1 ~]# uname -a Linux node1.test.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [root@node1 ~]#</div> </li> <li><a href="/article/643.htm" title="在SQLSERVER中查找缺失和无用的索引SQL" target="_blank">在SQLSERVER中查找缺失和无用的索引SQL</a> <span class="text-muted">357029540</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>--缺失的索引 SELECT  avg_total_user_cost * avg_user_impact * ( user_scans + user_seeks ) AS PossibleImprovement ,          last_user_seek ,    </div> </li> <li><a href="/article/770.htm" title="Spring3 MVC 笔记(二) —json+rest优化" target="_blank">Spring3 MVC 笔记(二) —json+rest优化</a> <span class="text-muted">7454103</span> <a class="tag" taget="_blank" href="/search/Spring3+MVC/1.htm">Spring3 MVC</a> <div>接上次的 spring mvc 注解的一些详细信息!                          其实也是一些个人的学习笔记  呵呵! </div> </li> <li><a href="/article/897.htm" title="替换“\”的时候报错Unexpected internal error near index 1 \ ^" target="_blank">替换“\”的时候报错Unexpected internal error near index 1 \ ^</a> <span class="text-muted">adminjun</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E2%80%9C%5C%E6%9B%BF%E6%8D%A2%E2%80%9D/1.htm">“\替换”</a> <div>发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘...   在拆分字符串时遇到通过 \ 来拆分,可是用所以想通过转义 \\ 来拆分的时候会报异常   public class Main {          /*</div> </li> <li><a href="/article/1024.htm" title="POJ 1035 Spell checker(哈希表)" target="_blank">POJ 1035 Spell checker(哈希表)</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%9A%B4%E5%8A%9B%E6%B1%82%E8%A7%A3--%E5%93%88%E5%B8%8C%E8%A1%A8/1.htm">暴力求解--哈希表</a> <div>/* 题意:输入字典,然后输入单词,判断字典中是否出现过该单词,或者是否进行删除、添加、替换操作,如果是,则输出对应的字典中的单词 要求按照输入时候的排名输出 题解:建立两个哈希表。一个存储字典和输入字典中单词的排名,一个进行最后输出的判重 */ #include <iostream> //#define using namespace std; const int HASH =</div> </li> <li><a href="/article/1151.htm" title="通过原型实现javascript Array的去重、最大值和最小值" target="_blank">通过原型实现javascript Array的去重、最大值和最小值</a> <span class="text-muted">ayaoxinchao</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/array/1.htm">array</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能。本次主要是实现了Array的去重、获取最大值和最小值。 实现代码如下:   <script type="text/javascript"> Array.prototype.unique = function() { var a = {}; var le</div> </li> <li><a href="/article/1278.htm" title="UIWebView实现https双向认证请求" target="_blank">UIWebView实现https双向认证请求</a> <span class="text-muted">bewithme</span> <a class="tag" taget="_blank" href="/search/UIWebView/1.htm">UIWebView</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a> <div>          什么是HTTPS双向认证我已在先前的博文 ASIHTTPRequest实现https双向认证请求 中有讲述,不理解的读者可以先复习一下。本文是用UIWebView来实现对需要客户端证书验证的服务请求,网上有些文章中有涉及到此内容,但都只言片语,没有讲完全,更没有完整的代码,让人困扰不已。但是此知</div> </li> <li><a href="/article/1405.htm" title="NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)" target="_blank">NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a> <div>3.事务处理         Redis对事务的支持目前不比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中</div> </li> <li><a href="/article/1532.htm" title="各数据库分页sql备忘" target="_blank">各数据库分页sql备忘</a> <span class="text-muted">bingyingao</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a> <div>ORACLE 下面这个效率很低 SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_FS_RETURN order by id desc) A ) WHERE RN <20; 下面这个效率很高 SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_</div> </li> <li><a href="/article/1659.htm" title="【Scala七】Scala核心一:函数" target="_blank">【Scala七】Scala核心一:函数</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>1. 如果函数体只有一行代码,则可以不用写{},比如 def print(x: Int) = println(x) 一行上的多条语句用分号隔开,则只有第一句属于方法体,例如   def printWithValue(x: Int) : String= println(x); "ABC"   上面的代码报错,因为,printWithValue的方法</div> </li> <li><a href="/article/1786.htm" title="了解GHC的factorial编译过程" target="_blank">了解GHC的factorial编译过程</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a> <div>GHC相对其他主流语言的编译器或解释器还是比较复杂的,一部分原因是haskell本身的设计就不易于实现compiler,如lazy特性,static typed,类型推导等。 关于GHC的内部实现有篇文章说的挺好,这里,文中在RTS一节中详细说了haskell的concurrent实现,里面提到了green thread,如果熟悉Go语言的话就会发现,ghc的concurrent实现和Go有点类</div> </li> <li><a href="/article/1913.htm" title="Java-Collections Framework学习与总结-LinkedHashMap" target="_blank">Java-Collections Framework学习与总结-LinkedHashMap</a> <span class="text-muted">BrokenDreams</span> <a class="tag" taget="_blank" href="/search/LinkedHashMap/1.htm">LinkedHashMap</a> <div>        前面总结了java.util.HashMap,了解了其内部由散列表实现,每个桶内是一个单向链表。那有没有双向链表的实现呢?双向链表的实现会具备什么特性呢?来看一下HashMap的一个子类——java.util.LinkedHashMap。       </div> </li> <li><a href="/article/2040.htm" title="读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory" target="_blank">读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/abstract/1.htm">abstract</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ package design.pattern; /* * Abstract Factory Pattern * 抽象工厂模式的目的是: * 通过在抽象工厂里面定义一组产品接口,方便地切换“产品簇” * 这些接口是相关或者相依赖的</div> </li> <li><a href="/article/2167.htm" title="压暗面部高光" target="_blank">压暗面部高光</a> <span class="text-muted">cherishLC</span> <a class="tag" taget="_blank" href="/search/PS/1.htm">PS</a> <div>方法一、压暗高光&重新着色 当皮肤很油又使用闪光灯时,很容易在面部形成高光区域。 下面讲一下我今天处理高光区域的心得: 皮肤可以分为纹理和色彩两个属性。其中纹理主要由亮度通道(Lab模式的L通道)决定,色彩则由a、b通道确定。 处理思路为在保持高光区域纹理的情况下,对高光区域着色。具体步骤为:降低高光区域的整体的亮度,再进行着色。 如果想简化步骤,可以只进行着色(参看下面的步骤1</div> </li> <li><a href="/article/2294.htm" title="Java VisualVM监控远程JVM" target="_blank">Java VisualVM监控远程JVM</a> <span class="text-muted">crabdave</span> <a class="tag" taget="_blank" href="/search/visualvm/1.htm">visualvm</a> <div>Java VisualVM监控远程JVM    JDK1.6开始自带的VisualVM就是不错的监控工具. 这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到界面   通过JMX连接远程机器, 需要经过下面的配置: 1. 修改远程机器JDK配置文件 (我这里远程机器是linux).    </div> </li> <li><a href="/article/2421.htm" title="Saiku去掉登录模块" target="_blank">Saiku去掉登录模块</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/saiku/1.htm">saiku</a><a class="tag" taget="_blank" href="/search/%E7%99%BB%E5%BD%95/1.htm">登录</a><a class="tag" taget="_blank" href="/search/olap/1.htm">olap</a><a class="tag" taget="_blank" href="/search/BI/1.htm">BI</a> <div> 1、修改applicationContext-saiku-webapp.xml <security:intercept-url pattern="/rest/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />  <security:intercept-url pattern=&qu</div> </li> <li><a href="/article/2548.htm" title="浅析 Flex中的Focus" target="_blank">浅析 Flex中的Focus</a> <span class="text-muted">dsjt</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Flex/1.htm">Flex</a><a class="tag" taget="_blank" href="/search/Flash/1.htm">Flash</a> <div>关键字:focus、 setFocus、 IFocusManager、KeyboardEvent 焦点、设置焦点、获得焦点、键盘事件 一、无焦点的困扰——组件监听不到键盘事件 原因:只有获得焦点的组件(确切说是InteractiveObject)才能监听到键盘事件的目标阶段;键盘事件(flash.events.KeyboardEvent)参与冒泡阶段,所以焦点组件的父项(以及它爸</div> </li> <li><a href="/article/2675.htm" title="Yii全局函数使用" target="_blank">Yii全局函数使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。(原文地址) 我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在</div> </li> <li><a href="/article/2802.htm" title="设计模式之单例模式二(解决无序写入的问题)" target="_blank">设计模式之单例模式二(解决无序写入的问题)</a> <span class="text-muted">come_for_dream</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/volatile/1.htm">volatile</a><a class="tag" taget="_blank" href="/search/%E4%B9%B1%E5%BA%8F%E6%89%A7%E8%A1%8C/1.htm">乱序执行</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E9%87%8D%E6%A3%80%E9%AA%8C%E9%94%81/1.htm">双重检验锁</a> <div>                在上篇文章中我们使用了双重检验锁的方式避免懒汉式单例模式下由于多线程造成的实例被多次创建的问题,但是因为由于JVM为了使得处理器内部的运算单元能充分利用,处理器可能会对输入代码进行乱序执行(Out Of Order Execute)优化,处理器会在计算之后将乱序执行的结果进行重组,保证该</div> </li> <li><a href="/article/2929.htm" title="程序员从初级到高级的蜕变" target="_blank">程序员从初级到高级的蜕变</a> <span class="text-muted">gcq511120594</span> <a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>软件开发是一个奇怪的行业,市场远远供不应求。这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈。 我们严重缺乏能够满足需求的人才。这个行业相当年轻。大多数软件项目是失败的。几乎所有的项目都会超出预算。我们解决问题的最佳指导方针可以归结为——“用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效”。 现在我们把淫浸代码时间超过3年的开发人员称为</div> </li> <li><a href="/article/3056.htm" title="Reverse Linked List" target="_blank">Reverse Linked List</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/list/1.htm">list</a> <div>Reverse a singly linked list.   /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ p</div> </li> <li><a href="/article/3183.htm" title="Spring4.1新特性——数据库集成测试" target="_blank">Spring4.1新特性——数据库集成测试</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a> <div>目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC T</div> </li> <li><a href="/article/3310.htm" title="C# Ajax上传图片同时生成微缩图(附Demo)" target="_blank">C# Ajax上传图片同时生成微缩图(附Demo)</a> <span class="text-muted">liyonghui160com</span> <div>    1.Ajax无刷新上传图片,详情请阅我的这篇文章。(jquery + c# ashx)         2.C#位图处理  System.Drawing。         3.最新demo支持IE7,IE8,Fir</div> </li> <li><a href="/article/3437.htm" title="Java list三种遍历方法性能比较" target="_blank">Java list三种遍历方法性能比较</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码例如以下: package com.hisense.tiger.list; import java.util.ArrayList; import java.util.Iterator;</div> </li> <li><a href="/article/3564.htm" title="300个涵盖IT各方面的免费资源(上)——商业与市场篇" target="_blank">300个涵盖IT各方面的免费资源(上)——商业与市场篇</a> <span class="text-muted">shoothao</span> <a class="tag" taget="_blank" href="/search/seo/1.htm">seo</a><a class="tag" taget="_blank" href="/search/%E5%95%86%E4%B8%9A%E4%B8%8E%E5%B8%82%E5%9C%BA/1.htm">商业与市场</a><a class="tag" taget="_blank" href="/search/IT%E8%B5%84%E6%BA%90/1.htm">IT资源</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E8%B5%84%E6%BA%90/1.htm">免费资源</a> <div> A.网站模板+logo+服务器主机+发票生成 HTML5 UP:响应式的HTML5和CSS3网站模板。 Bootswatch:免费的Bootstrap主题。 Templated:收集了845个免费的CSS和HTML5网站模板。 Wordpress.org|Wordpress.com:可免费创建你的新网站。 Strikingly:关注领域中免费无限的移动优</div> </li> <li><a href="/article/3691.htm" title="localStorage、sessionStorage" target="_blank">localStorage、sessionStorage</a> <span class="text-muted">uule</span> <a class="tag" taget="_blank" href="/search/localStorage/1.htm">localStorage</a> <div>W3School 例子   HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储   之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>