jjzjj

[编写优秀Bug报告的艺术及案例分析]

老街老街 2023-10-15 原文

前言

在99年的Quality week上的一次演讲中,微软的一个测试经理,Roger Sherman指出了由于“不可重现”导致bug关闭的主要原因。这是一个非常可惜的情况,因为这样的bug report浪费了紧张的开发计划中的宝贵时间,增加了对产品质量完全是无关紧要的事情,同时导致了在开发人员和测试之间的挫败感和差的感觉。有时,bug report是由于短暂的或随机的事件,测试和开发之间不一致的工具和配置,或者在测试的环境下对正确的行为的模糊定义而产生的,但是许多的由于不可重现而被关闭的测试报告是因为描述不清晰,被误解,或者只是文字的错误。

幸运的是,我学习到一些能够引起管理层注意,更清楚的和开发人员沟通并得到修复的编写优秀bug report的诀窍。这些技巧不仅仅提供了是在被修复的问题的比例方面得到了可靠的回报,而且在同开发人员和管理层的通过中也得到了回报。在我管理的项目中使用这种方法编写bug report,8份bug report中大约只有一个没有被修复。

这篇文章的思想只有当你的报告针对的测试执行过程是专业的质量工作才可以发挥作用。聪明地执行完整的测试包是产生可靠的测试状况信息的基础的其中一个因素。在许多的测试文献中广泛地介绍了多种多样的关于如何构建这样的测试包的方法。选择和你质量风险管理需求相一致的技术并且使之适应你的具体情况,敏捷地监督已计划的测试的执行过程,这样你就可以拥有可靠的测试执行过程。

另外一个关键的因素-bug report,却没有得到太多的关注。这是非常令人遗憾的,因为优秀的bug report对反映测试小组真实的和可理解的工作质量同测试本身一样都是非常重要的。试想一下:如果你不能用开发人员能够理解的术语和能够用于调试的方法给开发人员解释一个错误,他怎么能够修复问题呢?如果你不能够在bug report中提出象“保险杆标签”(bumper sticker)一样的错误总结来引起管理层的注意,你又如何让他们关心你们发现的问题呢?

Bug report的核心是对错误的描述。表格1中是一个关于好和差的错误描述的例子。编写好的bug report是一种好的艺术形式。采用以下的10条技巧可以帮助你的小组提高编写bug report的质量:

  1. 组织Structure:测试人员应该采用深思熟虑的,小心谨慎的方法执行测试,并且做详尽的记录。这样可以促使他们对测试下的系统有很好的认识。当错误发生的时候,一个有组织的测试人员能够知道最早出现问题的地方。

  2. 重现Reproduce:测试人员在编写bug report之前必须在检查问题是否可重现。如果错误不可再重现,仍然应该写下来,但是必须说明问题的偶然性。一个好的处理原则就是在编写bug report之前反复尝试3次。

  3. 隔离Isolate:在尝试编写bug report之前,必须试着隔离错误。可以采用改变一些变量的方法,如系统的配置,它可能可以改变错误的症状。这些信息可以为开发人员着手调试提供思路。

  4. 归纳Generalize:在测试人员发现了一个已隔离的,可重现的问题后,应该对问题进行归纳。同一个问题是否出现在其他的模块或其他的地方?同一个故障是否有更加严重的问题?

  5. 对比Compare:如果测试人员以前曾经验证过现在出错的测试用例,那么他就应该检查以前的测试结果以检查相同的条件是否通过以前的测试。如果是的话,那么这个问题就象是一个回归的错误。注意由于同一测试条件有可能出现在多个测试用例中,这个步骤就不仅仅只是检查一个测试用例在以前的多个结果。

  6. 总结Summarize:在bug report的第一行写上错误的总结是非常关键的。测试人员要花些时间思考已发现的错误对客户有何影响。这不仅仅要求测试人员编写的报告要能够吸引读者,使和管理层的沟通清晰,还要能够帮助设置错误修复的优先级别。

  7. 精简Condense:在bug report的初稿完成后,测试人员应该反复阅读它,集中剔除那些没有关系的步骤或词语。隐含的或模糊的说明和那些由于对没有任何关系的细节或者那些在重现错误过程中不需要的步骤而消磨报告欢迎程度的无穷唠叨都不是bug report的目标。

  8. 消除歧义Disambiguate:测试人员在精简空话的同时或其之后随即应该再仔细检查报告是否有会产生误解的地方。测试人员应该尽量避免使用模糊的,会产生歧义的和主观的词语。目标是使用能够表述事实,清楚的,不会产生争执的词语。

  9. 中立Neutralize:如文中所述,作为坏消息的传递人,和善地提交消息是一个挑战。如同所有的错误总结一样,独立的bug report在措辞方面应该保持公正。攻击开发人员,指责潜在的错误,企图诙谐或使用挖苦将引起开发人员的憎恶,并且使注意力从“提高产品质量”这个大的目标上转移开了。谨慎的测试人员只用Bug report来描述事实。

  10. 检查Review:一旦测试人员感觉bug report是他能够编写的最好版本,他应该将报告再给一个或多个同行进行检查。他的同事们也应该给出一些建议,为了澄清问题不断地提问,如果适当的话,甚至可以挑战“错误成灾”的结论。在允许的时间里,测试小组应该尽可能提交最好的bug report。

以上10条技巧可以帮助你和你的小组提交准确简洁的,彻底校订的,精心构思的,高质量的技术文档。测试小组应该集中编写bug report的任务,测试组长和经理应该让测试组成员清楚地认识到编写优秀的bug report是一项首要的工作任务。衡量优秀的bug report的质量指标应该包括如下:

o 对管理层来说,是清晰明了的,特别是在概要这一级;

o 对于开发部门是有用的,主要是给出能够让开发人员高效地调试问题的相关信息

o 可以很快的将bug从“Opened”状态转变成“Closed”状态,减少为得到更多的信息从开发人员打回的差的bug report并导致测试人员返工的时间。

改进bug报告的流程是需要花费一些时间的,但是也给予了效果显著的回报。首先,简单的流程改进了测试小组和高层、平行管理层之间的沟通,增强小组的信任度,名望和鼓励管理层给测试投资更多的资源。第二,平稳地递交报告给开发人员促进了测试和开发人员之间积极的关系。第三,更短的bug生命周期是更加有效的,在时间上之前花费在编写优秀bug report上的时间和后期由于返工差的bug report花费的时间相抵消。这些回报帮助开发流程通过有效的沟通和高效率的流程获得更好的产品质量。

|

Good

|

Bad

|
|

<u>概要(Summary)</u>

Arial, Wingdings和 Symbol字体破坏了新文件。

<u>重现问题的步骤(Steps to Reproduce)</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中4行文字,点击字体的下拉菜单,选择Arial.

4. 所有的文字转变成了控制字符,数字和其他一些二进制的数据.

5. 尝试了3次,每次都可以重现这个问题。

<u>隔离(Isolation)</u>

这个问题是新出现在build 1.1.018;相同的测试用例是在builds 1.1.007 (System Test entry) 和 1.1.017中通过测试的.

使用Wingdings和Symbol字体也可以重现这个问题,但Times-Roman, Courier New和Webdings字体都没有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下,在Solaris, Mac或其它地Windows平台下不出现这个问题。

|

在格式一些文字成Arial字体时,我创建的新文件中所有的内容被毁坏了。

|

Table1

案例分析:SpeedyWriter

SpeedyWriter --

· 用Java开发的字处理器(word processor)

· 支持常见的字处理器功能

· 在案例分析中,用“italics”字体突出显示内容的描述上有差异

步骤1、组织Structure

· 采用深思熟虑的,仔细的方法进行测试

· 遵循编写好的或者运行由编写好的和标准化的流程自动化的测试用例

· 做仔细的记录

步骤2、重现Reproduce

|

Good

|

Bad

|
|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2. 然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

|

在格式一些文字成Arial字体时,讨厌的bug捣毁了我创建的新文件中所有的内容,浪费了我的时间。

|

步骤3、隔离Isolate

|

Better

|

Good

|
|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下。

|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2. 然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

这个问题在Solaris下没有出现。

|

步骤4、归纳Generalize

|

Better

|

Good

|
|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下。

|

步骤5、对比Compare

|

Better

|

Good

|
|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试.

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

步骤6、总结Summarize

|

Better

|

Good

|
|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

步骤7、精简Condense

|

Better

|

Good

|
|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中文字,点击字体的下拉菜单,选择Arial.

4. 这个讨厌的bug捣毁了所有的文字,变成了一些毫无意义的垃圾,浪费了用户的时间.

5. 尝试了3次,每次都可以重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下。

|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 我打开 SpeedyWriter编辑器, 接着创建了一个文件。

2.然后我输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”, 每次采用bold, italic, strikethrough, 和underline不同的效果。

3. 我选中了文字,点击字体的下拉菜单,选择Arial。

4. 这个讨厌的bug把所有的文字变成了毫无意义的垃圾,浪费了用户的时间。

5. 我尝试了3次,每次都能够重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。我保存此文件再关闭它,然后再重新打开,这个错误还是存在。

如果在未将文字变成“Arial”之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下。

|

步骤8、消除歧义Disambiguate

|

Better

|

Good

|
|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中4行文字,点击字体的下拉菜单,选择Arial.

4. 这个讨厌的bug捣毁了所有的文字,变成了一些毫无意义的垃圾,包括控制字符,数字和其他一些二进制的垃圾数据,浪费了用户的时间.

5. 尝试了3次,每次都可以重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

相同地步骤下,Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下,在Solaris, Mac或其它地Windows平台下不出现这个问题。

|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中文字,点击字体的下拉菜单,选择Arial.

4. 这个讨厌的bug捣毁了所有的文字,变成了一些毫无意义的垃圾,浪费了用户的时间.

5. 尝试了3次,每次都可以重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下。

|

步骤9、中立Neutralize

|

Better

|

Good

|
|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中4行文字,点击字体的下拉菜单,选择Arial.

4. 所有的文字转变成控制字符,数字和其他一些二进制的数据.

5. 尝试了3次,每次都可以重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

相同地步骤下,Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,不会产生这个错误。

这个错误只出现在Windows98平台下,在Solaris, Mac或其它地Windows平台下不出现这个问题。

|

概要

Arial, Wingdings和 Symbol字体破坏了新文件

· <u>重现问题的步骤:</u>

1. 启动SpeedyWriter编辑器, 接着创建了一个文件.

2. 输入了4行文字, 每次重复输入“The quick fox jumps over the lazy brown dog”,

3. 选中4行文字,点击字体的下拉菜单,选择Arial.

4. 这个讨厌的bug捣毁了所有的文字,变成了一些毫无意义的垃圾,包括控制字符,数字和其他一些二进制的垃圾数据,浪费了用户的时间.

5. 尝试了3次,每次都可以重现这个问题。

隔离

这个问题是新出现在build 1.1.018的;相同的测试用例在builds 1.1.007 (System Test entry) 和 1.1.017中通过了测试。

相同地步骤下,Wingdings和Symbol字体同样也有这个问题。

基于模糊的猜测,这个可能只是一个关于格式化的问题。保存此文件再关闭它,然后再打开文件,这个错误还是存在。

在转换字体之前保存文件,将不会产生这个错误。

在已经存在的文件里,是不会产生这个错误。

这个错误只出现在Windows98平台下,在Solaris, Mac或其它地Windows平台下不出现这个问题。

|

步骤10、检查Review

有关[编写优秀Bug报告的艺术及案例分析]的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  4. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  5. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  6. ruby-on-rails - 如何为空白字段编写 rspec? [Rails3.1] - 2

    我使用rails3.1+rspec和factorygirl。我对必填字段(validates_presence_of)的验证工作正常。我如何让测试将该事实用作“成功”而不是“失败”规范是:describe"Addanindustrywithnoname"docontext"Unabletocreatearecordwhenthenameisblank"dosubjectdoind=Factory.create(:industry_name_blank)endit{shouldbe_invalid}endend但是我失败了:Failures:1)Addanindustrywithnona

  7. ruby-on-rails - 尝试为 Rails 中的用户名验证编写 REGEX - 2

    我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z

  8. ruby-on-rails - 如何编写跨模型、 Controller 和 View 的 Rails mixin - 2

    为了减少我的小Rails应用程序中的代码重复,我一直致力于将我的模型之间的通用代码放入它自己的单独模块中,到目前为止一切顺利。模型的东西相当简单,我只需要在开头包含模块,例如:classIso这工作正常,但是现在,我将有一些Controller和View代码,这些代码也将在这些模型之间通用,到目前为止,我有这个用于我的可发送内容:#Thisisamodulethatisusedforpages/formsthatarecanbe"sent"#eitherviafax,email,orprinted.moduleSendablemoduleModeldefself.included(kl

  9. ruby - 在不添加 "end"的情况下编写 Ruby 的任何方法? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。Ruby是一种美丽的语言,但有一个我讨厌写很多次的关键词“结束”。有什么方法可以写出简洁的代码而不用每次都写“end”吗?

  10. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

随机推荐