EngEdu

EngEdu Video Write-up: Google Test Automation Lightning Talks

Google Test Automation Conference Lightning Talks

Good and excellent short talks from the 2006 conference covering many testing topics. Slides are available.

01:20 Dan North from Thoughtworks on Getting Lean

  • Automated Testing has the secondary effect of enabling two of the Lean Principles: Lean Product Design (maximize discovery by faster releases) and Lean Manufacturing (low variance repeatable testing).
  • Sort of supply chain management because design is just before coding is just before release.
  • Automated Testing allows for frequent shipping of high quality product.

06:00 Steve Freeman JMock I Done By Five Minutes

  • JMock is a library for using mock objects in the test-driven development of Java code.
  • JMock’s types allows IDE to expose just right spots. Good error reporting.

10:50 Nat Pryce, The JMock II update

  • Update is Java 5, JMock library is framework independent
  • Cleaner testing code, better IDE autocomplete
  • New refactoring support

15:01 Christine Newman from Progressive Insurance, Getting More Funding for Automated Testing

  • Quantify the value of automated testing with numbers like “Production Problems Prevented; Risks Mitigated (by severity); or Hours Saved”

18:20 Andrin von Rechenberg, Google Intern, Improving WURFL data

  • Database mobile phone capabilities are hard to test for 8500 user agents.
  • Check your logs to see how they navigate, e.g., to find HTTPS capability

23:30 Ade Oshineye from ThoughtWorks, Five Heresies in Five Minutes

  • Convert your logs of real people into test cases
  • Mutation Testing works (change code, if test passes then test is bad) for high risk, about to be refactored, or bug-prone sections.
  • Run actual tests on production hardware with production systems for new release or when making a dummy is hard.
  • Test your vendor’s code lest their upgrades break you or you are afraid to upgrade.
  • Static analysis works now. Use FindBugs or PyChecker or IntelliJ’s stack analysis server to find bugs people won’t find or broken language idioms.

29:00 Timur Hairullin for Vandex (Russian Search Engine)

  • Had unexplained performance problems on an update.
  • Measure performance from time between first byte of request to something happening inside browser of older computers; not just to server sending last byte of response.

32:00 James Richardson on Automated Testing: Why Bother?

  • How do I quantify Automated Testing? I missed Christine Neuman’s lecture.

34:00 James Lyndsay for Workroom Productions, Automated Tricks for Manual Testors

  • Some tests must be manual and observed by good testers; they look for surprisers and emergent behaviors.
  • Use snippets of code (your manual testers should code and use Unix)
  • Use virtual machine images to hand over bugs.

38:26 Jordon Dea-Mattson, some radiation treatment machine firm

  • Working on client/server in life-critical, highly regulated systems.
  • Most testing strategies have single points of failure; try thinking of testing defense in depth.
  • Collect more data in the (wild) field instead than just crashes.
  • Think of software ERP, integrating the whole requirement to delivery chain.
  • Strong recommendaton for TestQuest; UI testing tool.

42:10 Curtis “Ovid” Poe with the Perl Foundation, TAP

  • TAP (Test Anything Protocol) is a human and machine readable protocol for test output.
  • TAP is simple, line oriented, and implemented in C/Perl/Python/Ruby/JavaScript/PostgresSQL
  • Driven by PerlQA team and a new language agnostic list is forming.

Overall, a great video.

del.icio.us Reddit Slashdot Digg Facebook Technorati Google StumbleUpon Tailrank Yahoo Bloglines Newsvine Spurl Fark

Coding
EngEdu
Reviews
SelfEd
Write-up

Comments (0)

Permalink

EngEdu Video Write-up: “A New Way to Look at Networking”

“A New Way to Look at Networking” by Van Jacobson

This is great video on the history of voice and TCP/IP networking. Van Jacobson shows the telephone network solved the problems of its day and framed out thinking. He then shows how TCP/IP packet switching solved more problems and framed our thinking again. He then suggests we should be thinking about a data centric view of networking, and that our problems warrant another generation of networking. Then the talk falls down.

[00:00]

Van Jacobson’s resume is impressive: he solved many of the Internet congestion problems, worked on the MBONE, wrote early whiteboard software, and generally knows his packets.

[07:00] History of Telecommunications, the Phone System

The telephone system, Ma Bell, emphasized wires and connecting wires to each other. A telephone number is just a program for which wires to connect to build a path, committing each segment before the next segment is parsed. Reliability was enforced by a centralized architecture with extremely reliable components. The pipes were smart because the end points were dumb. This view of the world really did work for phone conversations and got wires pulled everywhere.

[17:20] History of Telecommunications, the Packet Generation

In about 1964, Paul Baran and Don Davies publiched a paper on breaking data into small packets and passing them from link to link in a communications system that could be less than fully interconnected. The paper was denounced by all, and the ARPANet was built anyway. At first, this looked like an inefficient way to use the wires already in place courtesy of the telephone generation. With practice, it proved useful.

[24:53] CateNet and TCP/IP (1971 paper, 1977 demo) improve the Packet Generation

ARPANet worked, and by the early 1970’s there were a dozen incompatible packet switched networks. Vint Cerf and Bob ? from Stanford took the viewpoint that only the endpoints mattered, not the topology of the networks. A common encapsulation and addressing scheme suffice to concatenate networks using the encapsulation and addressing only at thenetwork edges. They demonstrated moving bits from packet radio, through satelites, telephone lines, and other networks. Bits were bits, and reliability *increases* exponentially with system size. No path set-ups, no scheduling issues; just an address.

[31:10] The Success Catastrophe of TCP/IP Packet Generation.

The TCP/IP data model works for conversations between computers and has made a world rich in devices, connections, and information. The challenges of firewalls, VPNs, ad-hoc synchronization, and NATs are symptoms of the success and of changing problems. The Internet is binary; you are connected with a global address that lasts in the minutes or hours or you are not. We now face problems with many machines per devices, and those devices are moving between networks quickly.

[38:25] The Data Generation; a coming generation based on finding and replicating data.

Almost all requests today are for named blocks of data. Downstream switches are often processing many copies of the same video stream. Radio based networks target individual receivers by broadcasting the same data to all and having most ignore it. The TCP/IP protocols are based on one-to-one conversations between computers; we should research fetching and caching data.

New data chunks would include validation hashes, providence hashes, sequence information, and a degree of permanance. Every cachable device would be a vehicle for data.

[44:53] The descent into unorganized ideas.

That said, the talk descends into unorganized ideas. There is a short thought demonstration of fetching the NYTimes headline with validation and providence hashes. There are complaints about lack of multicasting; good things to say about BitTorrent and SnakeBite; ideas of moving QoS to the endpoints and progating back to the core; requests for fast set up times and for alternatives to DSL; wishes to have cached repositories in the local area; instant PKI and webs of trust beating certificate authorities; and a host of complaints about our current infrastructure.

Most of these ideas about data centric networking are not well thought out, which may the point of the talk.

del.icio.us Reddit Slashdot Digg Facebook Technorati Google StumbleUpon Tailrank Yahoo Bloglines Newsvine Spurl Fark

Coding
EngEdu
Reviews
SelfEd
Write-up

Comments (0)

Permalink

EngEdu Video Write-up: “Unit Test Automation for Drupal, Google Summer of Code”

Lightning Talk on my Google Summer of Code by Rok Zendler

Rok Zendler describes his summer internship project:  creating automated unit tests of Drupal. Drupal is a PHP based, LAMP architecture, content manager used by non-profits and various other websites. Rok created a web interface for submitting a patch set to some Drupal project. His system then creates a new Drupal site, applies the submitted patches, runs unit tests, and provides a report. This provides a sanity check to submitted patches.

Rok could be a better speaker, could use fonts that are readable and large, and be a more ambitious.

del.icio.us Reddit Slashdot Digg Facebook Technorati Google StumbleUpon Tailrank Yahoo Bloglines Newsvine Spurl Fark

Coding
EngEdu
Reviews
SelfEd
Write-up

Comments (0)

Permalink

EngEdu Video Write-up: “Advanced Python (or understanding Python)”

 Advanced Python (or Understanding Python) by Thomas Wouters

Thomas Wouters speaks with a great signal to noise ratio. He guides by groking both Python and which bits of Python confuse learners. An advanced programmer will love his short code snippets. An intermediate Python programmer will appreciate the clarity in which he covers topics. A beginner will also appreciate the ‘Understanding Python’ section.

You may want to use this video more as reference than a single experience.

‘Understanding Python’ explains the cohesive and consistent rules covering all the scoping rules, modules, definitions, and object rules. Much of the rest of lecture covers a variety of topics, mostly related to special classes. I find this a good reference lecture to get the two minute overview of a particular topic.

“Get you program, can’t tell your decorator from your generator without a program.”
0:00; ‘Understanding Python’
0:17; Details about object lifecycle and implementation.
0:27, Iterators and Generators.
0:33, Decorators
0:40 Special Class Hooks, including New-style 2.2 classes (0:38); Descriptors (0:40), Properties (0:41), Classmethods, staticmethod (0:43), __slots__ (0:47), __new__ actual constructor (0:48).
0:51 Metaclasses
1:01 Multiple Inheritance
1:05 Unicode

Keep this link in your reference folder.
Have an excellent day! — Charles Merriam

del.icio.us Reddit Slashdot Digg Facebook Technorati Google StumbleUpon Tailrank Yahoo Bloglines Newsvine Spurl Fark

Coding
EngEdu
Reviews
SelfEd
Write-up

Comments (1)

Permalink

EngEdu Video Write-up: “Practical Common Lisp”

Practical Common Lisp by Peter Seibel

Date: May 10, 2006

Overview

  • Good material with mediocre presentation. Seibel seems to hint obliquely at his three major points:
    1. Lisp gives a higher level view of an implementation than Java et al.
    2. Lisp constructs can be made to work in other languages, but verbosely.
    3. The key tool is Macros, which allows programmers to define new syntax to better express the problem.

Details

These are my mostly raw notes from watching the hour long video.

Peter Seibel

  • Pronounced “Sigh-bull”
  • Practical Common Lisp
    • 500 pages long
    • Winner of Jolt Award
    • Aimed at an expert non-LISP programmer
  • Worked at Kenamea, BEA, Organic Online
  • Second generation LISP programmer

Ideas from Peter Naur’s “Programming as Theory Building”

  • View that ‘theory’ is the essence of a program
  • Can only get theory from code without work equivalent to writing it
  • Programming languages allow us to write more concisely

Views from Patterns

  • Software patterns for people writing software
  • Building patterns make some rooms more usable
  • Alexander looked for a generative language
  • Patterns generate forces; a good language could make closure
  • Software patterns are for a particular language sets; others do it automatically.

What’s Natural

  • Language wars are often fought based on what’s natural
  • What’s natural is often confused with what was learned
  • Infix notation is hard to learn, but is ‘natural’ because we learned

Sapir-Whorf hypothesis

  • By Edward Sapir and Benjamin Whorf in 1920’s
  • Suggests the thoughts we think are largely determined by the language we speak
  • Sometimes called Linguistic Determinism
  • Strong Linguistic Determinism is that you can’t think what you can’t say
  • Weak Linguistic Determinism is that what you can say influences what you think
  • Strong LingDet undermined by fact we can translate human languages
  • Weak LingDet supported by colors being easier to remember when named
  • Turning Completeness destroys Strong LingDet for programming languages

Paul Grahm

  • “Beating the Averages” by Paul Grahm
  • The ‘Blub’ paradox of the intermediate powerful programming language
  • Looking at less powerful languages shows what they lack from Blub
  • Looking at more powerful languages looks like Blub plus unknowable gunk
  • If you could think in most powerful language possible, could work in any.

Quotes

  • “Beware of the Turning Tarpit” by Alan Perlis
  • “LISP isn’t a language, its a building material” by Alan Kay
  • “LISP has assisted … in thinking previously impossible thoughts” by Dykstra

Vistor Pattern (Double Dispatch)

  • Often used when traversing a tree of heterogeneous objects
  • Traversal is not the point of the pattern
  • Double-dispatch is point of the pattern.
  • Example: use for pretty printing or compiling a tree of syntax tree
  • Trying to dispatch to a particular function based on two object hierarchies.

Java Vistor Pattern Example

  • Polymorphing is like “Object o; o.display()”
  • Non-polymorphing, or overloading, is like “Object o; ((Book) o).display()”
  • Could write hand-coded dispatching but maintenance nightmare
  • Java cannot direct dispatch correctly a something like DisplayPtr.display(MediaPtr)
  • The DisplayPtr subtype cannot be resolved at compile time, so is Non-polymorphing overloading
  • Pattern concentrates the grunt code in one place and makes it more maintainable.
  • Lisp does this without writing grunt code

Language rants

  • Simula and LISP mixed well made SmallTalk by Alan Kay (Good)
  • SmallTalk (did he mean Simula) and C mixed make C++ (Bad)
  • SmallTalk added message dispatch, now back in CommonLisp
  • Methods no longer are member of classes, so organize them well.

Multiple Dispatch

  • Explained much better in Wikipedia
  • Shows using a pattern in Java that accomplishes the same thing as in Lisp.
  • Key aspect is that same pattern can be implemented, but with easy syntax in Lisp.

Error Handling in General

  • Pre and post condition testing is not sufficient
  • There are ‘actual’ pre/post conditions that cannot be derived from code
  • Formal pre/post conditions are what we can derive from code
  • Actual pre/post conditions are real corner cases, like file gets deleted during run
  • Can open up our expectations and passing error handling upward to a degree.

Error Handling in C, Java, etc

  • C uses a ‘return value’ which is often ignored
  • Java, Python, etc. propagates exceptions so routine must “handle it or fail”
  • Some exceptions need to have decision about how to handle it far up the stack.
  • Making that decision in a Java exception system unwinds the stack too early.

CommonLisp Exceptions

  • Example is pretty badly described. Think “Top level decides if parse problem is fatal or not.”
  • Allows signal of error to be passed up stack independently of unwinding the stack.
  • Can use an ‘restart’ method to keep the original stack
  • Key aspect is that this is a pattern easier in CLOS, but implementable in other languages

* 55 minutes into video
Macros are the most important feature of CLOS

  • The language parser parses into a generic abstract syntax tree
  • You can hook your own code generator into the compiler at any scale or level
  • These macro hooks expand into lots of Lisp code.
  • This allows one to create new syntax and language concepts
  • New, compile-time syntax is often best way to express a problem
  • Making the pattern explicit in a macro avoids making it implicit in code

del.icio.us Reddit Slashdot Digg Facebook Technorati Google StumbleUpon Tailrank Yahoo Bloglines Newsvine Spurl Fark

Coding
EngEdu
Reviews
SelfEd
Write-up

Comments (2)

Permalink