假设您正在处理项目,而时间/金钱预算不允许100%覆盖所有代码/路径.
然后,需要测试代码的一些关键子集.显然,可以使用"肠道检查"方法来测试系统,直觉和手动分析可以产生某种"确定"的测试覆盖范围.
但是,我假设有最佳实践/方法/流程可以识别关键元素达到某个阈值,并让您将测试元素集中在这些块上.
例如,一种用于识别制造中的故障的流行过程是故障模式和效果分析.我正在寻找一个过程来识别软件中的关键测试块.
我正在为一种语言(又名mydsl)开发emacs主要模式.然而,在使用上xahlee的网站的技术似乎并不奏效出于某种原因(可能是较旧的Emacs的话.)
我与战斗的关键问题是:(1)突出的意见不工作,(2),使用regexp-opt线不能正常工作.
我查看了GNU手册和看着CC模式和elisp的模式......这些都是显著更复杂的比我更需要.
;;;Standard # to newline comment
;;;Eventually should also have %% to %% multiline block comments
(defun mydsl-comment-dwim (arg)
"comment or uncomment"
(interactive "*P")
(require 'newcomment)
(let
((deactivate-mark nil)
(comment-start "#")
(comment-end "")
comment-dwim arg)))
(defvar mydsl-events
'("reservedword1"
"reservedword2"))
(defvar mydsl-keywords
'("other-keyword" "another-keyword"))
;;Highlight various elements
(setq mydsl-hilite
'(
; stuff between "
("\"\\.\\*\\?" . font-lock-string-face)
; : , ; { } => @ $ = are all special elements
(":\\|,\\|;\\|{\\|}\\|=>\\|@\\|$\\|=" . font-lock-keyword-face)
( …Run Code Online (Sandbox Code Playgroud) 我正在Python中编写一些序列化/反序列化代码,它将从某些JSON读取/写入继承层次结构.在发送请求之前,不会知道确切的组成.
所以,我认为在优雅的解决方案,以递归内省Python类层次结构来发射,然后在回来的路上了通过树,在Python基本类型安装正确的价值观.
E.g.,
A
|
|\
| \
B C
Run Code Online (Sandbox Code Playgroud)
如果我把我的"内省"常规上B,它应该返回一个包含所有A的变量,他们的价值观,以及B的变量和它们的值的映射的字典.
现在看来,我可以查看B.__slots__或者B.__dict__,但我只能从那里提取B的变量名称.
我如何获得__slots__/ __dict__A的,因为仅有B?(或C).
我知道python并不像C++那样直接支持转换及其后代 -
我最近开始研究一个非常大的C++项目,在完成90%的实现后,确定他们需要在测试期间展示100%的分支覆盖率.该项目托管在一个嵌入式平台(Green Hills Integrity)上.我正在寻找StackOverflow上其他人在类似环境中使用代码覆盖产品的建议和经验.我对这些类型的工具的正面和负面评论感兴趣.
我有一个Common Lisp课程:
(defclass my-cool-class()
((variable1
:initarg :variable1
:accessor variable1
:initform (error "Must supply value to variable1"))
(variable2
:initarg :variable2
:accessor variable2
:initform (error "Must supply value to variable2"))
Run Code Online (Sandbox Code Playgroud)
我想创建一个可以简化这种打字冗余的宏
(defmacro make-slot (slot-name)
`(slot-name
:initarg :,slot-name
:accessor :,slot-name
:initform (error "Must supply value")))
Run Code Online (Sandbox Code Playgroud)
最终我想(defclass my-cool-class()(make-slots'(foo bar baz))并自动将foo,bar和baz作为插槽.
但是,当我去做一个macroexpand-1制作插槽的时候,男孩我怎么会得到读者错误.
第一个是"结肠后非法终止性格......"然后它继续前进.
SBCL 1.0.37.
编辑:示例在系统上语法正确,我在复制之前做了一些编辑.
六个月后 -
(defun build-var (classname var)
(list var
:initform nil
:accessor (intern (concatenate 'string (string classname) "-"
(string var)))
:initarg (intern (string var) :keyword)))
(defun build-varlist (classname …Run Code Online (Sandbox Code Playgroud) 通常在我们的工作中,我们在捕获或匹配操作中使用正则表达式
但是,可以使用正则表达式 - 至少手动 - 来生成与正则表达式匹配的合法句子.当然,一些正则表达式可以匹配无限长的句子,例如表达式.+.
我有一个问题可以通过使用正则表达式句子生成算法来解决.
在伪代码中,它将运行如下:
re = generate("foo(bar|baz)?", max_match = 100); #Don't give me more than 100 results
assert re == ("foobar", "foobaz", "foo");
Run Code Online (Sandbox Code Playgroud)
什么算法会为我执行此操作?
假设我厌倦了一直写"格式t ...",并且想要少点击键.
所以我写这个:
(defun puts (fstring &rest vars)
(format t fstring vars))
(puts "~a ~a" 1 2)
;; error message results, because vars became (1 2)
Run Code Online (Sandbox Code Playgroud)
现在,vars已经转换成我传入的任何参数列表.它需要"扩展"到一个值列表中.
解决此问题的典型解决方案是什么?
分配给$是否可以!在Perl中出错?
例如,
if( ! (-e $inputfile))
{
$! = "Input file $inputfile appears to be non-existent\n";
return undef;
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以处理顶层的所有错误.
谢谢.
common-lisp ×3
lisp ×3
testing ×2
clisp ×1
emacs ×1
embedded ×1
macros ×1
major-mode ×1
mysql ×1
perl ×1
python ×1
reflection ×1
regex ×1
sbcl ×1