惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Webroot Blog
Webroot Blog
AI
AI
P
Palo Alto Networks Blog
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tor Project blog
罗磊的独立博客
小众软件
小众软件
S
Security Affairs
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
NISL@THU
NISL@THU
博客园_首页
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
A
About on SuperTechFans
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
G
GRAHAM CLULEY
雷峰网
雷峰网
F
Full Disclosure
I
Intezer
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
U
Unit 42

fantasai: Weblog

Change of Affiliation Thoughts on the W3C’s May 2020 Advisory Board Election fantasai 69: Process 2020 Revision Thoughts on the W3C’s May 2019 Advisory Board Election Running for the W3C Advisory Board Designing CSS Thoughts on the May 2018 W3C Advisory Board Election Environmental Sustainability Recommendations for Mountain View Buildings fantasai 63: The Way of Music fantasai 62: How To Wash Dishes Open Letter on the Iran Nuclear Deal Recipe for a Minimum Viable Kitchen Creating a Paid Contributor Agreement for Mozilla On Brendan Eich and the Separation of Concerns fantasai 57: 2012 TAG Election Endorsements fantasai 56: Approaching UTR50 Evolution of CSS Layout Job Description of a Standards Engineer fantasai 52: about:csswg fantasai 53: W3C Process Holes fantasai 51: about:fantasai fantasai 50: Hiatus E Pluribus Unum Towards a Unified Ruby Model Creating the Future of CSS Testing (2011 Edition) Creating the Future of CSS Testing (2009 Edition) Introducing Brad Kemper, CSSWG Invited Expert fantasai 44: Layout Is Expensive CSS Working Group Charter 2008 fantasai 42: Riddle of the Universe Pulling Back the Curtain: Opening Up the CSS Working Group What is the CSS Working Group doing? The True Story of mpt and fantasai fantasai 38: Long Vacation fantasai 37: CSS3 Text Evolutions fantasai 36: What is Mozilla? fantasai 34: Empty fantasai 33: When to use PDF fantasai 32: Revised CSS3 Text fantasai 31: The Art of Semantics fantasai 30: Travel Notes fantasai 29: Filibuster Frist fantasai 28: UTN 22 fantasai 27: SSSS fantasai 26: CSS and Multi-Script Text fantasai 25: Free As in Freedom fantasai 24: The Law of Hospitality fantasai 23: Organizing the Documentation Effort fantasai 22: Yom Kippur fantasai 21: Firefox and Switching Styles Link Types for RSS and Atom Feeds fantasai 19: An Absence of Aesthetics Sitting on the Outside, Looking Up fantasai 17: A Touch of Class fantasai 16: Task Force fantasai 15: W3 fantasai 13: A Stitch in Time fantasai 11: What Is Love Content and Hype (English Composition for Marketers) fantasai 10: Reviewer at Small fantasai 09: Losing it fantasai 08: Personality Type fantasai 07: Happiness fantasai 06: Moving fantasai 05: Black Tuesday fantasai 03: Words of Wisdom fantasai 02: Big and Small fantasai 01: Why validate your pages? fantasai 00: Experiment
CSS2.1 and the Case for Collaborative Testing
2009-12-11 · via fantasai: Weblog

2009-11/12

A Belorussian translation of this article is provided by Patric Conrad.

Imagine: A world where CSS support across browsers creates a stable, consistent platform for web design. A world in which you can develop in one browser and reasonably expect your design to reproduce truly in all other browsers running with your system settings. A world where every new release of a feature matches the spec precisely and is compatible with all other existing implementations.

Our access to this world is interoperability testing. With a solid spec foundation for the CSS standards, a comprehensive test suite to measure it, and most of all, true collaboration among browser developers and web designers to create it, we can make the CSS specs and test suites a powerful tool in improving the interoperability of layout engines and web sites everywhere.

My goal in this article is to give some background on the roles CSS2.1 and its test suite play on the Web, and why those roles are important. Then I want to show how powerful and useful a CSS2.1 test suite could be for the Web if we took on the challenge of making it a valuable resource for implementors and web authors as well as for the W3C.

What is a standard?

To quote the British Standards Institution:

A standard is an agreed, repeatable way of doing something. It is a published document that contains a technical specification or other precise criteria designed to be used consistently as a rule, guideline, or definition. Standards help to make life simpler and to increase the reliability and the effectiveness of many goods and services we use. Standards are created by bringing together the experience and expertise of all interested parties such as the producers, sellers, buyers, users and regulators of a particular material, product, process or service.

At W3C, a "Recommendation" is a completed standard. Its goal is to state the precise criteria that define an agreed, repeatable way of doing something—in our case, processing a particular web technology like CSS.

What is interoperability?

The IEEE defines interoperability as the ability of two or more systems or components to exchange information and to use the information that has been exchanged. At W3C it means that when two or more systems are given the same input (e.g. HTML+CSS source code) under the same conditions (e.g. screen res, color depth, font availability, and viewport size), they produce the same output.

Interoperability among CSS implementations is the Holy Grail of CSS2.1. It means the ability to test your web design in one browser on your system, and automatically get the same result in all the other browsers on your system. This is worth pursuing.

The W3C REC Track Process

In the early days of the World Wide Web Consortium, a spec in the Working Draft stage became a full-fledged Recommendation simply after passing the Last Call for Comments gauntlet. Specs are like software, however: you don't notice all the bugs until you start trying to use them. It became clear that W3C specs needed a testing phase to prove that they were interoperably implementable. Thus the Candidate Recommendation phase was created.

To become a full W3C Recommendation, a Candidate Recommendation must prove itself by passing a series of tests: two independent implementations must pass a test for every testable assertion in the spec. In other words, the Working Group must prove that every thing their spec says the browser must do could be programmed correctly by two independent software teams. If the spec is self-contradicting, lacks enough detail, or requires Web-incompatible behavior that the implementors refuse to implement, it won't pass the Candidate Recommendation phase.

What is CSS2.1?

CSS2.1 is the CSS Working Group's attempt to put CSS2 and CSS1 through the Candidate Recommendation phase, correcting it in response to experience actually using the spec. The process has uncovered hundreds of problems in the original Recommendations. In a real sense, even though CSS2 is a Recommendation and CSS2.1 is only a Candidate Recommendation, CSS2.1 is a far more mature specification.

CSS2.1 is important to the Web because it defines the foundation of CSS as a technology. Every CSS3 module builds on top of the definitions in CSS2.1: CSS as a whole is dependent on CSS2.1 as a platform. Instability in this platform could be simply a spec issue, but more often it shows up as rendering inconsistencies across browsers.

What's the difference between a Test Suite and an Acid Test?

An acid test like Acid 1 and Acid 2 is designed to highlight a few major errors and key missing features in a single, intensely complex test page. It's not a very comprehensive test of the technology, but often triggers focus on areas that have been poorly implemented in the past.

A test suite on the other hand, is intended to be a comprehensive battery of tests for every aspect of the specification. Since CSS combinations are infinite, a CSS test suite can never be 100% complete. But it can set a baseline for support across all of the specification's features, and ideally that baseline includes all of the common cases that authors would need to rely on.

Why build a CSS2.1 test suite at W3C?

Well, the simple answer is that building a test suite at W3C allows the completion of CSS2.1's candidacy stage. Microsoft by itself could probably put together a test suite and implementation reports that are just enough to complete the W3C requirements. But to actually build a test suite that is intrinsically useful to the entire Web community takes collaboration, not just contribution.

Besides allowing the completion of CSS2.1's candidacy stage, building a test suite through collaboration at W3C can provide:

  • A standard way to measure CSS2.1 support across implementations. No more vague claims of CSS2.1 support: we can measure conformance against the test suite as an agreed-upon yardstick. With adequate tools for reporting results, the CSS2.1 test suite can become a game for implementors to compete in.
  • A central repository to house tests. There are many tests on sites scattered throughout the Web. A W3C test suite provides a well-known place to collect them so that they can all be found in one shot and run on a common testing platform.
  • Wide review of tests for correctness. Currently each browser team must rely on its own internal experts to evaluate bug reports and their testcases against the spec. Submitting tests through W3C does not replace that process, but because the tests are shared with other browser teams and CSS authors and experts, they are exposed to a much wider review. Team-internal assumptions can be noticed and corrected much earlier in the implementation process if the team publishes its tests for public review rather than waiting for people to notice bugs after a release.
  • Better communication on bugs between authors and implementors. The CSS authoring community can submit tests demonstrating CSS bugs for inclusion in the test suite, and these tests are then automatically on the radar for all CSS implementations. On the flip side, implementors' pass/fail reports can communicate to authors which features are well-implemented and which are still a little shaky (and under exactly which conditions they're shaky).
  • Broader and deeper coverage of the technology. Different testers focus on different things, and approach testing in different ways. By combining multiple test collections into a single pool, we get a test suite with more comprehensive coverage.
  • Reduced duplication of effort. By collaborating on a common test suite instead of each creating their own, implementors get a better test suite with less effort. This means they can spend those saved resources on improving their implementation and thus the state of CSS support on the Web.

Testing at W3C is an opportunity to create more interoperability and better communication throughout the web community, and collaborating on test suites can make them more powerful and useful to everyone, authors and implementors alike. By taking full advantage of the opportunity, we can build the test suites at W3C into a fundamental tool for improving CSS as a technology and the Web as a platform.

Interested? Next up, I'm going to report the current status of our testing infrastructure, outline a plan for the future of CSS testing, and explain what's missing to get us there.